11
帆软(FineReport) V9任意文件覆盖漏洞
source link: https://xz.aliyun.com/t/9578
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
帆软(FineReport) V9任意文件覆盖漏洞
帆软(FineReport) V9任意文件覆盖漏洞
该漏洞是在近期HVV中被披露的,由于在初始化svg
文件时,未对传入的参数做限制,导致可以对已存在的文件覆盖写入数据,从而通过将木马写入jsp文件中获取服务器权限。
- WebReport V9
# 漏洞分析fr-chart-9.0.jar
包中com.fr.chart.web/ChartSvgInitService
类传递op
参数的值svginit
:
漏洞主要出现在fr-chart-9.0.jar
包中com.fr.chart.web/ChartSaveSvgAction
类,通过cmd
参数传递design_save_svg
命令,利用filePath
参数传递需要初始化的svg
文件,将filePath
参数传入的字符串中chartmapsvg
及后边的所有字符串拼接到WebReport
目录下“WEB-INF/assets/”
之后,如果生成的字符串中包含.svg就会创建该文件,然后将var7
的内容写入创建的文件。如果不包含.svg就会递归创建该目录,即传入的是jsp等非svg
文件就会创建目录无法写入数据,但如果是存在的jsp文件,就可以覆盖文件内容。整个过程直接进行字符串拼接,未过滤“../”
因此可以利用路径穿越漏洞在任意可写位置创建文件或覆盖jsp文件内容。
跟踪getInputStream
方法可见,通过__CONTENT__
参数传递文件内容即可:
# 漏洞利用
由于WebReport V9在安装之后在WebReport目录下存在update.jsp
和update1.jsp
,因此可以构造payload直接覆盖这两个文件的内容,从而GetShell。构造如下Payload覆盖update.jsp文件内容:
访问update.jsp,成功覆盖内容:
将文件内容替换为冰蝎木马,需要将双引号转义:
通过冰蝎成功连接服务器:
# 修复方法
严格过滤filePath参数的值,或使用路径和文件后缀白名单,删除默认update.jsp和update1.jsp页面,升级FineReport到最新版。
# 批量漏洞检测工具
https://github.com/NHPT/WebReportV9Exp/
点击收藏 | 0
关注 | 1
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK