XML
XML设计的宗旨是传输数据,而非显示数据
XXE=XML外部实体注入、XML=可扩展标记语言
Xml文件声明
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
DTD为XML的文档类型定义
引入外部DTD
<!DOCTYPE 根元素 SYSTEM "filename">
参数实体+外部实体
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ENTITY % file SYSTEM "file:///etc/passwd">
%file;
]>XML注入
闭合标签,改写xml文件,用户可控,有拼接代码
<?xml version="1.0" encoding="utf-8"?>
<manager>
<admin id="1">
<username>admin</username>
<password>admin</password>
</admin>
<admin id="2">
<username>root</username>
<password>root</password>
</admin>
</manager>
若是password可控,拼接代码形成注入
admin </password></admin><admin id="3"><name>hack</name><password>hacker</password></admin>XXE
判断
挖掘
有回显读取本地文件
Blind OOB XXE无回显读取
列目录

执行命令
内网主机探测
内网端口扫描
内部DTD利用
XXE写shell
XXE 进行 SSRF
XXE 进行拒绝服务攻击
基于报错的XXE
工具
XSLT注入
确定版本
外部实体
读取文件和SSRF
使用嵌入式脚本块远程执行代码
使用 PHP wrapper执行远程代码
最后更新于
这有帮助吗?