menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 163-FineReport chevron_right 001-FineReport 任意文件读取漏洞.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    001-FineReport 任意文件读取漏洞.md
    2.57 KB / 2021-07-17 00:01:24
        # FineReport 任意文件读取漏洞
    
    ## 一、漏洞简介
    
    ## 二、漏洞影响
    
    * FineReport v8.0
    * FineReport v9.0
    
    ## 三、复现过程
    
    漏洞代码位于fr-chart-8.0.jar文件的com.fr.chart.web.ChartGetFileContentAction中
    
    ![1.png](images/2020_05-22/cf66282db08b459f996415670f65e390.png)
    
    这里由ActionNoSessionCMD类扩展而来,跟进这个类其实就是对用户权限做一个简单的认证,实际上帆软报表在具体函数里会自定义认证模式,所以这个类可以略过。
    
    ![2.png](images/2020_05-22/a55bdb4829824d3ead2c25eaf8ac9198.png)
    
    这里通过request将文件名传进来,同时这里使用了cjkDecode函数来解密文件名,但跟进这个函数就会发现对我们所传入的文件名没有任何影响,继续跟进
    接着使用invalidResourcePath函数来验证文件名是否存在
    
    
    ```bash
    | 1234 | public static boolean invalidResourcePath(String paramString) { return (StringUtils.isEmpty(paramString) || paramString.indexOf(false) != -1) ? true : (paramString.startsWith("http") ? ((paramString.indexOf("127.0.0.1") != -1 || paramString.indexOf("localhost") != -1)) : ((paramString.indexOf("..") != -1 && paramString.split("\Q..\E").length > 3))); } |
    | --- | --- |
    |  |  |
    ```
    
    初步看来应该是为了防止ssrf?但对这个任意文件读取漏洞而言依旧没有任何影响。
    
    最后使用了readResource函数来去读文件流,将其显示浏览器当中,这里其实在初步审的时候其实是有一点问题的,那就是文件的默认路径,这里必须要跟进这个FRContext类中去看看如何初始化文件默认路径,由于跟的过程比较复杂,最终发现默认是访问resources目录下的文件
    
    ![3.png](images/2020_05-22/c274bcd690214794ac754e66ec14b358.png)
    
    这里面较为关键的是privilege.xml,因为其中存储的就是超级管理员的账号和加密密码,在官网补丁中推荐的修补建议是加大密码强度,但实际情况是这里面的解密函数已经内置在jar包里,并且使用了硬编码的方式,所以如果能够拿到加密字符串,等同于拿到了管理员账号和密码
    
    ![4.png](images/2020_05-22/ccb3c5b9a2f846909c874541d785e4d9.png)
    
    至此利用任意文件读取漏洞可以拿到管理员的账号和密码,从而进入到后台。
    
    ### poc
    
    ```bash
    http://www.baidu.com:8080/WebReport/ReportServer?op=fs_remote_design&cmd=design_list_file&file_path=..&currentUserName=admin&currentUserId=1&isWebReport=true
    
    ```
    
    ![5.png](images/2020_05-22/0a20726a6492450e8e0bc8e98e1c928c.png)
    
    ## 参考链接
    
    > https://www.freesion.com/article/1056237571/
    
    
    
    links
    file_download