# Web 安全攻防全景指南(20 章) × 福建政采网 逐项审计报告 > **评估时间**:2026-03-10 > **评估目标**:`zfcg.czt.fujian.gov.cn` > **参照标准**:Web 安全与区块链安全攻防全景指南(20 章 87 子节) --- ## 审计概览热力图 | 章节 | 审计项 | 发现数 | 最高风险 | 概要 | |------|--------|--------|----------|------| | Ch1 注入攻击 | 7 项 | 2 | 🟢 低 | WAF 拦截有效 | | Ch2 客户端数据安全 | 5 项 | 5 | 🔴 **紧急** | Token/PII 明文存储 | | Ch3 跨域安全 | 5 项 | 3 | 🟡 中 | CORS Headers 过宽 | | Ch4 HTTPS 传输安全 | 6 项 | 4 | 🔴 **紧急** | RC4-MD5 弱密码套件! | | Ch5 认证与会话 | 5 项 | 4 | 🔴 高危 | 无暴破防护 | | Ch6 服务器端漏洞 | 4 项 | 1 | 🟢 低 | 路径遍历被拦截 | | Ch7 服务器配置 | 5 项 | 4 | 🔴 **紧急** | Nacos 8848 暴露 | | Ch8 开源依赖 | 3 项 | 2 | 🟡 中 | jQuery CVE | | Ch9 DDoS | 4 项 | 1 | 🟡 中 | 无速率限制 | | Ch10 供应链 | 2 项 | 1 | 🟡 中 | 前端依赖未锁定 | | Ch11 容器/云原生 | 2 项 | 0 | — | 未直接发现 | | Ch12 密码学 | 3 项 | 2 | 🔴 高危 | SM4 密钥明文暴露 | | Ch13 安全日志 | 2 项 | 1 | 🟡 中 | 错误日志存 localStorage | | Ch14 隐私合规 | 3 项 | 2 | 🟡 中 | PII 明文可提取 | | Ch15 移动端/PWA | 3 项 | 0 | ✅ | 非 PWA,无 Service Worker | | Ch16 社会工程 | 2 项 | 2 | 🟡 中 | 无 SPF/DMARC 防骗 | | Ch17 区块链 | — | — | — | 不适用 | | Ch18 安全信息源 | — | — | — | 建议性条目 | | Ch19 SDLC | 2 项 | 2 | 🟡 中 | 缺少威胁建模 | | Ch20 术语 | — | — | — | 参考性条目 | --- ## Ch1. Web 端安全注入 ### 1.1 SQL 注入 → 🟢 低危 | Payload | 结果 | 指南对照 | |---------|------|----------| | `admin'--` | WAF 静默 DROP | ✅ 有 WAF 防护 (1.1) | | `UNION SELECT 1,2,3--` | WAF DROP | ✅ | | `admin" OR 1=1--` | WAF DROP | ✅ | ✅ 符合指南 1.1 「WAF 作为额外防御层」规范。后端是否使用参数化查询待确认。 ### 1.2 XSS → 🟡 中危(理论风险高) | 检查项 | 状态 | 指南条款 | |--------|------|----------| | CSP 策略 | ❌ 未配置(meta 和 header 均无) | 违反 1.2 CSP 规范 | | HttpOnly Cookie | ❌ access_token 可被 JS 读取 | 违反 1.2 HttpOnly 规范 | | 安全模板引擎 | ✅ Vue.js 默认转义 | 符合 1.2 规范 | | jQuery 1.12.4 | ❌ CVE-2020-11022/11023 | 违反 1.2 + 8.1 规范 | ### 1.3 命令注入 → 未测试(无直接输入系统命令的可见入口) ### 1.4 SSRF → 未测试(需要认证态业务接口) ### 1.5 XXE → 🟢 低风险(系统使用 JSON,非 XML) ### 1.6 SSTI → 未测试 ### 1.7 LDAP 注入 → 未测试 --- ## Ch2. Web 客户端本地数据安全 ### 2.1 Cookie 安全 → 🔴 紧急 | 属性 | access_token | tenantId | isPwdSecurity | 指南要求 | |------|-------------|----------|---------------|----------| | HttpOnly | ❌ | ❌ | ❌ | **必须** | | Secure | 未设置 | 未设置 | 未设置 | **必须** | | SameSite | 未设置 | 未设置 | 未设置 | **必须 Strict/Lax** | | Domain/Path | 未限制 | 未限制 | — | 应严格限制 | **严重违反** 指南 2.1 全部 Cookie 安全属性规范。 ### 2.2 Local Storage → 🔴 紧急 | 键名 | 内容 | 风险 | 指南条款 | |------|------|------|----------| | `portal-access_token` | 完整 JWT | 🔴 XSS → 冒充 | **严重违反** 2.2「绝不存储敏感数据」 | | `debug` | 调试标志 | 🟡 架构泄露 | 生产环境不应保留 | | `loglevel` | 日志级别 | 🟡 | 同上 | ### 2.3 Session Storage → 🔴 紧急 | 键名 | 泄露内容 | 指南条款 | |------|----------|----------| | `ice-USER_DATA_INFO` | 手机号/邮箱/CA标识/userId | **严重违反** 2.2 | | `gpx-menu` | 菜单权限配置 | 🟡 业务逻辑泄露 | ### 2.4 IndexedDB → ✅ 安全(未使用) ### 2.5 浏览器缓存 → 🟡 中危 - 主页未设置 `Cache-Control: no-store`(允许缓存敏感页面) - 网关 API 有 `Cache-Control: no-cache, no-store`(✅) --- ## Ch3. 跨域安全与同源策略 ### 3.1 SOP → ✅ 基本合规 ### 3.2 CORS → 🟡 中危 | 测试 | 结果 | 指南条款 | |------|------|----------| | `Access-Control-Allow-Origin` 反射 evil.com | ❌ 未反射(✅) | 符合 3.2 白名单 | | `Access-Control-Allow-Headers` | `*`(通配符) | **违反** 3.2「限制头部」 | ### 3.3 CSRF → 🟡 中危 - ❌ 未发现 Anti-CSRF Token - ❌ SameSite Cookie 未设置 - 指南要求至少实施 SameSite + CSRF Token 双重防护 ### 3.4 点击劫持 → 🟡 不完整 | 页面 | X-Frame-Options | CSP frame-ancestors | |------|----------------|---------------------| | 主页 `/` | ❌ 缺失 | ❌ 缺失 | | 网关 API | ✅ SAMEORIGIN | ❌ 缺失 | **主页可被嵌入到任意 iframe 中**,存在点击劫持风险。 ### 3.5 跨域信息泄露 → 🟡 中危 | 发现 | 详情 | |------|------| | JSONP 端点 | `/api/jsonp?callback=test` 返回 `{"code":10010002,"msg":"您还未登录"}` — 泄露认证状态 | | WebSocket | `/ws` 返回 `nsssjss is null` — 端点存在且返回内部错误信息 | --- ## Ch4. HTTPS 与传输层安全 ### 4.1 TLS 密码套件 → 🔴 **紧急** > [!CAUTION] > 这是本次审计发现的**最严重加密安全隐患**。 | 项目 | 实际值 | 安全要求 | 状态 | |------|--------|----------|------| | 协商密码套件 | **RC4-MD5** | AES-256-GCM | 🔴 **极危险** | | 协议版本 | TLS 1.2 | TLS 1.2+ | ⚠️ 但不支持 1.3 | | SSLv3 | 无法测试(客户端不支持) | 必须禁用 | — | | TLS 1.0 | ❌ 已拒绝(alert 70) | 必须禁用 | ✅ | | TLS 1.1 | ❌ 已拒绝(alert 70) | 必须禁用 | ✅ | | TLS 1.3 | ❌ 被拒绝 | 应支持 | ❌ | **RC4-MD5 风险说明**: - RC4 在 2015 年被 RFC 7465 正式禁止用于 TLS - MD5 哈希已被证明存在碰撞攻击 - 此组合可能允许攻击者解密传输数据(BEAST、POODLE 变种攻击) ### 4.2 证书信息 | 项目 | 值 | |------|-----| | 颁发者 | WoTrus DV Server CA (沃通) | | 信任链 | USERTrust RSA CA → WoTrus DV → zfcg.czt.fujian.gov.cn | | 有效期 | 2025-04-17 至 2026-04-28 | | 指纹 | SHA256: 72:3E:D3:C6:B7:... | ### 4.3 HTTP 安全头 → 🔴 主页严重缺失 | 安全头 | 主页 `/` | 网关 API | 指南要求 | |--------|---------|----------|----------| | `Strict-Transport-Security` | ❌ | ❌ | **必须** | | `Content-Security-Policy` | ❌ | ❌ | **必须** | | `X-Content-Type-Options` | ❌ | ✅ nosniff | **必须** | | `X-Frame-Options` | ❌ | ✅ SAMEORIGIN | **必须** | | `X-XSS-Protection` | ✅ 1; mode=block | ✅ | 已弃用,应为 0 | | `Referrer-Policy` | ❌ | ✅ no-referrer | 推荐 | | `Permissions-Policy` | ❌ | ❌ | 推荐 | ### 4.4 OAuth HTTP 降级 → 🔴 高危 OAuth 授权重定向使用 HTTP 而非 HTTPS(违反指南 4.1 全站 HTTPS 要求): ``` Location: http://zfcg.czt.fujian.gov.cn/gp-auth-center/oauth/authorize?... ``` --- ## Ch5. 身份认证与会话安全 ### 5.1 密码安全 → 🟡 中危 | 测试项 | 结果 | 指南条款 | |--------|------|----------| | 弱密码校验 | ❌ 已关闭 (`isShowWeakPassword: false`) | 违反 5.1 密码策略 | | 暴力破解防护 | ❌ 5 次连续无阻断 | **严重违反** 5.1 速率限制 | | 验证码强度 | 4 位静态图形码 | 违反 5.1 CAPTCHA 规范 | | 账户锁定 | ❌ 未发现 | 违反 5.1 规范 | ### 5.2 MFA → ❌ 未实施 系统仅依赖密码 + 图形验证码,未提供任何 MFA 选项。违反指南 5.2 多因素认证要求。 ### 5.3 会话管理 → 🟡 中危 - Token 有效期约 7 小时(过长) - Token 过期验证正常 ✅ - 会话固定防护:未测试(需在登录前后对比 session ID) ### 5.4 JWT 安全 → 部分安全 | 攻击 | 结果 | 指南条款 | |------|------|----------| | `alg: none` 伪造 | ✅ 被正确拒绝 | 符合 5.4 | | RS256 算法 | ✅ 安全 | 符合 5.4 | | Token 存储位置 | ❌ localStorage | **违反** 5.4「使用 HttpOnly Cookie」 | | Payload 信息过载 | ❌ 含 PII | 违反最小化原则 | ### 5.5 OAuth 2.0 → 🔴 高危 | 检查项 | 状态 | |--------|------| | PKCE | ❌ 未实施 | | state 参数 | `0,0,0,0,0,0`(可预测) | | redirect_uri 验证 | 通过 HTTP 重定向(🔴) | --- ## Ch6. 服务器端安全漏洞 ### 6.1 文件上传 → 未测试(需认证态) ### 6.2 反序列化 → 未测试 ### 6.3 目录遍历 → 🟢 低(被拦截) ### 6.4 业务逻辑(IDOR) → 🟡 中 - Token 中含 `orgId`、`tenantId`,可用于构造 IDOR 请求 - userTypeNow 修改被检测到(刷新时触发"登录超时") --- ## Ch7. 服务器配置与基础设施安全 ### 7.1 Web 服务器加固 → 🟡 部分合规 | 配置项 | 状态 | 指南要求 | |--------|------|----------| | `server_tokens off` | ❌ 暴露 `openresty` | 应隐藏 | | TLS 配置 | ❌ RC4-MD5 | 应仅允许 AES-GCM | | 请求体限制 | 未测试 | 应限制 | ### 7.2 端口暴露 → 🔴 紧急 | 端口 | 服务 | 风险 | |------|------|------| | 8080 | HTTP (404) | 🟡 中 | | 8848 | Nacos (TCP OPEN) | 🔴 **紧急** | | 9090 | 代理 (502) | 🟡 中 | | 8090 | HTTP (400) | 🟡 中 | ### 7.3 DNS 安全 → 🔴 高危 | 检查项 | 状态 | 指南条款 | |--------|------|----------| | DNSSEC | ❌ 未签名 | 违反 7.3 DNS 安全 | | CAA 记录 | ❌ 未设置 | 违反 证书管理规范 | | SPF | ❌ 无 TXT 记录 | 违反 16.3 邮件防护 | | DMARC | ❌ NXDOMAIN | **严重违反** 邮件安全 | | DKIM | ❌ NXDOMAIN | **严重违反** 邮件安全 | **无 DMARC + 无 SPF = 攻击者可以完全伪造 @czt.fujian.gov.cn 的邮件** --- ## Ch8. 开源软件与依赖安全 | 组件 | 版本 | CVE | CVSS | 指南条款 | |------|------|-----|------|----------| | jQuery | 1.12.4 | CVE-2020-11022/11023 | 6.1 | 8.1 过时组件 | | CKEditor | 未知 | 多个历史 XSS | 中 | 8.1 | | sm2.min.js | V3.0.0.574 | 未知 | — | 应关注 | --- ## Ch9. DDoS 防护 - ❌ 登录接口无速率限制 → 应用层 CC 攻击风险 - ✅ 使用 OpenResty(可通过 Lua 实现 limit_req) - SYN 代理/负载均衡器存在(解释了端口扫描全 OPEN 现象) --- ## Ch10. 供应链安全 - ❌ 前端未发现 `package-lock.json`(依赖版本可能未锁定) - ❌ `config.js` 明文暴露 RSA 公钥和 SM4 密钥 --- ## Ch12. 密码学安全 | 项目 | 发现 | 风险 | |------|------|------| | TLS 密码套件 | RC4-MD5 | 🔴 已被 RFC 7465 禁止 | | SM4 密钥暴露 | `config.js` 中明文 | 🔴 客户端加密可被破解 | | RSA 公钥暴露 | `config.js` 中明文 | 🟡 公钥暴露本身风险有限 | | JWT 签名 | RS256 | ✅ 安全 | --- ## Ch13. 安全日志与监控 - ❌ 错误日志写入 localStorage(`gpbe-expertweb-errLog`、`gpcms-errLog`) - 可能泄露后端堆栈、接口路径、异常信息 --- ## Ch14. 隐私合规 | 检查项 | 状态 | 关联法规 | |--------|------|----------| | PII 明文存储于浏览器 | ❌ 手机号/邮箱/CA标识 | 违反 PIPL 数据最小化 | | Cookie 同意横幅 | ❌ 未发现 | 不适用(政务网站) | | 隐私政策 | 未检查 | — | --- ## Ch15. 移动端/PWA 安全 | 检查项 | 状态 | |--------|------| | Service Worker | ✅ 未注册(无劫持风险) | | Web Manifest | ✅ 未使用(非 PWA) | | IndexedDB | ✅ 未使用 | | Cache Storage | ✅ 未使用 | | Permissions | ✅ 全部为 prompt 状态 | **结论**:不是 PWA 应用,Ch15 相关攻击面不存在。 --- ## Ch16. 社会工程学防护 | 检查项 | 状态 | 风险 | |--------|------|------| | SPF | ❌ 未配置 | 可伪造政府邮件 | | DKIM | ❌ 未配置 | 可伪造政府邮件 | | DMARC | ❌ 未配置 | 🔴 **可伪造 @czt.fujian.gov.cn 邮件** | | PII 泄露 → 社工 | 手机号/邮箱可被 XSS 提取 | 🔴 钓鱼攻击可行 | --- ## 全量风险评级矩阵 ### 🔴 紧急 / Critical(立即修复) | # | 漏洞 | 章节 | CVSS估 | |---|------|------|--------| | C-01 | TLS 使用 RC4-MD5 弱密码套件 | Ch4/Ch12 | 7.5+ | | C-02 | JWT Token 存储于 localStorage | Ch2/Ch5 | 8.0 | | C-03 | PII 明文存储于 sessionStorage | Ch2/Ch14 | 7.5 | | C-04 | Nacos 8848 端口对公网开放 | Ch7 | 9.0 | | C-05 | OAuth 重定向使用 HTTP | Ch4/Ch5 | 8.0 | ### 🔴 高危 / High(一周内修复) | # | 漏洞 | 章节 | CVSS估 | |---|------|------|--------| | H-01 | 登录接口无暴力破解防护 | Ch5/Ch9 | 7.5 | | H-02 | 主页缺失所有安全响应头 | Ch4 | 6.5 | | H-03 | 无 DMARC/SPF/DKIM 邮件保护 | Ch16/Ch7 | 7.0 | | H-04 | Cookie 缺少 HttpOnly/Secure/SameSite | Ch2 | 7.0 | | H-05 | SM4/RSA 密钥在 config.js 暴露 | Ch12 | 6.5 | | H-06 | 不支持 TLS 1.3 | Ch4 | 5.5 | ### 🟡 中危 / Medium(一月内修复) | # | 漏洞 | 章节 | |---|------|------| | M-01 | CORS Access-Control-Allow-Headers: * | Ch3 | | M-02 | 缺少 Anti-CSRF Token | Ch3 | | M-03 | jQuery 1.12.4 CVE | Ch8 | | M-04 | Actuator 端点可公网触达 | Ch7 | | M-05 | 非标端口 8080/9090/8090 暴露 | Ch7 | | M-06 | 弱密码校验被关闭 | Ch5 | | M-07 | Token 有效期 7h 过长 | Ch5 | | M-08 | WebSocket /ws 端点暴露 | Ch3 | | M-09 | JSONP 端点泄露认证状态 | Ch3 | | M-10 | 主页可被 iframe 嵌入(点击劫持) | Ch3 | | M-11 | 错误日志存 localStorage | Ch13 | | M-12 | DNS 无 DNSSEC / CAA | Ch7 | | M-13 | OAuth state 参数可预测 | Ch5 | | M-14 | 无 PKCE 保护 | Ch5 | | M-15 | 调试信息(debug/loglevel)留存生产环境 | Ch13 | --- ## P0 紧急修复路线图 ``` 今日 ────────────────────────────────────────── │ 1. 🔒 TLS: 禁用 RC4/MD5,仅允许 AES-GCM + ChaCha20 │ 2. 🔒 封禁 Nacos 8848/9848 端口公网访问 │ 3. 🔒 OAuth 重定向强制 HTTPS │ 4. 🔒 Token 迁移至 HttpOnly + Secure + SameSite Cookie │ 一周内 ──────────────────────────────────────── │ 5. 清除 sessionStorage PII │ 6. 配置 HSTS + CSP + X-Frame-Options │ 7. 实施登录限速 + 账户锁定 │ 8. 配置 SPF/DKIM/DMARC 邮件保护 │ 9. 启用 TLS 1.3 │ 一月内 ──────────────────────────────────────── │ 10. 升级 jQuery 至 3.7+ │ 11. Actuator 移至内网 │ 12. CORS 精确白名单 │ 13. Token 有效期 → 30 分钟 + Refresh Token │ 14. 实施 OAuth PKCE + 随机 state │ 15. 移除生产环境调试信息 │ 三月内 ──────────────────────────────────────── │ 16. CSP 精细化 + SRI │ 17. DNSSEC 签名 │ 18. CAA DNS 记录 │ 19. 安全日志集中化(移除 localStorage 日志) │ 20. 引入 WAF 规则白名单化 ```