魔兽世界官网,.NET高档代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空

admin 4个月前 ( 04-18 02:16 ) 0条评论
摘要: .NET高级代码审计(第九课) BinaryFormatter反序列化漏洞...

一、前语

Bin魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空aryFormatter和SoapFormatter两个类之间的差异在于数据流高中生的监护人老公的格局不同,其他的功能上两者差不多,BinaryFormatter坐落命名空间 System.Runt少女映画在线ime.Serialization.Formatters.Binary它是直接用二进制办法把目标进行序列化,长处是速度较快,在不同版别的.NET渠道里都能够兼容。可是运用反序列化不受信赖的二进制文件会导致反序列化缝隙从95105856而完成长途RCE进犯,本文笔者从原理和代码审计的视角做了相关介绍和复现。

前文回忆: 二、 BinaryFormatter序列化

运用BinaryFormatter类序列化的进程中,用[Serializable]声明这个类是能够被序列化的,当然有些不想被序列化的元素能够用[NoSerialized]特点来躲避。下面经过一个实例来阐明问题,首要界说TestClass目标

界说了三个成员,并完成了一个静态办法ClassMethod发动进程。 序列化经过创立目标实例分别给成员赋值

诡夺天罡印
香妃卷训练

常规下运用Serialize得到序列化后的二进制路治西文件内容翻开后显现的数据格局如下

三、 BinaryFormatter反序列化 3.1 反序列化原理和用法

反序列进程是将二进制数据转换为王书雅目标,经过创立一个新目标的办法调用Deserialize多个重载办法完成的,检查界说能够看出和SoapFormatter格局化器相同完成了IRemotingFormatter、IFormatter接口

我林景荣们得到体系供给的四个不同的反序列办法,分别是Deserialize、Deseriali魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空zeMethodResponse、UnsafeDeserialize、UnsafeDeserializeMethodResponse。笔者经过创立新对福利区象的办法调用Deserialize办法完成的详细完成代码可参阅以下

反序列化后得到TestClass千济方桑黄类的成员Name的值。

3.2 进犯向量— ActivitySurrogateSelector

由于上一篇中现已介绍了缝隙的原海王祭txt全集下载理,所以本篇就不再冗余的叙说,没有看的朋友请参阅《.NET高级代码审计(第八课) SoapFormatter反序列化缝隙》,两者之间仅有的差异是用了BinaryFormatter类序列化数据,相同也是经过重写ISerializationSurrogate 调用自界说代码,笔者这儿仍旧用计算器做演示,生成的二进制文件翻开后如下图

依照常规用BinaryFormatter类的Deserialize办法反序列化

计算器弹出,但一起也抛出了反常,这在WEB效劳情况下会回来500过错。

3.3 进犯向量—WindowsIdentity 魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空

有关WindowsIdentity原理没有看的朋友请参阅《.NET高级代码审计(第二课) Json.Net反序列化缝隙》,由于WindowsIdentity最终是解析Base64编码后的数据,所以这儿将Serializer后的二进制文件反序列化后弹出计算器

四、代码审土灰蛇计 4.1 UnsafeDeserialize

从代码审计的视点找到缝隙的EntryPoint,比较Deserialize,UnsafeDeserialize供给了更好的功能,这个办法需求传入两个必选参数,第二个参数能够为null,这种办法不算很常见的,需求了解一下,下面是不安全的代码:

进犯者只需求操控传入字符串参数path便可轻松完成反序列化缝隙进犯。

4.2 UnsafeDeserializeMethodResponse

比较DeserializeMethodRe魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空sponse,Unsaf孙乐弟eDeserializ魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空eMethodR苏眠秦北蓦esponse功能上愈加超卓,这个办法需求传入三个必选参数,第二和朱佳怡第三个参数都可为null,这种办法也不算很常见,只需求了解一下,下面是不安全的代码:

4.3 Deserialize

Deserialize家法板子办法很常见,开发者通常用这个办法反序列化,此办法有两个重载,下面是不安全的代码

4.4 DeserializeMethodResponse

比较Deserialize,DeserializeMethodResponse可对远十三贵族程办法呼应供给的Stream流进行反序列化,这个办法需求传入三个必选参数,第二和第三个参数都可为null,这种办法也不算很常见,只需求了解一下,下面是不安全的代码:

最终用这个办法弹出计算器,附上动图

五、总结

实践开发中Bi魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空naryFormatter 类从.NET Framework 2.0开端,官方引荐运用Binary魔兽国际官网,.NET高级代码审计(第九课) BinaryFormatter反序列化缝隙,龙的天空Formatter来代替SoapFormatter,特点是BinaryFormatter能更好的支撑泛型等数据,而在反序列化二进制文件时要注意数据自身的安全性,不然就会发生反序列化缝隙。最终.NET反序列化系列课程笔者会同步到 、 ,后续笔者将连续走出马三家推出高质量的.NET反序列化缝隙文章,欢迎大伙继续重视,沟通。

*本文作者:Ivan1ee@360云影实验室,转载请注明来自Fre马刀进行曲eBuf.COM

声明:该文观念仅代表作者自己,搜狐号系信息发布渠道,搜狐仅供给信息存储空间效劳。
文章版权及转载声明:

作者:admin本文地址:http://www.mikebucks.com/articles/1016.html发布于 4个月前 ( 04-18 02:16 )
文章转载或复制请以超链接形式并注明出处牛奶咖啡,意大利咖啡精选,牛奶和咖啡最佳搭配的100种方法