XXE(XML外部实体注入)漏洞

  • xxe&xml

    • 探针

      • 黑盒

        • content-type
          • 获取得到Content-Type或数据类型为xml时,尝试xml语言payload进行测试
        • svg&excel引用
        • 数据格式
      • 白盒

        • 可以通过应用功能追踪代码定位审计
        • 可通过脚本特定函数搜索定位审计
        • 可通过伪协议玩法绕过相关修复等
    • 利用

      • 无回显

        • dtd实体带外访问,将数据参数发送
        • HTTP带外访问,加载实体
        • file读取文件,先读取
        • 接受文件接受数据处理
      • 有回显

        • file协议,读取文件

          • 读取文件

            • <?xml version="1.0"?>
            • <!DOCTYPE xiaodi [
            • <!ENTITY test SYSTEM "file:///d:/1.txt">
            • ]>
            • <user><username>&test;</username><password>xiaodi</password></user>
          • 外部实体引用dtd

            • <?xml version="1.0" ?>
            • <!DOCTYPE test [
            • %file;
            • ]>
            • <user><username>&send;</username><password>xiaodi</password></user>
        • HTTP带外访问
      • 伪装协议玩法
    • 前置

      • 缘由:传输和存储数据
        • xml
      • 危害:文件读取,端口探针
    • 修复

      • 禁用dtd实体引用
      • 过滤关键字:<!DOCTYP <!ENTITY, SYSTEM PUBLIC
      • 方案
        • 禁用外部实体

          • PHP
            • libxml_disable_entity_loader(true);
          • Java
            • DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);
          • python
            • from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
    • 原理及漏洞

相关推荐
嵌入式老表18 小时前
ISO15118-2 解读4 —— XML、EXI、签名
xml
学海无涯书山有路1 天前
Android LiveData + MVVM 新手入门教程(基于 XML+Java)
android·xml·java
方方洛2 天前
技术实践总结:schema-bridgion:json、xml、yaml、toml文件相互转换
xml·前端·typescript·node.js·json
写代码的【黑咖啡】3 天前
Python中的lxml:高效XML处理库
xml·开发语言·python
spencer_tseng4 天前
org.xml.sax.SAXParseException: cvc-complex-type.3.2.2 sql-query result-type
xml
派大鑫wink4 天前
【Day48】MyBatis 注解开发:替代 XML 映射文件
xml·java·mybatis
sunnyday04265 天前
Spring Boot 日志配置详解:log4j2.xml 的完整配置指南
xml·spring boot·log4j
熊出没5 天前
关于MyBatis Mapper 接口与 XML 映射机制的分析
xml·microsoft·mybatis
她说..6 天前
FIND_IN_SET()方法
xml·java·spring boot