XXE漏洞全称为XML外部实体注入漏洞,它发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行。
XXE漏洞触发的点出现在系统可以上传XML文件的位置,应用程序对XML输入进行解析时,没有对上传的XML文件内容进行过滤,没有禁止加载外部实体,导致攻击者可以构造一个恶意的XML文件进行上传。
XXE产生的本质原因是:
有外部实体,将数据传入服务器,而且传入的格式是XML。
服务器会将XML进行解析,解析后将内容最终显示到某一个地方。
最终显示数据的地方能够被取到。
XXE漏洞可以使用以下方法进行查找:
手动检查:对于有上传点的应用,可以尝试上传一个包含恶意XML代码的文件,然后查看是否能通过验证并触发XXE漏洞。
使用工具扫描:可以使用一些漏洞扫描工具,OpenVAS、Burp Suite等,这些工具可以自动检测Web应用程序中是否存在XXE漏洞。
代码审计:通过审查应用程序的源代码,可以找到存在XXE漏洞的代码段。特别是要注意在处理XML输入时,是否对外部实体进行了过滤和验证。
需要注意的是,XXE漏洞属于Web应用程序的漏洞,因此在进行查找时,应该针对Web应用程序进行测试和审计。同时,需要对服务器端和客户端的代码进行审查,以确定是否存在潜在的XXE漏洞。
XXE漏洞poc验证代码步骤如下:
构造一个恶意的XML文件,文件内容包含有XML声明、DTD文档声明和攻击代码。
将恶意的XML文件上传到目标服务器。
当目标服务器对上传的XML文件进行解析时,将加载外部实体并执行攻击代码,从而触发XXE漏洞。
以下是一个XXE漏洞的POC代码示例:
php
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPEcreds[<!ENTITYgoodiesSYSTEM"file:///c:/windows/system.ini">]><creds>&goodies;</creds>
在上述代码中,构造了一个名为creds的DTD文档声明,其中包含了名为goodies的外部实体,该实体指向本地的Windows系统配置文件system.ini。当目标服务器对该XML文件进行解析时,会加载外部实体并尝试读取system.ini文件,从而触发XXE漏洞。
原文始发于微信公众号(渗透测试 网络安全技术学习):XXE漏洞原理挖掘
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论