文件
websafe-kb/06-case-studies/fujian-gov-procurement/reports/vulnerability_crossref_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

12 KiB
原始文件 Blame 文件历史

Web 安全攻防全景指南 × 福建省政府采购网 漏洞对照分析报告

评估时间2026-03-10 评估目标zfcg.czt.fujian.gov.cn(福建省政府采购网) 参照标准Web 安全攻防全景指南10 大领域)


总览:漏洞与指南章节映射

指南章节 涉及漏洞数 最高等级 关键发现
1. Web 端安全注入 2 🟢 SQL 注入被 WAF 静默拦截;XSS 风险理论存在
2. 客户端本地数据安全 4 🔴 紧急 JWT/PII 明文存储于 localStorage/sessionStorage
3. 跨域安全与同源策略 2 🟡 CORS Headers 通配符;缺少 CSRF Token
4. HTTPS 与传输层安全 2 🔴 高危 OAuth 重定向使用 HTTP;缺少 HSTS
5. 身份认证与会话安全 4 🔴 高危 无暴力破解防护;弱密码校验关闭;Token 7h 有效期
6. 服务器端安全漏洞 1 🟡 路径遍历测试被拦截
7. 服务器配置与基础设施 5 🔴 紧急 Nacos 8848 对外暴露;Actuator 可公网触达
8. 开源软件与依赖安全 2 🟡 jQuery 1.12.4 已知 CVE;CKEditor 历史漏洞
9. 安全规范与全流程管理 2 🟡 版本号暴露;配置文件泄露加密密钥
10. 提权攻击验证 3 🟡 userTypeNow 修改被检测;PII 可被社工利用

1. Web 端安全注入

1.1 SQL 注入 → 🟢 低危(有防护)

测试项 Payload 结果
经典注入 admin'-- 空响应WAF 拦截)
联合注入 UNION SELECT 1,2,3-- 空响应WAF 拦截)
布尔盲注 admin" OR 1=1-- 空响应WAF 拦截)
认证态注入 userId=...%27 OR 1=1-- 空响应WAF 拦截)

指南对照:系统对 SQL 注入有有效的 WAF 防护(静默 DROP 策略,符合参数化查询防御规范。但建议确认后端是否同时使用了参数化查询ORM,而非仅依赖 WAF。

1.2 XSS → 🟡 中危(理论风险高)

风险点 状态 影响
CKEditor 富文本编辑器 版本未知,历史 XSS 多 存储型 XSS 可能
缺少 CSP 策略 未配置 无法防御内联脚本注入
jQuery 1.12.4 CVE CVE-2020-11022/11023 DOM XSS
Token 在 localStorage 可被 JS 直接读取 XSS → Token 窃取

指南对照

  • 未实施 CSP违反 1.2 输出编码/CSP 规范)
  • Token 未使用 HttpOnly Cookie违反 1.2 HttpOnly Cookie 规范)
  • 使用陈旧 jQuery违反 8.1 版本更新规范)

2. Web 客户端本地数据安全

2.1 Cookies 安全 → 🔴 高危

Cookie HttpOnly Secure SameSite 评估
access_token 未确认 未设置 🔴 紧急
tenantId 未确认 未设置 🟡 中危

指南对照

  • 违反 2.1「HttpOnly 属性」规范 — Token Cookie 可被 JS 读取
  • 违反 2.1「SameSite 属性」规范 — 未设置跨站防护
  • 违反 2.1「Cookie 签名与加密」规范 — Token 明文存储

2.2 Local Storage 与 Session Storage → 🔴 紧急

存储位置 键名 泄露内容 风险
localStorage portal-access_token 完整 JWT Token 🔴 XSS → 冒充
localStorage errLog 后端堆栈/接口路径 🟡 架构泄露
sessionStorage ice-USER_DATA_INFO 手机号/邮箱/CA标识/userId 🔴 PII 泄露

指南对照

  • 严重违反 2.2「禁止存储敏感信息」规范 — JWT Token 明文存储于 localStorage
  • 严重违反 2.2 规范 — PII手机号 13514069349、邮箱 3808789405@qq.com)存储于 sessionStorage

