# 深度渗透测试报告 > **测试时间**: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 端口已对外开放**,意味着: 1. 攻击者可以从特定网络位置(如同运营商内网)尝试连接。 2. 如果后续配置变更导致 Nacos 监听 `0.0.0.0`,将立即暴露所有微服务配置。 3. 即使 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 | 敏感文件直接泄露 | 🟢 低危 | 未发现 | --- ## 十、紧急修复建议 ### ⚡ 立即执行(今日内) 1. **封禁 Nacos 端口**:防火墙/安全组立刻对 `8848, 9848, 9849` 端口的公网入站规则设为 DENY。 2. **封禁非标端口**:`8080, 9090, 8090` 等开发/管理端口对公网 DENY。 3. **实施登录限速**:API 网关层配置请求速率限制(如 OpenResty `limit_req`)。 ### 🔧 一周内修复 4. 将 Actuator 端点移至内网专用端口,从公网入口完全摘除。 5. 配置 CORS `Access-Control-Allow-Headers` 精确白名单。 6. OAuth callback 增加 `state` 参数的 CSRF 防验证。