XXE基本原理

简介: XXE基本原理

一、XXE漏洞与xml:

1、XXE漏洞的概念与基本原理:

XXE漏洞,全称:"XML External Entity Injection"。

这种漏洞发生在应用程序解析XML输入数据时,如果没有禁止或限制对外部实体的引用和加载,那么攻击者可以上传含有恶意构造的外部实体的XML文件。这些恶意的外部实体可以被设计为访问服务器上的敏感文件、执行系统命令、扫描内网端口等,从而泄露信息或造成服务拒绝。

简而言之,XXE漏洞类似于其他注入类攻击(如SQL注入、XSS),都是利用了外部输入数据未被充分验证和过滤的安全缺陷。要防御XXE漏洞,可以在解析XML文档时禁止使用外部实体,确保所有XML输入都经过适当的验证和清理程序。

2、XML介绍:

XML是一种非常流行的标记语言,在解析外部实体的过程中,XML解析器可以根据URL中指定的方案(协议)来查询各种网络协议和服务(DNS,FTP,HTTP,SMB等)。 外部实体对于在文档中创建动态引用非常有用,这样对引用资源所做的任何更改都会在文档中自动更新。 但是,在处理外部实体时,可以针对应用程序启动许多攻击。 这些攻击包括泄露本地系统文件,这些文件可能包含密码和私人用户数据等敏感数据,或利用各种方案的网络访问功能来操纵内部应用程序。 通过将这些攻击与其他实现缺陷相结合,这些攻击的范围可以扩展到客户端内存损坏,任意代码执行,甚至服务中断,具体取决于这些攻击的上下文。

关于XML的具体语法参考下面一片文章,附上链接:

浅析无回显XXE(Blind XXE)


二、靶场漏洞复现(Pikachu):

1、有回显XXE漏洞复现:

有回显XXE漏洞后端代码示例,如下图:

正是 echo $creds; 将响应结果打印出来,构成了回显,显示在我们的前端页面上。

进入靶场,页面如下:

根据题目得知,输入框为接收xml数据的api,我们首先要判断是否有回显。

首先在输入框中提交以下XML代码:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe "XXE漏洞有回显">
]>
<root>&xxe;</root>

将代码提交后,页面如下:

我们可以看到页面出现了回显,那么我们就可以修改实体xxe的内容,将回显目标改为一些敏感目录,比如win.ini。

修改payload如下:

<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM "file:///C:/windows/win.ini">
]>
<root>&xxe;</root>

代码提交后,页面如下图所示:

可以看到敏感目录中的内容成功在页面上回显,漏洞复现成功。

相关文章
|
C#
WPF技术之BorderBrush和BorderThickness
在WPF中,BorderBrush和BorderThickness是用于创建和定义控件边框的两个属性。
1607 0
|
监控 安全 网络安全
SOC:简介、功能及其优点
【8月更文挑战第19天】
1217 0
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
356 0
|
11月前
|
数据采集 SQL 安全
2024年护网行动全国各地面试题汇总(5)
2024年护网行动全国各地面试题汇总(5)
|
安全 关系型数据库 MySQL
Web安全-任意文件下载漏洞
Web安全-任意文件下载漏洞
652 5
|
测试技术 网络安全 数据安全/隐私保护
burpsuite口令爆破的四种模式
burpsuite口令爆破的四种模式
|
监控 安全 网络安全
|
网络协议 网络安全
有哪些常见的DDoS攻击类型?
DDoS攻击可分为三类:网络层(ICMP Flood, ARP Flood, IP分片)、传输层(SYN Flood, ACK Flood, UDP Flood)和应用层(DNS Flood, HTTP Flood, CC攻击),目标是消耗带宽、资源或使服务不可用。
1972 0
|
前端开发 JavaScript
|
SQL Oracle 关系型数据库
MySQL中多表连接查询总结与实践
MySQL中多表连接查询总结与实践
870 1