初始化: 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
这个提交包含在:
hao
2026-03-16 17:10:23 -07:00
当前提交 cda31e86c7
修改 33 个文件,包含 6072 行新增0 行删除

查看文件

@@ -0,0 +1,430 @@
# 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 规则白名单化
```