Files
hzdyjs/问题整改/SQL注入攻击日志摘录-20260916.md
T
2026-09-18 23:42:09 +08:00

173 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SQL 注入攻击日志摘录(对应攻防演练报告)
> 来源日志包:`问题整改/日志.rar`
> 对照报告:`问题整改/杭州第一技师学院智慧校园系统存在SQL注入漏洞(补充成果).docx`
> 整理日期:2026-09-17
---
## 1. 结论
在客户提供的 `日志.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`
---
## 2. 日志包结构说明
`日志.rar` 解压后主要包含双机节点日志:
| 目录 | 说明 |
|------|------|
| `日志/67/` | 节点 67 应用/系统日志 |
| `日志/68/` | 节点 68 应用/系统日志 |
| `日志/*.log` | 根目录另有一份拷贝(与 67/68 有重叠) |
攻击相关命中主要集中在 **68 节点** 的 `ruoyi-admin-68-9901.log`。
---
## 3. 攻击时间线(基于主日志)
主日志:`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 时 | 持续/回扫 |
与报告截图高度吻合的关键时刻示例:
- **2026-09-16 14:49:32**:`/auth/register` + `extractvalue(SELECT version())` → `~5.7.39-log`
- **2026-09-16 14:50:08**:`/auth/register` + `extractvalue(SELECT user())` → `~root@172.16.0.68`
---
## 4. 关键证据摘录(与报告逐条对应)
### 4.1 攻击入口:注册接口
```text
请求地址'/auth/register',发生未知异常.
```
(同秒内连续多次,符合自动化注入工具特征)
### 4.2 注入点:tenant_id 拼进 sys_config 查询
```text
==> 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,从而触发注入。
### 4.3 报错栈落点:SysConfigMapper
```text
### 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'
```
### 4.4 与报告完全一致的库账号泄露
```text
java.sql.SQLException: XPATH syntax error: '~root@172.16.0.68'
```
### 4.5 信息探测与拖数痕迹(报错回显)
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'` 的记录,表明已进入库表枚举阶段。
> 完整敏感哈希与用户明细不在正文展开;原始摘录见同目录附件。
---
## 5. 典型攻击链路(日志还原)
```text
POST /auth/register
→ selectRegisterEnabled(tenantId) // 参数含恶意 tenantId
→ 查询 sys_config(config_key=sys.account.registerUser)
→ 多租户插件拼接: AND tenant_id = '<恶意内容>'
→ extractvalue(...) 报错回显
→ 泄露 version / user() / database / 表字段 / 业务数据分片
```
该链路与 Word 报告 Burp 截图、成果描述(root 权限判定、用户数据拖取、初始密码配置等)一致。
---
## 6. 附件清单(本目录)
目录:`问题整改/攻击日志摘录/`
| 文件 | 内容 |
|------|------|
| `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 泄露) |
---
## 7. 处置建议(日志侧)
1. 将本摘录作为攻防复盘/整改验收附件归档。
2. 代码侧已完成 `tenantId` 白名单与注册接口加固后,需在**生产发布**后再做一次同类关键字复查(应不再出现 `extractvalue`/`XPATH`/`tenant_id = '...extractvalue`)。
3. 因日志显示存在密码哈希分片外泄痕迹,建议同步:**强制相关账号改密、轮换初始密码与第三方密钥、审计异常登录**。
---
## 8. 一句话结论
**客户日志可证实:2026-09-16 当日存在针对 `/auth/register` + `tenantId` 的报错型 SQL 注入,成功回显 `root@172.16.0.68`,并持续拖取库表元数据与业务数据;与 Word 补充成果报告一致。**