0x00序言 LosFormatter通常还用以序列化和反序列化web窗体页面的视图状态(ViewState)。如果要通过数据库查询或其他耐受性设备维护管理ViewState,则需要使用特定的LosFormatter类来序列化/反序列化。它装包在System.web.dll中,坐落于命名空间System.web.miui下。
微软公司的官方规范是有限对象序列化(LOS)文件格式针对高度简单化的ASCII文件格式进行了序列化。
此类支持序列化。任何对象图。但是,使用没受信赖的二进制文件的反序列化可致反序列化系统漏洞和远程RCE进攻。
在文中中,创作者从原理和编码财务审计的视角介绍和重现。
0x01 LosFormatter序列化 LosFormatter类通常用以序列化ViewState页面的视图状态。
请参阅以下实例以说明问题。首先定义TestClass对象。
定义了三个组员,并起动静态方法ClassMethod。序列化通过创建对象案例为组员分派值
使用Serialize的序列化文件内容是Base64编号的。
0x02 LosFormatter反序列化 2.2,反序列化使用方法 反编码序列过程是将Base64编码数据变换为对象,并通过建立新对象来启用Deserialize方法。定义如下:
创作者通过建立新对象启用Deserialize方法实现的特定实现编码可以参照以下几点。
反序列化TestClass类的组员名字的值。
进攻向量 - ActivitySurrogateSelector 由于先前已经介绍了系统漏洞的原则,因此文中不再沉余。对于那些没有看了它的人,请参照《.NET高級编码财务审计(第八课) SoapFormatter反序列化系统漏洞》。区别在于序列化数据由LosFormatter类使用。它也可以通过重写ISerializationSurrogate来启用。定义编码以获得序列化数据
默认设置情况下,可以通过反序列化LosFormatter类的Loserialize方法来成功开启科学计算器。
2.2,进攻向量 - PSObject 由于创作者的Windows服务器已被CVE-2017-8565(Windows PowerShell远程实行编码系统漏洞)修复,因此使用失败,因此我不想再此深层次探讨。有兴趣爱好的朋友可以自己研究一下。有关该傻瓜包的其他信息,请参阅: htpp://support.microsoft.Com/es-us/help/4025872/windows-powershell-remote-code-execution-vulnerability 2.6,进攻向量 - MulticastDelegate 由于之前已经介绍过系统漏洞的原理,文中不再沉余,请参照《.NET高級编码财务审计(第七课)NetDataContractSerializer反序列化系统漏洞》 0x03编码财务审计透视图 3.2,反序列化 从编码财务审计的视角,找到系统漏洞的EntryPoint。反序列化有两个重载来分别反序列化Stream和字符串数据。该字符串可以是文本文档中的初始Raw或Base64字符串。反序列化可以成功。
这不是安全的编码:
网络攻击只需控制传到的字符串主要参数Content即可轻松实现反序列化系统漏洞进攻。详细的Poc如下
最后另附动态图像效果
引言 在实际开发设计中,LosFormatter 通常用以处理ViewState状态视图。与ObjectStateFormatter一样,在反序列化二进制文件时要注意数据本身的安全系数。不然,将发生反序列化系统漏洞。最后,NET反序列化系列将同歩到htpp://github.Com/Ivan1ee/ htpp://ivan1ee.gitbook.io/ 并且可以在创作者的github上找到更多.NET安全系数和提示。