文件
websafe-kb/06-case-studies/fujian-gov-procurement/reports/idor_subdomain_report.md
hao cda31e86c7 初始化: Web安全攻防知识库
- 靶场环境: 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
2026-03-16 17:10:23 -07:00

6.3 KiB
原始文件 Blame 文件历史

认证态 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 认证机制可能依赖以下额外要素:

  1. 网关 Session CookieOAuth 回调后网关可能生成独立的 session ID
  2. Token 加密/签名Token 在浏览器与网关间可能经过二次加密
  3. 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,这意味着

  1. OpenResty 的 server_name 配置可能使用了通配符或 default_server
  2. 如果前方有 CDN 或反向代理缓存,攻击者可利用此特性进行缓存投毒
  3. 如果页面中使用了 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

五、建议

  1. 政采网应接入全省统一 WAFHTTP 493 机制),统一防护标准
  2. OpenResty 配置 Host 头严格校验,拒绝不匹配的 Host
  3. 全省政务网站统一部署 HSTS
  4. CSP 白名单移除 HTTP,仅保留 HTTPS 源
  5. API 错误响应统一化,隐藏框架细节