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执行远程代码

最后更新于

这有帮助吗?