windows文件读取 xxe_通过XXE读取本地文件(HTTP OOB失败后)

0x00 前言

大家好,

今天,我将分享一种非常有趣的利用XXE的技术,该技术是我通过https://mohemiv.com/all/exploiting-xxe-with-local-dtd-files/所发现的,且后面经过GoSecure团队研究。该方案是在不允许HTTP带外请求的情况下,仅根据DNS查询记录,通过应用程序抛出XML解析的详细错误消息来读取服务器上的本地文件。

0x01 发现过程

在用Burp测试应用程序时,我意识到app在每个端点都使用了基于JSON的REST API。接下来,我尝试将Content-Type转换为application/xml并重放了其中一个请求,然后发现应用回显里抛出了一些错误信息,该错误显示了应用服务器(JBoss)和其他一些错误详细信息,很明显,该应用希望解析某些XML,但是请求的body却是JSON。因此,我将请求的body由JSON转换为相应的XML。

0x02 绕过waf

该服务器使用了基于云的WAF,该WAF禁止使用<?xml version=1.0?>的XML声明,因此我不使用XML声明,而是直接放入XML正文。

..

..

我很惊讶地看到该应用程序愉快地接受了该请求,并且请求成功。

接下来,我快速使用了最简单的XXE payload来读取文件/ etc / passwd

]>

1

&x;

但是WAF再次被触发,我所要做的就是在协议之前放置一个空格(即“ file:/// etc / passwd”),然后就绕过了WAF!

0x03 利用之旅

但是,该应用程序会验证所有传递的数据,并且不允许“name”或任何其他元素使用如/ etc / passwd的值,只或多或少地允许使用[a-zA-Z0-9]。

如果我尝试读取不存在的文件,或者读取了/ etc / shadow之类的文件,则会抛出禁止访问或一些冗长的错误,但不会包含其文件内容,因此可以确认确实存在XXE漏洞,而且我还可以确认文件是否存在服务器上或是否可以在服务器上访问,只是我无法通过response来获取文件的内容。

0x04 XXE OOB

我想跳过所有的这些麻烦,并使用OOB技术来通过FTP检索文件,因为app服务器是JAVA技术的并为此使用了burp collaborator,而且还使用了参数实体而不是常规实体。

%x;

]>

1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值