0x01
背景:
kaiputenku
大佬最近在挖洞的时候偶遇一枚XXE漏洞,身经百战的他经过一番爱恨纠缠,终将她顺利拿下~
0x02
纠缠一番只为她
-Blind OOB XXE
:
在测试某系统的某
查询
功能模块如下:
-
查询模块
.jpg(
请各位大佬自行脑补
)
-
下面即将开始
kaiputenku
的表演
:
首先使用
burp
抓包,发现提交
xml
形式的数据包,很容易想到可能存在
XML
外部实体注入
尝试构造以下
payload
读取
/etc/shadow
文件:
HTTP
回显报错
Permission denied
,说明
payload
成功执行,证明确实存在
XML
外部实体注入,只是用户权限不足读取失败
尝试构造以下
payload
读取
/etc/passwd
文件
发现
HTTP
回显正常,但是没有我们想要的
passwd
文件信息,说明是
Blind XXE
漏洞
Blind XXE
漏洞有两种常见的利用方式,
ftp
读回显和
http
读回显
测试主机
ip
为
10.xx.xx.31
1
)在测试主机上开启
Web
服务,并创建
eval.dtd
文件,内容如下
2
)在测试主机上下载并运行
xxe-ftp-server.rb
,运行后会在
2121
端口开启
ftp
服务,脚本下载地址:
https://github.com/ONsec-Lab/scripts
3
)构造如下
payload
并发起请求
发现
HTTP
回显
Connection refused
在测试主机
Web
日志中发现目标主机已经成功下载了
evil.dtd
文件,但是
HTTP
又回显
Connection refused
,猜测是
ftp
服务的问题
直接在浏览器中访问
http://10.xx.xx.31:2121/
,发现连接被拒绝,这里没搞不明白为什么已经开启了
ftp
服务并且正在监听
[::]:2121
还是拒绝连接,换了台测试主机出现同样的问题,花了很长时间没有解决,猜测是内部网络策略的问题,遂放弃,准备尝试
HTTP
读回显的方式。
测试主机
ip
为
10.xx.xx.31
1
)在测试主机上开启
Web
服务,并创建
eval.dtd
文件,内容如下
2
)使用
nc
进行监听,执行
necat.exe -lvvp 8081
,监听
8081
端口
3
)构造如下
payload
并发起请求