0x01 前奏
本文来自:RG@M78sec
截至发稿,vuln早已修复
前不久在挖掘某SRC时,偶然在该SRC官网的编辑器发现了一个接口。
起初以为是任意文件包含能RCE了,后来测试发现只是拼接读取了远程资源站的图片,原本都想着放弃了,但是当我在后缀添加了个+号后图片被意外的解析成了HTML页面,这不就意味着get到一个存储型XSS?
https://xxx.cn/xxxx/ueditor?image_name=/xxx.png+
接着测试发现拼接图片在一个二级目录下,尝试穿越发现存在自研WAF,于是Fuzz了下Payload成功Bypass。
WAF:
Bypass:
Payload:
/..%252F/
0x02 漏洞利用
-
利用010Editor或copy命令,制作含有恶意代码的图片。
copy tiny.png /b + code.txt /a tiny_code.png
-
通过本站的文件上传恶意图片,取得文件名(之所以用png格式是因为jpg会校验是否为正常图片)。
我们直接编写了一个demo.js用于,将其部署在XSS平台。
脚本会通过Ajax请求URL,使用DOMParser转换并解析DOM对象,提取有效内容后合并base64发送到XSS平台 -
构造跳转网站,访问:
这时只要用户访问该服务,跳转至恶意页面就能获取。
base64解码即可。(朋友帮忙测试的结果)
审核不让放图,xdm自行脑补
0x03 技术点总结
- Fuzz出接口及参数,拼接+号解析成HTML页面。
- URL拼接时BypassWAF进行目录穿越。
- 使用DOMParser转换为DOM对象并提取表单input值,后通过window.btoa函数base64编码字符串。