- 靶场环境: 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
7.0 KiB
7.0 KiB
深度渗透测试报告
测试时间:2026-03-10 测试目标:
zfcg.czt.fujian.gov.cn及关联 IP 节点
一、SQL 注入探测
测试对象
POST /gateway/gp-auth-center/rest/v2/login/account
测试 Payload
| # | Payload | 预期响应 | 实际响应 |
|---|---|---|---|
| 1 | username: admin'-- |
报错或异常 | 空响应(静默丢弃) |
| 2 | username: admin" OR 1=1-- |
返回数据 | 空响应 |
| 3 | username: 1 UNION SELECT 1,2,3-- |
报错 | 空响应 |
分析
- 登录接口对畸形请求不返回任何内容,表明前置 WAF 或网关层对包含 SQL 注入特征的请求进行了静默拦截(DROP)。
- 风险等级:🟢 低(当前有效防护),但建议后端同步实施参数化查询 + 输入校验。
二、JWT Token 结构分析
发现
- Token 类型为标准 JWT(
access_token),通过 OAuth 2.0 Authorization Code Flow 签发。 - Token 存储位置:Cookie + localStorage(参见前端报告 F-01)。
- JWT 签名算法待确认——需要实际登录态下的 Token 样本才能完成解码分析。
风险
- 如果使用 HS256 弱密钥签名,攻击者可暴力猜解密钥并伪造任意身份 Token。
三、Spring Boot Actuator 暴露
测试结果
| 端点路径 | HTTP 状态码 | 保护级别 |
|---|---|---|
/gateway/actuator |
401 | Nginx Basic Auth |
/gateway/actuator/health |
401 | Nginx Basic Auth |
/gateway/actuator/info |
401 | Nginx Basic Auth |
/gateway/actuator/beans |
401 | Nginx Basic Auth |
/gateway/actuator/mappings |
401 | Nginx Basic Auth |
/gateway/actuator/env |
403 | 额外封锁 |
分析
- Actuator 端点已确认部署并可从公网触达。当前通过 Nginx Basic Auth 做了基础认证保护(401)。
/actuator/env单独被 403 封禁,说明运维团队知道此端点会泄露数据库密码等敏感配置,但只封了这一个。- 风险等级:🟡 中危 — 如果 Basic Auth 使用弱密码(如
admin:admin),攻击者可直接读取/actuator/mappings获取全部 API 路由映射,/actuator/beans获取所有 Spring Bean,/actuator/health获取中间件连接状态。 - 建议:将所有 Actuator 端点从公网完全移除,仅通过内网或 VPN 访问。
四、🔴 Nacos 服务注册中心 8848 端口对外暴露
Caution
这是本次评估中发现的最严重隐患之一。
端口探测结果
| IP | 端口 | TCP 状态 | HTTP 响应 |
|---|---|---|---|
112.54.45.252 |
8848 | OPEN | 空(无 HTTP 应答或内层白名单) |
120.35.30.176 |
8848 | OPEN | 空 |
114.115.172.176 |
8848 | OPEN | 空 |
分析
- Nacos 是微服务架构的核心中枢组件,存储了所有微服务的注册地址、配置文件(含数据库密码、Redis 密码、密钥等)。
- 虽然当前 HTTP 请求返回空(可能 Nacos 仅监听内网网卡或有 IP 白名单),但 TCP 端口已对外开放,意味着:
- 攻击者可以从特定网络位置(如同运营商内网)尝试连接。
- 如果后续配置变更导致 Nacos 监听
0.0.0.0,将立即暴露所有微服务配置。 - 即使 HTTP 不响应,Nacos 的 gRPC 端口(通常 8848+1000=9848)也可能可以利用。
- 建议:立即在防火墙/安全组封禁 8848、9848、9849 端口的公网访问。
五、其他暴露端口的衍生服务
非标端口扫描结果
| IP | 端口 | HTTP 状态 | 说明 |
|---|---|---|---|
120.35.30.176 |
9090 | 502 Bad Gateway | 反向代理后端服务异常,暴露了内部代理架构 |
114.115.172.176 |
8090 | 400 Bad Request | HTTP 服务存在但拒绝无效请求 |
风险
502响应确认了 9090 端口背后有一个反向代理服务,只是当前后端不可达。一旦后端恢复,对应服务将直接对公网暴露。- 建议:立即封禁非标端口 9090、8090 的公网访问。
六、OAuth 流程安全测试
6.1 开放重定向测试
- 测试伪造
authorization_code_callback时,服务端返回500 Internal Server Error。 - 分析:服务端对无效授权码抛出了异常而非静默忽略。虽然未成功重定向到恶意地址,但 500 错误表明错误处理不够优雅。
6.2 CORS 跨域配置
- 使用
Origin: https://evil.com探测:- 网关未回显
Access-Control-Allow-Origin: evil.com(✅ 安全)。 - 但存在
Access-Control-Allow-Headers: *(🟡 过宽)。
- 网关未回显
- 风险等级:🟡 中危 — Headers 通配符允许自定义请求头,可能被利用绕过部分 CSRF 防护。
七、登录接口暴力破解防护测试
测试方法
连续发送 5 次使用不同用户名和错误密码的登录请求。
结果
| 尝试次数 | HTTP 状态码 | 是否被阻断 |
|---|---|---|
| 1 | 302 | ❌ |
| 2 | 302 | ❌ |
| 3 | 302 | ❌ |
| 4 | 302 | ❌ |
| 5 | 302 | ❌ |
分析
- 5 次快速连续请求均返回 302(重定向到 OAuth 流程),无任何限速或锁定机制生效。
- 风险等级:🔴 高危 — 攻击者可无限制发起密码喷洒或暴力破解攻击。
- 建议:实施 IP 级别限速(如 5 次/分钟)+ 账户级别锁定(如 5 次失败后锁定 30 分钟)。
八、信息泄露深度探测
敏感文件扫描
对主站执行了 25+ 个常见敏感路径探测(.env, .git/config, backup.sql, WEB-INF/web.xml 等),均返回 404 或 403。
- 结论:✅ 无直接敏感文件泄露。
Swagger API 文档
/gateway/swagger-resources返回 403(已封锁)。- 结论:已做封禁处理。
九、深度渗透风险总结矩阵
| 编号 | 风险项 | 严重程度 | 状态 |
|---|---|---|---|
| P-01 | Nacos 8848 端口对公网开放 | 🔴 紧急 | TCP OPEN |
| P-02 | 登录接口无暴力破解防护 | 🔴 高危 | 已验证 |
| P-03 | Actuator 端点可公网触达 | 🟡 中危 | 401 Basic Auth |
| P-04 | 非标端口 9090/8090 暴露 | 🟡 中危 | 502/400 |
| P-05 | CORS Headers 通配符 | 🟡 中危 | 已确认 |
| P-06 | OAuth 错误处理非优雅降级 | 🟡 中危 | 500 错误 |
| P-07 | SQL 注入(WAF 防护中) | 🟢 低危 | 静默拦截 |
| P-08 | 敏感文件直接泄露 | 🟢 低危 | 未发现 |
十、紧急修复建议
⚡ 立即执行(今日内)
- 封禁 Nacos 端口:防火墙/安全组立刻对
8848, 9848, 9849端口的公网入站规则设为 DENY。 - 封禁非标端口:
8080, 9090, 8090等开发/管理端口对公网 DENY。 - 实施登录限速:API 网关层配置请求速率限制(如 OpenResty
limit_req)。
🔧 一周内修复
- 将 Actuator 端点移至内网专用端口,从公网入口完全摘除。
- 配置 CORS
Access-Control-Allow-Headers精确白名单。 - OAuth callback 增加
state参数的 CSRF 防验证。