作者:HuanGMz
知道创宇实验室时间:年10月30日前言
.NET相关漏洞中,ViewState也算是一个常客了。ExchangeCVE--,SharePointCVE--中都出现过ViewState的身影。其实ViewState并不算漏洞,只是ASP.NET在生成和解析ViewState时使用ObjectStateFormatter进行序列化和反序列化,虽然在序列化后又进行了加密和签名,但是一旦泄露了加密和签名所使用的算法和密钥,我们就可以将ObjectStateFormatter的反序列化payload伪装成正常的ViewState,并触发ObjectStateFormatter的反序列化漏洞。加密和签名序列化数据所用的算法和密钥存放在web.confg中,Exchange是由于所有安装采用相同的默认密钥,而Sharepoitn则是因为泄露web.confg。.NET反序列化神器ysoserial.net中有关于ViewState的插件,其主要作用就是利用泄露的算法和密钥伪造ViewState的加密和签名,触发ObjectStateFormatter反序列化漏洞。但是我们不应该仅仅满足于工具的使用,所以特意分析了ViewState的加密和签名过程作成此文,把工具用的明明白白的。初接触.NET,文中谬误纰漏之处在所难免,如蒙指教不胜感激。1.调试.NetFrameWork
1.1.Net源码
对于刚接触.Net反序列化,甚至刚接触C#的朋友来说,有一个舒适方便的调试环境实在是太重要了。这里就简单介绍一下如何进行.netframework的底层调试。.NetFramework已经被微软开源(