【burpsuite安全练兵场-服务端10】XML外部实体注入(XXE注入)-9个实验(全)

前言:

介绍:

![](https://img-
blog.csdnimg.cn/3e1c80dc452343c9b3e29c5030fa90b1.png)博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。

![](https://img-
blog.csdnimg.cn/3e1c80dc452343c9b3e29c5030fa90b1.png)殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-
某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。

![](https://img-
blog.csdnimg.cn/3e1c80dc452343c9b3e29c5030fa90b1.png)擅长:对于技术、工具、漏洞原理、黑产打击的研究。

![](https://img-
blog.csdnimg.cn/3e1c80dc452343c9b3e29c5030fa90b1.png)C站缘:C站的前辈,引领我度过了一个又一个技术的瓶颈期、迷茫期。


导读:

![](https://img-
blog.csdnimg.cn/b1b5426baac44b97b68428245cc35d77.png)面向读者:对于网络安全方面的学者。

![](https://img-
blog.csdnimg.cn/19ea593260b84ec8b836a336326fa0cc.png)本文知识点(读者自测):

(1)利用XXE检索文件(√)

(2)利用XXE进行SSRF攻击(√)

(3)盲XXE漏洞(√)

(4)查找XXE注入的隐藏攻击面(√)

(5)查找和测试XXE漏洞(√)


目录

一、XML外部实体(XXE)注入

1、简述:

2、产生

3、XXE攻击类型

二、利用XXE检索文件

1、简述:

实验1:利用XXE使用外部实体检索文件

三、利用XXE进行SSRF攻击

1、简述:

实验2:利用XXE进行SSRF攻击

四、盲XXE漏洞

1、简述(查找和利用隐蔽的XXE漏洞):

2、XXE盲注

3、使用带外技术

实验3:带外交互的盲XXE

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

4、利用盲XXE将数据渗透到带外

实验5:利用XXE盲注使用恶意外部DTD泄漏数据

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

实验6:利用盲态XXE通过错误消息检索数据

6、通过改变本地DTD的用途来利用盲XXE

实验9:利用XXE通过改变本地DTD的用途来检索数据

五、查找XXE注入的隐藏攻击面

1、简述:

2、XInclude攻击

实验7:利用XInclude检索文件

3、通过文件上传进行XXE攻击

实验8:通过图像文件上传利用XXE

4、通过修改内容类型的XXE攻击

六、查找和测试XXE漏洞

1、简述:


一、XML外部实体(XXE)注入

1、简述:

1、XML外部实体注入(也称为XXE)是一个Web安全漏洞,使得攻击者能够干扰应用程序对XML数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。


2、在某些情况下,攻击者可以利用XXE漏洞执行攻击,从而升级XXE攻击,危害底层服务器或其他后端基础架构服务器端请求伪造(SSRF)攻击。

2、产生

1、某些应用程序使用XML格式在浏览器和服务器之间传输数据。这样做的应用程序实际上总是使用标准库或平台API来处理服务器上的XML数据。XXE漏洞的出现是因为XML规范包含各种潜在的危险特性,而标准解析器支持这些特性,即使应用程序通常不使用这些特性。


2、XML外部实体是一种自定义XML实体,其定义值从声明它们的DTD外部加载。从安全性的角度来看,外部实体特别重要,因为它们允许基于文件路径或URL的内容定义实体。

3、XXE攻击类型

1、利用XXE检索文件,其中定义了包含文件内容的外部实体,并在应用程序的响应中返回。
2、利用XXE执行SSRF攻击,其中外部实体是基于到后端系统的URL定义的。
3、利用隐蔽XXE会将数据泄露到带外,将敏感数据从应用程序服务器传输到攻击者控制的系统。
4、利用blind XXE通过错误消息检索数据,攻击者可以触发包含敏感数据的解析错误消息。 


二、利用XXE检索文件

1、简述:

1、要执行从服务器文件系统检索任意文件的XXE注入攻击,需要以两种方式修改提交的XML:

    1、引入(或编辑)DOCTYPE元素,该元素定义包含文件路径的外部实体。
    2、编辑应用程序响应中返回的XML中的数据值,以使用定义的外部实体。

2、对于现实世界中的XXE漏洞,提交的XML中通常会有大量的数据值,其中任何一个都可能在应用程序的响应中使用。要系统地测试XXE漏洞,通常需要单独测试XML中的每个数据节点,方法是使用定义的实体并查看它是否出现在响应中。


3、如购物应用程序通过向服务器提交以下XML来检查产品的库存水平:

<?xml version="1.0" encoding="UTF-8"?>
<stockCheck><productId>381</productId></stockCheck>

若应用程序对XXE攻击不执行任何特定的防御,因此可以通过提交以下XXE有效负载来利用XXE漏洞检索/etc/passwd文件:

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

此XXE有效负载定义外部实体&xxe,其值为/etc/passwd文件中的实体并使用产品ID值。这将导致应用程序的响应包含文件的内容:

Invalid product ID: root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

4、涉及实验:
实验1:利用XXE使用外部实体检索文件

实验1:利用XXE使用外部实体检索文件

信息:

本实验有一个“Check stock”特性,它解析XML输入并在响应中返回任何意外值。

要解决实验:注入一个XML外部实体来检索/etc/passwd文件的内容


part1:

访问一个产品页面,点击"检查库存",并在Burp Suite中拦截由此产生的POST请求,发送到repeater


part2:

XXE注入

在XML声明和stockCheck元素之间插入以下外部实体定义:

<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>

将productId编号替换为对外部实体的引用:

&xxe;

响应应包含"Invalid product ID:",后跟/etc/passwd文件的内容

三、利用XXE进行SSRF攻击

1、简述:

1、除了检索敏感数据之外,XXE攻击的另一个主要影响是它们可用于执行服务器端请求伪造SSRF。这是一个潜在的严重漏洞,可诱使服务器端应用程序向服务器可以访问的任何URL发出HTTP请求。


2、要利用XXE漏洞执行SSRF攻击,需要使用要攻击的URL定义外部XML实体,并在数据值中使用定义的实体。如果可以在应用程序响应中返回的数据值中使用定义的实体,那么将能够从应用程序响应中的URL查看响应,从而获得与后端系统的双向交互。如果没有,那么将只能进行SSRF的盲攻击


3、XXE示例:外部实体将导致服务器向组织基础架构中的内部系统发出后端HTTP请求:

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal.vulnerable-

website.com/"> ]>


4、涉及实验:
实验2:利用XXE进行SSRF攻击

实验2:利用XXE进行SSRF攻击

信息:

本实验有一个"Check stock"特性,它解析XML输入并在响应中返回任何意外值

实验室服务器在默认URL(www.example.com)上运行(模拟的)EC2元数据端点http://169.254.169.254/。此终结点可用于检索有关实例的数据,其中一些数据可能是敏感的

解决实验:利用XXE漏洞执行SSRF攻击,从EC2元数据端点获取服务器的IAM秘密访问密钥


part1:

访问一个产品页面,点击"检查库存",并在Burp Suite中拦截由此产生的POST请求,并发送到repeater


part2:

XXE注入

在XML声明和stockCheck元素之间插入以下外部实体定义:

<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>

将 productId 号替换为对外部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值