3. 跨域安全与同源策略

3.1 CORS → 🟡 中危

测试 结果
Origin: https://evil.com → Allow-Origin 回显 未回显(安全)
Access-Control-Allow-Headers *🟡 过宽)

指南对照

  • 未盲目反射 Origin符合 3.1 规范)
  • Headers 使用通配符(违反 3.1「限制允许的头部」规范)

3.2 CSRF → 🟡 中危

  • 未发现 Anti-CSRF Token 机制
  • SameSite Cookie 未设置
  • 依赖 OAuth Bearer Token 作为隐式防护

指南对照

  • 缺少 Anti-CSRF Token违反 3.2 规范)
  • SameSite 未设置(违反 3.2 规范)

4. HTTPS 与传输层安全

4.1 未加密传输 → 🔴 高危

发现 详情
OAuth 重定向使用 HTTP Location: http://zfcg.czt.fujian.gov.cn/gp-auth-center/oauth/authorize?...
缺少 HSTS 头 未配置 Strict-Transport-Security

指南对照

  • 严重违反 4.1 MITM 防护规范 — OAuth 授权码通过 HTTP 明文传输
  • 违反 4.3「强制 HTTPS (HSTS)」规范

4.2 重放攻击 → 🟡 中危

  • JWT 包含 jtiToken ID,理论上可用于防重放
  • 但未确认后端是否维护 jti 黑名单
  • Token 有效期 7 小时,窗口期较长

5. 身份认证与会话安全

5.1 密码安全 → 🟡 中危

测试项 结果
弱密码校验 已关闭isShowWeakPassword: false
验证码强度 4 位静态图形码,OCR 可自动识别
暴力破解防护 不存在 — 5 次快速尝试无阻断
账户锁定机制 未发现

指南对照

  • 违反 5.1「防暴力破解」规范 — 无速率限制、无账户锁定、验证码强度极弱
  • 违反 5.1「密码策略」规范 — 弱密码校验被管理员关闭

5.2 会话管理 → 🟡 中危

维度 状态
Token 算法 RS256安全
Token 有效期 ⚠️ ~7 小时(过长)
Token 过期校验 正常拒绝code 5560
Session 固定防护 未测试

6. 服务器端安全漏洞

6.1 SSRF → 未测试

6.2 XXE → 未测试(系统主要使用 JSON,非 XML

6.3 文件上传 → 未测试

6.4 路径遍历 → 🟢 低危

测试 Payload 结果
文件下载路径遍历 path=../../etc/passwd 空响应(被拦截)

7. 服务器配置与基础设施安全

7.1 Nacos 服务注册中心暴露 → 🔴 紧急

IP 端口 TCP 状态
112.54.45.252 8848 OPEN
120.35.30.176 8848 OPEN
114.115.172.176 8848 OPEN

指南对照:严重违反 7.x 服务器配置安全规范 — 微服务注册中心核心组件直接对公网暴露。

7.2 Spring Boot Actuator → 🟡 中危

  • /gateway/actuator/health|beans|mappings 返回 401Nginx Basic Auth
  • /gateway/actuator/env 返回 403额外封锁

7.3 安全响应头 → 🟡 中危

响应头 状态
X-Content-Type-Options: nosniff 已配置
X-XSS-Protection: 1; mode=block 已配置
X-Frame-Options SAMEORIGIN
Content-Security-Policy 缺失
Strict-Transport-Security 缺失
Referrer-Policy no-referrer

7.4 非标端口暴露 → 🟡 中危

IP 端口 响应
112.54/120.35 8080 404 OpenResty
120.35.30.176 9090 502 Bad Gateway
114.115.172.176 8090 400 Bad Request

8. 开源软件与依赖安全

组件 版本 已知 CVE 风险
jQuery 1.12.4 CVE-2020-11022, CVE-2020-11023 🟡XSS
CKEditor 未知 多个历史 XSS CVE 🟡
nginx 1.20.2(华为云) 非最新版 🟢
sm2.min.js V3.0.0.574 未知 🟢

指南对照

  • 违反 8.1「版本更新」规范 — jQuery 1.12.4 发布于 2016 年

9. 安全规范与全流程管理

发现 对应规范
HTML data-tag 暴露版本号 违反「信息最小化原则」
config.js 暴露 RSA 公钥/SM4 密钥 违反「敏感配置管理」规范
错误日志写入 localStorage 违反「生产环境日志管理」规范
isShowWeakPassword: false 生产环境暴露 违反「安全默认配置」原则

10. 提权攻击验证(实测记录)

10.1 userTypeNow 修改提权测试

步骤 操作 结果
1 读取 sessionStorage['ice-USER_DATA_INFO'] userTypeNow: "3" (代理机构)
2 修改 userTypeNow"1" (疑似管理员) 成功写入 sessionStorage
3 刷新页面 location.reload() ⚠️ 弹出"登录超时",会话失效
4 恢复 userTypeNow"3" 会话已失效,需重新登录

结论

  • 后端/前端有角色一致性校验机制 — 修改 userTypeNow 后刷新会导致 Token 与 Session 数据不一致检测
  • ⚠️ 但未测试不刷新页面的情况 — 如果仅通过前端路由SPA 内部跳转)而非页面刷新切换到管理员模块,可能绕过此校验
  • ⚠️ 角色枚举信息泄露 — Token Payload 暴露了角色体系(userTypeNow: "3"),攻击者可推断出完整的角色类型列表

