漏洞简介
天锐绿盾审批系统是一款专注于企业数据安全与合规管理的智能审批平台,深度融合文档加密、权限管控与流程自动化,旨在为企业提供从文件创建、流转到归档的全生命周期安全管控,并常作为OA系统中的加密软件,实现审批流程的自动化和信息化。
天锐绿盾审批系统的 findModulePage.do 接口存在SQL注入漏洞。攻击者可以通过构造恶意的SQL查询参数,直接操控数据库查询语句,从而绕过身份验证,获取未授权的数据、修改数据库内容或执行其他恶意操作。该漏洞可能导致敏感信息泄露,例如用户数据或系统配置信息,严重影响系统的数据完整性和机密性,进而降低整体系统安全性。
影响版本
可通过访问 /trwfe/exports/config.ini 获取版本信息
V3.53.240913
V7.05.240904
fofa语法
app="TIPPAY-绿盾审批系统"
漏洞分析
先看findModulePage.do的实现

看下PageVo对象的定义

在 getPageSql() 方法中,来自用户请求的 sort 和 order 成员变量被直接拼接到 pageSql 字符串中。由于这两个变量的值完全由用户控制且未经过任何安全处理,攻击者可以构造恶意的 SQL 片段。
再跟进findAllModulePage 方法,看下findAllModulePage最终的MyBatis 映射文件内容

此处的 ${pageSql} 语法在 MyBatis 中表示直接进行字符串替换,而不是使用预编译的参数化查询(#{...})。这意味着 pageSql 变量的内容将作为原始 SQL 代码的一部分被执行,这是导致SQL注入的直接原因。
该代码段提供了一个分页查询租户信息(Tenant)的功能。前端通过调用 /findModulePage.do 接口,并传递 page、rows、sort、order 等参数来控制分页和排序逻辑。后端接收到参数后,通过 PageVo 对象进行封装,并最终调用 MyBatis 执行数据库查询。
由于后端在处理排序参数 sort 和 order 时,未进行任何安全校验或过滤,直接将这些参数拼接到 SQL 语句中,造成了 SQL注入漏洞。攻击者可以利用此漏洞执行任意数据库操作,例如窃取数据、篡改信息,甚至在特定数据库和权限配置下获取服务器控制权。
漏洞复现
POST /trwfe/login.jsp/.%2e/menu/findModulePage.do HTTP/1.1
Host: trwfe.mrxn.net
Content-Type: application/x-www-form-urlencoded
sort=id%20SQLI_POC&order=asc
成功延时 5 秒


