在.NET反序列化漏洞审计与利用过程中,攻击者通过 BinaryFormatter
类型进行 payload 加载与执行。本文将从 GZip 技术基础出发,逐步分析如何结合 BinaryFormatter 触发反序列化漏洞,并介绍审计过程中常见的绕过点。
在 .NET 中,GZipStream
类位于 System.IO.Compression
命名空间下,它提供了对 GZip 格式的压缩与解压支持。常用于对数据进行空间优化存储或传输,数据压缩的基本用法代码如下所示。
byte[] rawData = Encoding.UTF8.GetBytes("Hello, world!");using(var ms =newMemoryStream()){using(var gzip =newGZipStream(ms, CompressionMode.Compress)){ gzip.Write(rawData,0, rawData.Length);}byte[] compressed = ms.ToArray();}
反之,数据解压的基本用法代码如下所示。
using(var compressedStream =newMemoryStream(compressed))using(var gzip =newGZipStream(compressedStream, CompressionMode.Decompress))using(var decompressed =newMemoryStream()){ gzip.CopyTo(decompressed);byte[] result = decompressed.ToArray();}
BinaryFormatter 是 .NET 中的二进制序列化类,将任意
[Serializable]
标记的对象进行序列化与反序列化,包括复杂对象图。
BinaryFormatter bf =newBinaryFormatter();object obj = bf.Deserialize(stream);
BinaryFormatter 是.NET中最典型的高危反序列化接口之一。只要攻击者能够控制输入的序列化流内容,即可构造触发器(Gadget),造成远程代码执行、任意文件读写、命令注入等攻击。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...