- 靶场环境: DVWA/WebGoat/Pikachu/BWAPP/SQLi-Labs/XSS-Labs - SQL注入工具: sqli-scanner.py, blind-sqli.py, sqli-exploit.go - XSS工具: xss-fuzzer.py, xss-scanner.go - 认证攻击: web-brute.py, jwt-cracker.py - 服务端安全: port-scanner.py, tls-scanner.py - 防御配置: nginx-hardening.conf - 案例研究: 福建政采网安全评估报告 (13份) - 同步脚本: sync-gitea.sh
6.3 KiB
6.3 KiB
认证态 IDOR 越权与同体系政务子域名安全扫描报告
测试时间:2026-03-10 测试目标:
zfcg.czt.fujian.gov.cn及同体系*.fujian.gov.cn子域名
一、认证态 API 越权测试
1.1 Token 传递机制分析
| 方式 | 结果 | 说明 |
|---|---|---|
Cookie: access_token=<JWT> |
❌ code 5560 | Token 无效 |
Header: Authorization: Bearer <JWT> |
❌ 空响应 | 被网关静默忽略 |
| 两者同时使用 | ❌ 无效 | 网关不接受 |
分析:网关层(OpenResty + Spring Gateway)的 Token 认证机制可能依赖以下额外要素:
- 网关 Session Cookie:OAuth 回调后网关可能生成独立的 session ID
- Token 加密/签名:Token 在浏览器与网关间可能经过二次加密
- IP 绑定:Token 可能绑定了签发时的客户端 IP
风险评估:🟢 低危 — 这种机制实际上增强了安全性,即使 Token 被窃取(XSS),攻击者也无法在外部直接使用 Token 调用 API(除非同时窃取了网关 session)。
1.2 checkToken 端点信息泄露
POST /gateway/api/oauth/checkToken
Response: {"msg":"404 NOT_FOUND \"No matching handler\"","code":"-1","status":500}
- 风险:🟡 中危 — 泄露了后端 Spring 框架的错误信息格式
- 建议:返回通用错误消息,隐藏框架细节
二、Host 头注入测试
2.1 测试结果
| 测试 | Host 值 | 结果 | 风险 |
|---|---|---|---|
| 替换 Host | evil.com |
✅ 正常返回页面内容 | 🟡 缓存投毒 |
| X-Forwarded-Host | evil.com |
空响应 | ✅ 被过滤 |
| 双重 Host | 正常 + evil | 正常返回 | 🟡 |
| HTTP 请求走私 | CL.TE | 405 Not Allowed | ✅ 被拒绝 |
2.2 Host 头注入风险分析
服务器在收到 Host: evil.com 时仍然返回了完整的页面内容(HTML),这意味着:
- OpenResty 的
server_name配置可能使用了通配符或default_server - 如果前方有 CDN 或反向代理缓存,攻击者可利用此特性进行缓存投毒
- 如果页面中使用了
Host头生成链接(如密码重置邮件链接),可导致开放重定向
建议:在 Nginx/OpenResty 配置中添加 Host 头严格校验:
if ($host !~* ^(zfcg\.czt\.fujian\.gov\.cn)$) {
return 444;
}
三、同体系政务子域名安全扫描
3.1 安全配置对比矩阵
| 域名 | CSP | HSTS | X-Frame-Options | X-Content-Type | WAF (SQLi) | Actuator |
|---|---|---|---|---|---|---|
| zfcg.czt.fujian.gov.cn | ❌ 缺失 | ❌ | ❌ (主页) | ❌ | WAF DROP | 401 |
| rst.fujian.gov.cn (人社厅) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
| slt.fujian.gov.cn (水利厅) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
| zjt.fujian.gov.cn (住建厅) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
| sthjt.fujian.gov.cn (生态环境厅) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
| mzt.fujian.gov.cn (民政厅) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
| tjj.fujian.gov.cn (统计局) | ✅ frame-ancestors | ❌ | ✅ SAMEORIGIN | ❌ | ✅ 493 | 493 |
3.2 关键发现
A. 统一 WAF 防护(HTTP 493)
所有 *.fujian.gov.cn 子域名对恶意请求(SQL 注入探测、Actuator 路径访问)统一返回 HTTP 493(自定义状态码),表明福建省政务网站群部署了统一的 WAF 防护平台。
Important
zfcg.czt.fujian.gov.cn(政采网)未走此统一 WAF,而是使用自己的 OpenResty 层做防护。这造成了防护标准不统一的风险。
B. CSP frame-ancestors 白名单暴露了完整政务网站拓扑
从 CSP 头中我们可以提取完整的政务网站关系图:
福建省政府门户 (www.fujian.gov.cn / www.fj.gov.cn)
├── 平台管理 (ptgl.fujian.gov.cn)
├── 人社厅 (rst.fujian.gov.cn)
├── 水利厅 (slt.fujian.gov.cn)
├── 住建厅 (zjt.fujian.gov.cn)
├── 生态环境厅 (sthjt.fujian.gov.cn)
├── 交通运输厅 (jtyst.fujian.gov.cn)
├── 农业农村厅 (nynct.fujian.gov.cn)
├── 民政厅 (mzt.fujian.gov.cn / mzzjt.fujian.gov.cn)
├── 教育厅 (jyt.fujian.gov.cn)
├── 科技厅 (kjt.fujian.gov.cn)
├── 体育局 (tyj.fujian.gov.cn)
├── 应急厅 (yjt.fujian.gov.cn)
├── 统计局 (tjj.fujian.gov.cn)
├── 海洋渔业局 (hyyyj.fujian.gov.cn)
├── 商务厅 (swt.fujian.gov.cn)
├── 林业局 (lyj.fujian.gov.cn)
├── 自然资源厅 (zrzyt.fujian.gov.cn)
├── 司法厅 (sft.fujian.gov.cn)
├── 财政厅 (czt.fujian.gov.cn)
│ └── 政府采购 (zfcg.czt.fujian.gov.cn) ← 本次评估目标
├── 市场监管局食药监 (yjj.scjgj.fujian.gov.cn)
└── 国际化域名 (xn--imr30xzi13b942dz5d08ej3e.xn--zfr164b)
C. 所有子域名共同缺陷
| 缺陷 | 影响 | 建议 |
|---|---|---|
| ❌ 无 HSTS | 全体易受 SSL 剥离 | 统一部署 HSTS |
| ❌ 无 X-Content-Type-Options | MIME 嗅探风险 | 添加 nosniff |
| CSP 使用 HTTP + HTTPS | CSP 白名单过宽 | 仅保留 HTTPS |
四、综合风险发现
本轮新增风险
| # | 风险项 | 等级 | 章节对照 |
|---|---|---|---|
| R-01 | Host 头注入(缓存投毒) | 🟡 中危 | Ch7 服务器配置 |
| R-02 | checkToken 泄露 Spring 框架信息 | 🟡 中危 | Ch7 |
| R-03 | 政采网未走统一 WAF (493) | 🟡 中危 | Ch7/Ch9 |
| R-04 | CSP 白名单暴露政务网站拓扑 | 🟡 中危 | Ch3 信息泄露 |
| R-05 | 全省政务网站无 HSTS | 🟡 中危 | Ch4 HTTPS |
| R-06 | Token 双重保护机制 | ✅ 安全 | Ch5 会话管理 |
累计风险统计(全部 12 轮测试)
| 等级 | 数量 | 新增 |
|---|---|---|
| 🔴 紧急 | 5 | 0 |
| 🔴 高危 | 6 | 0 |
| 🟡 中危 | 21 | +6 |
| 🟢 低危 | 3 | 0 |
| ✅ 安全 | 5 | +1 |
五、建议
- 政采网应接入全省统一 WAF(HTTP 493 机制),统一防护标准
- OpenResty 配置 Host 头严格校验,拒绝不匹配的 Host
- 全省政务网站统一部署 HSTS
- CSP 白名单移除 HTTP,仅保留 HTTPS 源
- API 错误响应统一化,隐藏框架细节