学徒-普通XXE-文件检索
# 实验室:利用XXE并通过外部实体检索文件
# 题目
此实验室具有一个 “Check stock(库存检查)” 功能,它可以解析 XML 输入并在响应中返回任何意外的值。
若要解决实验室问题,请注入一个 XML 外部实体来检索/etc/passwd
文件的内容。
- 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/lab-exploiting-xxe-to-retrieve-files
bgColor: '#001350'
textColor: '#39d50c'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。

来到首页,点击任意商品下方的 “View details” 进入详情页。

在商品详情页的下方,可以看到一个库存检查功能。
启用浏览器代理,然后点击 “Check stock” 。

将请求数据包转发至 Repeater 功能模块。

根据所学的理论知识,在请求数据包的 XML 传参中注入一个外部实体。
<!DOCTYPE foo [ <!ENTITY carsaid SYSTEM "file:///etc/passwd"> ]>
1

定义实体之后,必需在某个位置调用它。
调用的位置也有讲究,如果随便找一个位置调用,则会出现错误:

尝试在productId
参数中调用刚刚定义的实体。
&carsaid;
1
成功读取/etc/passwd
文件的内容。

回到浏览器页面,实验已完成。

经过测试,如果在storeId
参数中调用实体,则应用程序不会返回任何信息。

尝试污染productId
参数,应用程序会返回错误信息,具有回显。

storeId
则没有任何反应。

编辑 (opens new window)