来源日志包:
问题整改/日志.rar
对照报告:问题整改/杭州第一技师学院智慧校园系统存在SQL注入漏洞(补充成果).docx
整理日期:2026-09-17
在客户提供的 日志.rar 中,已定位到与 Word 报告完全吻合的 SQL 注入攻击痕迹。
核心对应关系:
| Word 报告描述 | 日志证据 |
|---|---|
入口 POST /prod-api/auth/register |
大量 请求地址'/auth/register',发生未知异常 |
tenantId 注入进 SQL |
sys_config ... AND tenant_id = '000000' AND extractvalue(...) |
报错型注入 extractvalue / XPATH |
java.sql.SQLException: XPATH syntax error: '~...' |
落点 SysConfigMapper |
The error may exist in org/dromara/system/mapper/SysConfigMapper.java |
泄露 root@172.16.0.68 |
XPATH syntax error: '~root@172.16.0.68'(约 200 次) |
| 查注册开关触发 | 参数 sys.account.registerUser |
| 拖库用户/配置 | 报错片段中出现表字段、时间戳、BCrypt 哈希分片等 |
主证据文件(推荐引用):
日志/ruoyi-admin-68-9901.log(节点 68,体量最大、攻击痕迹最完整)日志/68/ruoyi-admin-68-9901.log日志.rar 解压后主要包含双机节点日志:
| 目录 | 说明 |
|---|---|
日志/67/ |
节点 67 应用/系统日志 |
日志/68/ |
节点 68 应用/系统日志 |
日志/*.log |
根目录另有一份拷贝(与 67/68 有重叠) |
攻击相关命中主要集中在 68 节点 的 ruoyi-admin-68-9901.log。
主日志:ruoyi-admin-68-9901.log
| 统计项 | 数值 |
|---|---|
XPATH syntax error |
42230 次 |
extractvalue |
16726 次 |
/auth/register 异常 |
8644 次 |
SysConfigMapper |
8540 次 |
root@172.16.0.68 泄露 |
200 次 |
参数 sys.account.registerUser |
8747 次 |
| 首次 XPATH 关联时间 | 2026-09-16 10:43:25 |
| 末次 XPATH 关联时间 | 2026-09-16 23:36:48 |
按小时分布(XPATH 相关):
| 时段 | 相对强度 |
|---|---|
| 10 时 | 少量探测 |
| 14 时 | 明确命中(含 root@、版本探测) |
| 15 时 | 高峰(约 3.1 万行级) |
| 16 时 | 仍高强度 |
| 17 / 21 / 22 / 23 时 | 持续/回扫 |
与报告截图高度吻合的关键时刻示例:
/auth/register + extractvalue(SELECT version()) → ~5.7.39-log/auth/register + extractvalue(SELECT user()) → ~root@172.16.0.68请求地址'/auth/register',发生未知异常.
(同秒内连续多次,符合自动化注入工具特征)
==> Preparing: SELECT config_id, config_name, config_key, config_value, ...
FROM sys_config
WHERE (config_key = ?)
AND tenant_id = '000000' AND extractvalue(1,concat(0x7e,(SELECT user()))) AND '1'='1'
==> Parameters: sys.account.registerUser(String)
说明:注册流程先查“是否开启注册”,恶意 tenantId 被多租户插件拼进 SQL,从而触发注入。
### The error may exist in org/dromara/system/mapper/SysConfigMapper.java (best guess)
### Cause: java.sql.SQLException: XPATH syntax error: '~root@172.16.0.68'
java.sql.SQLException: XPATH syntax error: '~root@172.16.0.68'
XPATH 回显片段(日志统计 Top)可见攻击者在逐步抽取元数据/业务数据,例如:
| 回显片段(截断) | 含义(推断) |
|---|---|
~5.7.39-log |
MySQL 版本 |
~root@172.16.0.68 |
当前数据库用户 |
~tenant_id / ~create_time / ~create_by 等 |
表字段枚举 |
~2025-12-23 13:1... |
用户创建时间等数据分片 |
~$2a$10$... |
密码哈希分片(敏感) |
另有 SQL 探测 information_schema / table_schema='hzdyjs_xg' 的记录,表明已进入库表枚举阶段。
完整敏感哈希与用户明细不在正文展开;原始摘录见同目录附件。
POST /auth/register
→ selectRegisterEnabled(tenantId) // 参数含恶意 tenantId
→ 查询 sys_config(config_key=sys.account.registerUser)
→ 多租户插件拼接: AND tenant_id = '<恶意内容>'
→ extractvalue(...) 报错回显
→ 泄露 version / user() / database / 表字段 / 业务数据分片
该链路与 Word 报告 Burp 截图、成果描述(root 权限判定、用户数据拖取、初始密码配置等)一致。
目录:问题整改/攻击日志摘录/
| 文件 | 内容 |
|---|---|
stats.txt |
主日志命中统计与时间分布 |
primary-xpath-context.txt |
首批 XPATH 上下文(含 register + root) |
primary-extract-sql-samples.txt |
被注入的 SQL 样本 |
primary-register-hits.txt |
/auth/register 异常样本 |
primary-root-leaks.txt |
root@172.16.0.68 泄露样本 |
primary-sysconfig-hits.txt |
SysConfigMapper 报错样本 |
evidence-block-auth-register-root.txt |
连续证据块(从版本探测到 root 泄露) |
tenantId 白名单与注册接口加固后,需在生产发布后再做一次同类关键字复查(应不再出现 extractvalue/XPATH/tenant_id = '...extractvalue)。客户日志可证实:2026-09-16 当日存在针对 /auth/register + tenantId 的报错型 SQL 注入,成功回显 root@172.16.0.68,并持续拖取库表元数据与业务数据;与 Word 补充成果报告一致。