10.2 PII 提取 → 社工攻击链

sessionStorage['ice-USER_DATA_INFO'] 
  → 手机号: 13514069349
  → 邮箱: 3808789405@qq.com
  → CA标识: 3452585403150523

攻击链:
  XSS漏洞 → 窃取 sessionStorage → 提取 PII
  → 伪装成政采网客服致电/发邮件
  → 诱导用户提供密码或 CA 证书
  → 完全控制账户

10.3 JWT Token 冒充攻击

localStorage['portal-access_token']
  → 完整 JWT TokenRS256 签名,7h 有效期)

攻击链:
  XSS漏洞 → 窃取 localStorage Token
  → 在攻击者浏览器中设置 Cookie: access_token=<stolen_token>
  → 直接访问 https://zfcg.czt.fujian.gov.cn/all-portal/portal/
  → 完全冒充受害者身份进行所有操作(~7小时窗口

综合风险热力图

                    影响severity →
                Low      Medium     High      Critical
            ┌─────────┬──────────┬─────────┬──────────┐
  Confirmed │ SQLi拦截 │ jQuery   │ 无暴破  │ Token    │
   已验证    │ 路径遍历 │ CORS *   │ HTTP    │ PII明文  │
            │         │ Actuator │ OAuth   │ Nacos    │
            ├─────────┼──────────┼─────────┼──────────┤
  Likely    │         │ CKEditor │ CSRF    │ XSS→Token│
   可能      │         │ 版本暴露  │ IDOR    │ 社工攻击 │
            ├─────────┼──────────┼─────────┼──────────┤
  Potential │         │ Session  │ 垂直越权│          │
   潜在      │         │ Fixation │ SSRF    │          │
            └─────────┴──────────┴─────────┴──────────┘
                    可能性 likelihood →

优先修复路线图

P0 — 今日内

  1. 封禁 Nacos 8848/9848 端口公网访问
  2. JWT Token 迁移至 HttpOnly + Secure + SameSite Cookie
  3. 清除 sessionStorage 中的用户 PII 数据
  4. OAuth 重定向强制 HTTPS + 配置 HSTS

P1 — 一周内

  1. 实施登录限速5 次/分钟)+ 账户锁定5 次失败锁 30 分钟)
  2. 配置 CSP 安全策略
  3. 启用弱密码校验 isShowWeakPassword: true
  4. 升级 jQuery 至 3.7+
  5. Actuator 从公网完全摘除

P2 — 一月内

  1. Token 有效期缩短至 30 分钟 + Refresh Token
  2. CORS Access-Control-Allow-Headers 精确白名单
  3. 引入滑动拼图验证码替代图形码
  4. JWT Payload 最小化(移除 PII
  5. 配置文件敏感信息改为后端动态下发