MoriartyPuth-Labs/EES-Security-Case-Study

GitHub: MoriartyPuth-Labs/EES-Security-Case-Study

一份针对政府 ANPR 出入境系统的全栈安全评估案例研究,详细记录了 IDOR、信息泄露等漏洞的发现过程与修复方案。

Stars: 0 | Forks: 0

# 🛡️ 全栈安全评估:柬埔寨政府 ANPR 出入境系统 (EES) ### 内政部 — 柬埔寨 [![目标](https://img.shields.io/badge/Target-EES_ANPR_System-blue?style=for-the-badge&logo=globe)](https://ees.interior.gov.kh/client) [![Web](https://img.shields.io/badge/Surface-Web_API-orange?style=for-the-badge&logo=springboot)]() [![移动端](https://img.shields.io/badge/Surface-Android_App-green?style=for-the-badge&logo=android)]() [![严重程度](https://img.shields.io/badge/Severity-Critical_7.5%2F10-red?style=for-the-badge)]() [![状态](https://img.shields.io/badge/Status-Patched_%26_Verified-success?style=for-the-badge&logo=checkmarx)]() [![披露](https://img.shields.io/badge/Disclosure-Responsible-blueviolet?style=for-the-badge)]()
## 📋 概述 本案例研究记录了针对柬埔寨政府 **自动车牌识别 (ANPR)** 系统的全栈安全评估,涵盖其 **后端 Web API** 和 **配套的 Android 应用程序**。此次评估在两个攻击面上均发现了严重漏洞,包括无需身份验证即可访问并暴露执法人员数据的 API、可公开访问的 Spring Boot Actuator,以及指向同一后端基础设施的多项移动端安全弱点。 ## 🎯 评估范围 | 攻击面 | 目标 | 方法 | |---------------|---------------------------------------------|---------------------| | Web API | `http://175.100.74.227:1234/api/v1/` | 黑盒,非侵入式 | | Web 前端 | `https://ees.interior.gov.kh/client` | 被动侦察 | | Android 应用 | `com.example.gov_reg` (v0.1.0) | 静态分析 (MobSF v4.5.0) | ## 🗺️ 攻击面概览 ``` ┌─────────────────────────────────────────────────────────────┐ │ EES ANPR SYSTEM │ │ │ │ [Android App] [Web Frontend] │ │ com.example.gov_reg → ees.interior.gov.kh/client │ │ │ │ │ │ └───────────┬──────────────┘ │ │ ▼ │ │ [Spring Boot API :1234] │ │ /api/v1/bureaus/{id} │ │ /api/v1/anpr/{id} │ │ /actuator/env │ │ /actuator/mappings │ └─────────────────────────────────────────────────────────────┘ ``` ## 🔴 Web API 发现 ### 阶段 1 — 侦察 被动指纹识别揭示: - 通过 `X-Application-Context` 响应头发现 **Spring Boot** - **Nginx** 作为反向代理(在 `Server:` 头中暴露) - API 在端口 `1234` 上的 `/api/v1/` 命名空间下进行版本控制 - 初始探测不需要身份验证头 ### 阶段 2 — 端点模糊测试 使用 [Bubble-Scanner](https://github.com/MoriartyPuth/bubble-scanner)(一款为高速 JSON 解析和 IDOR 验证而构建的自定义自动化工具)映射了整个 `/api/v1/` 命名空间。 **主要特性:** - 通过递增整数,对 100 多个局/部门层级结构进行递归抓取 - 针对高棉文字符标识符和车牌号格式的正则表达式提取器 - 用于可预测 `GDDTM` 请求字符串暴力破解的序列生成器 ### 阶段 3 — 漏洞发现 #### 不安全的直接对象引用 (IDOR) ANPR 记录和组织单元使用连续的整数进行索引。无需任何身份验证。 ``` #!/bin/bash # 通过 IDOR 进行的局层级枚举 (补丁前) TARGET="http://175.100.74.227:1234/api/v1/bureaus" for id in {1..100}; do status=$(curl -s -o /dev/null -w "%{http_code}" "$TARGET/$id") if [ "$status" == "200" ]; then name=$(curl -s "$TARGET/$id" | jq -r '.name') echo "[+] Found Bureau $id: $name" fi done ``` 确认暴露的敏感单位包括 **网络犯罪局(ID 23)** 和 **警察履历办公室(ID 33)**。 **匿名化数据样本(补丁前):** ``` { "id": 17754, "requestId": "GDDTM20260406PR2312", "ownerName": "REDACTED_OFFICER_NAME", "plateNumber": "2A-XXXX", "bureauId": 33, "status": "APPROVED" } ``` #### 可预测的资源命名 请求 ID 遵循严格的模式 `GDDTM[YYYYMMDD]PR[Sequence]`,从而能够对整个内政部的所有停车许可活动进行时间序列枚举。 #### Spring Boot Actuator 暴露 `/actuator` 目录可公开访问,泄露了: - `/actuator/env` — 环境变量(可能导致凭据泄露) - `/actuator/mappings` — 完整的内部路由映射 - `/actuator/heapdump` — JVM 堆转储 ## 🟠 移动端应用程序发现 **应用程序:** `com.example.gov_reg` (Flutter/Dart, v0.1.0, minSdk 24) **工具:** MobSF v4.5.0 静态分析 **风险评分:** 42/100 — B 级(中等风险) ### 高危 | 发现 | 详情 | |--------|---------| | 调试证书 | 应用程序使用调试密钥库签名 —— 不适用于生产环境 | | 允许明文流量 | `android:usesCleartextTraffic="true"` —— 允许未加密的 HTTP 请求 | | 低 minSdk (API 24) | 使应用程序面临较旧版本 Android 漏洞的风险 | ### 中危 / 警告 | CWE | 发现 | |-----|---------| | CWE-312 | 源代码中存在硬编码机密 —— 潜在的 API 密钥/凭据 | | CWE-330 | 不安全的随机数生成 | | CWE-276 | 不安全的外部存储权限 | ### 🔗 跨攻击面风险 (Web + 移动端) ## 🔧 修复与补丁验证 ### Web API(由 MOI IT 团队应用) | 攻击向量 | 已应用的修复 | |--------|-------------| | `/api/v1/**` 上的 IDOR | 认证墙:在所有子路径上强制执行 `authenticated()` | | Actuator 暴露 | 配置 Nginx 在所有 `/actuator` 路径上返回 `405` | | 搜索枚举 | Controller 更新为无论查询内容如何均返回 `[]` | | 局/职位端点 | 应用了最终的端点锁定 | ### 移动端(建议) | 发现 | 建议 | |--------|----------------| | 调试证书 | 在发布前使用生产密钥库重新签名 | | 明文流量 | 设置 `usesCleartextTraffic="false"`,强制使用 TLS/HTTPS | | CWE-312 | 将机密信息移至环境变量或 Android Keystore | | CWE-330 | 在所有加密操作中替换为 `SecureRandom` | | CWE-276 | 将文件存储限制在应用程序内部目录 | ## 🎖️ 结果 | 指标 | 结果 | |--------|--------| | 报告提交 | 2026 年 4 月 6 日 | | 系统锁定 | 24 小时内 | | 补丁验证 | 2026 年 4 月 7 日 | | 披露类型 | 负责任的 —— 与 MOI IT 协同进行 | | 数据泄露 | 补丁后泄露 0 条记录 | ## 🛠️ 使用的工具 | 工具 | 用途 | |------|---------| | [Bubble-Scanner](https://github.com/MoriartyPuth/bubble-scanner) | 自定义 IDOR 爬虫与 JSON 解析器 | | MobSF v4.5.0 | Android 静态分析 | | curl + jq | 手动 API 探测 | | Nginx headers | 服务器指纹识别 | ## 👤 作者
**Eav Puthcambo**
AUPP 网络安全项目
金边美国大学 [![GitHub](https://img.shields.io/badge/GitHub-MoriartyPuth--Labs-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/MoriartyPuth-Labs)
标签:Android应用安全, ANPR系统, API安全, CISA项目, IDOR漏洞, JSON输出, Spring Boot, Web安全, 云安全监控, 信息泄露, 全栈安全评估, 应用安全, 执法数据, 政府安全, 数据泄露, 数据隐私, 无线安全, 未授权访问, 案例研究, 漏洞复现, 目录枚举, 移动安全, 网络安全, 蓝队分析, 负责任披露, 足迹分析, 车联网安全, 隐私保护, 静态分析, 黑盒测试