在本文中,作者利用文件上传机制,构造形成存储型XSS(StoredXSS)漏洞实现密码凭据信息窃取,最终获得了$的奖励。以下是作者的发现过程。
漏洞发现1、登录进入目标WEB应用;2、手工枚举测试;3、观察WEB应用样式:
4、从中可以看到多个文本输入区域,我尝试了诸如sqli、xss、ssti等漏洞,都没问题。但之后的Logo,BackgroundImage和AdvertisementImage图片上传点引起了我的注意,于是我决定构造一些特殊文件进行上传,看看有什么反应。我随即构造了svg格式文件进行了上传:
5、但上传后服务端却返回了以下错误响应:
6、那能否绕过格式限制呢?于是,我在文件名上做了手脚,把“Fileupload.svg”更改成“Fileupload.svg.png”再上传,竟然成功了:
7、之后,我点击上个界面中的“Next”,跳转到了另一个页面,在该页面中我可以访问到刚刚上传的图片,而且这些图片都是缩略图方式:
8、如上点击右键的“ViewImage”后,跳出了期待的svgxss:
我构造的svg文件如下,其中包含了XSSPayload:
?xmlversion=”1.0"standalone=”no”?!DOCTYPEsvgPUBLIC“-//W3C//DTDSVG1.1//EN”“