exploiting json serialization in .NET core
当使用特定的配置的时候,将在NewtonSoft JSON中会有json的反序列化漏洞。
更加具体化一些就是当 jsonserializationsettings 中的typenamehandling这个属性不是None的时候。
因为默认来说 typenamehandling 是设置成none的。
当配置文件(指的是typenamehandling)这个属性并非none的时候,一个新的属性将会同时被序列化。那就是$type属性。这个属性的value将会同时被序列化。
当被反序列化时,type属性也会被用来反序列化到指定的type类型。所以这是反序列化的入口
下面有四个typenamehandling的值
none array all auto
要实现这样的攻击的要求之一就是 将JSON反序列化为我们开发类型的派生类型或者泛型对象类型
寻找能够漏洞攻击的对象
不是所有的对象都能够进行json .net的反序列化。
这些对象需要有一个空的构造函数或者一个带参数的构造函数
payload
以下有一些手法能够用于默认的.net core应用存在json .net漏洞配置的情况
攻击者能够用以下的payload通过后台解析json格式来触发漏洞
生成要给只读文件
{ "$type": "System.IO.FileInfo, System.IO.FileSystem", "fileName": "test.txt", "isReadOnly": true }
修改文件属性
{ "$type": "System.IO.FileInfo, System.IO.FileSystem", "fileName": "test.txt", "attributes": 2 }
执行命令
只存在于WPF框架
使用.net core web程序时,使用会抛出一个异常因为他找不到persentationframework依赖
当我们生成payload特和时候可以根据官方手册进行输入
TypeNameHandling setting (newtonsoft.com)
具体的输入value参数得根据具体的文件来
标签:SERIALIZE,json,System,exploitation,JSON,net,序列化,type From: https://www.cnblogs.com/lisenMiller/p/17895664.html