15.Json.Net反序列化点(中篇)以及更多相关链

admin 2024年11月4日10:37:55评论15 views字数 1424阅读4分44秒阅读模式

1.GetterSettingsPropertyValue链

15.Json.Net反序列化点(中篇)以及更多相关链

也是Json.Net很有牌面的专属链,而且看它也支持PropertyGrid、ComboBox、ListBox、CheckedListBox,不难猜测又是通过get触发的链子。来到

System.Configuration.SettingsPropertyValue

注意它的两个属性,一个是SerializedValue,在它的set中给_serializedValue赋值

15.Json.Net反序列化点(中篇)以及更多相关链

另一个是PropertyValue,其get里调用了Deserialize()方法

15.Json.Net反序列化点(中篇)以及更多相关链

跟进Deserialize()方法

15.Json.Net反序列化点(中篇)以及更多相关链

这里判断SerializedValue属性的值是否为string,我们在对SerializedValue赋值的时候,只要给他一个byte[]类型的值,在这一步就会走到BinaryFormatter的反序列化操作。

可以看到这个又是一个非常典型的先通过set设置payload,再通过PropertyGrid、ComboBox、ListBox、CheckedListBox触发get实现反序列化的链子,就非常适配Json.Net。我们来看看Ysoserial生成的链子

15.Json.Net反序列化点(中篇)以及更多相关链

15.Json.Net反序列化点(中篇)以及更多相关链

就很显然了,给SettingsPropertyValue的SerializedValue赋值,类型为Byte[],内容就是binaryformatter相关的payload。然后还是用ComboBox去触发get,运行也是成功RCE

15.Json.Net反序列化点(中篇)以及更多相关链

2.GetterCompilerResults

15.Json.Net反序列化点(中篇)以及更多相关链

这个说是可以从本地或远程加载DLL,但是我没复现成功

15.Json.Net反序列化点(中篇)以及更多相关链

这个类有一个CompiledAssembly属性,get方法会触发Assembly.LoadFile(),传参来自本类的PathToAssembly属性

15.Json.Net反序列化点(中篇)以及更多相关链

15.Json.Net反序列化点(中篇)以及更多相关链

也是先用set给PathToAssembly赋值,然后设法触发CompiledAssembly的get,ysoserial给出的payload如下:

15.Json.Net反序列化点(中篇)以及更多相关链

3.BaseActivationFactory链

需要下面这样的dll依赖(Microsoft.WindowsDesktop.App相关)

15.Json.Net反序列化点(中篇)以及更多相关链

这个我本地也没有复现成功,Ysoserial.net生成的payload倒是很简单:

15.Json.Net反序列化点(中篇)以及更多相关链

15.Json.Net反序列化点(中篇)以及更多相关链

这个类的构造方法接受两个String传参,其中typeNamespace传参会进入DllModule.Load()方法,并且拼接上.dll后缀,应该是这一行触发dll的加载,不过这里应该是得用C/C++写的dll才能触发

15.Json.Net反序列化点(中篇)以及更多相关链

关于后面这俩链子更详细的复现可以参考:

https://exp10it.io/2024/02/dotnet-insecure-serialization/

或者直接参考原文:

https://github.com/thezdi/presentations/blob/main/2023_Hexacon/whitepaper-net-deser.pdf

此外后面这俩链子都有挺多限制:

15.Json.Net反序列化点(中篇)以及更多相关链

4.参考

https://exp10it.io/2024/02/dotnet-insecure-serialization/https://github.com/thezdi/presentations/blob/main/2023_Hexacon/whitepaper-net-deser.pdf

原文始发于微信公众号(HW专项行动小组):15.Json.Net反序列化点(中篇)以及更多相关链

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月4日10:37:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   15.Json.Net反序列化点(中篇)以及更多相关链https://cn-sec.com/archives/3343259.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息