.NET代码审计XXE漏洞系列-详解XmlReader

admin 2023年8月7日09:14:25评论16 views字数 606阅读2分1秒阅读模式

0x01 XmlReader介绍

XmlReader是.NET中最常用的XML读取类,通过Read()实例方法不断读取Xml文档中的声明,节点开始,节点内容,节点结束,以及空白等等,直到文档结束Read()方法返回false它有一个配置项XmlReaderSettings。XmlReaderSettings 则为 XmlReader提供了一系列的配置选项。例如是否启用 DTD 解析、是否忽略注释和空白节点等。签名和定义如下图

.NET代码审计XXE漏洞系列-详解XmlReader

0x02 复现XXE漏洞

XMLReader默认情况下是禁止处理外部实体的,但XmlReaderSettingsProhibitDtd属性被设置为false时会受到XXE攻击的风险。如下代码

XmlReaderSettings rs = new XmlReaderSettings();rs.ProhibitDtd = false;XmlReader myReader = XmlReader.Create(new StringReader(xml), rs);while (myReader.Read()){    Response.Write(myReader.Value);}

加载<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> 成功触发漏洞读系统win文件内容,如下图

.NET代码审计XXE漏洞系列-详解XmlReader

星球优惠活动

原文始发于微信公众号(dotNet安全矩阵):.NET代码审计XXE漏洞系列-详解XmlReader

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月7日09:14:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   .NET代码审计XXE漏洞系列-详解XmlReaderhttps://cn-sec.com/archives/1938198.html

发表评论

匿名网友 填写信息