11

帆软(FineReport) V9任意文件覆盖漏洞

 2 years ago
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.jspupdate1.jsp,因此可以构造payload直接覆盖这两个文件的内容,从而GetShell。构造如下Payload覆盖update.jsp文件内容:

    访问update.jsp,成功覆盖内容:

    将文件内容替换为冰蝎木马,需要将双引号转义:

    通过冰蝎成功连接服务器:

    # 修复方法
    严格过滤filePath参数的值,或使用路径和文件后缀白名单,删除默认update.jsp和update1.jsp页面,升级FineReport到最新版。
    # 批量漏洞检测工具
    https://github.com/NHPT/WebReportV9Exp/
点击收藏 | 0 关注 | 1

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK