扫一扫关注公众号,长期致力于安全研究
前言:目前该漏洞已经修复,实验环境为9.0.0老版本
该漏洞位于UploadControllerAbstract.java文件中的ueditorCatchImage方法内。经过往上追溯,在Controller层中,当action=catchimage时,就会进入ueditorCatchImage方法
进入到ueditorCatchImage方法后,可以发现调用了其父类的ueditorCatchImage方法。
而该Controller就继承于UploadControllerAbstract
既然具体流程分析清楚之后,就进行该漏洞分析
在UploadControllerAbstract---》ueditorCatchImage方法中,发现了接收了一个数组
所以前期构造的URL为
http://127.0.0.1:8080/cmscp/core/ueditor.do?action=catchimage&source[]=http://127.0.0.1/a.txt
跟进ueditorCatchImage方法,成功接收到source参数的值,为笔者传入的127.0.0.1/a.txt
继续往下跟,将传入的url存入到src变量之后,并进行了new URL(src).openConnection()进行连接,而返回值为HttpURLConnection,所以需要传入http或https
继续往后走的话,进行了两次校验,首先获取了contentType
由于上传的后缀为txt,所以该判断就会成立,执行continue。
于是乎这里用到了svg后缀进行绕过。准备了一个svg文件。放到了127.0.0.1/a.svg
当再次访问之后,类型成功变成了image。
之后将该svg文件成功保存上传了,这里其实就是一个远程下载的功能
成功执行了XSS
SSRF探测,当端口开发的时候,会返回SUCCESS
由于没有传入文件名,所以获取不到content-type类型,执行continue
再次到for循环时,i与传入的source进行比较,由于此时只传递了一个参数,所以就会直接跳出该for循环
所以会通过response执行返回一个SUCCESS
而result其实在最上方已经定义了
至此简要分析结束。
下方扫一下扫,即可关注
原文始发于微信公众号(安全族):jspxcms SSRF+XSS分析复现过程
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论