ctfsec/pwnshop-mobile

GitHub: ctfsec/pwnshop-mobile

一个内置 47 个安全漏洞的 Android 电商靶场应用,覆盖 OWASP Mobile Top 10、LLM Top 10 与业务逻辑缺陷,专供移动渗透测试培训与 CTF 竞赛使用。

Stars: 1 | Forks: 0

PwnShop Mobile Logo

PwnShop Mobile

专为渗透测试培训设计的存在 intentional 漏洞的移动电商应用

Ibrahim Mutiu Olajide 构建 - r007sec | CTF Security

🌐 网页版  ·  📥 下载 APK

## 概述 PwnShop Mobile 是 [PwnShop Web](https://github.com/r007sec/pwnshop) 的 Android 配套应用——一个功能齐全的电子商务平台,故意构建了**47个有文档记录的安全漏洞**,涵盖 OWASP Mobile Top 10 (2024)、OWASP LLM Top 10 (2025) 以及现实世界的 API/业务逻辑缺陷。 它专为以下用途设计: - **CTF 竞赛** - 每个漏洞都有一个唯一的 PWN-ID 和难度评级 - **移动安全培训** - 针对 Android 特定攻击面的实践操作 - **安全意识研讨会** - 在安全环境中演示真实的攻击场景 - **渗透测试课程** - 具有买家、卖家和管理员工作流程的真实目标 ## 真实性体现 与普通的漏洞应用不同,PwnShop Mobile 还原了一个真实的尼日利亚电商平台(Jumia/Konga 风格),具有以下特点: - 实时 **VulnBank** 支付集成(存在漏洞的银行 API) - 真实的佣金计算、物流费用和按产品类别收取的 VAT - **Groq API** AI 聊天机器人,包含 10 个 LLM 特有的漏洞(提示词注入、过度代理、上下文泄露) - 三种不同的用户角色 - **买家**、**卖家**、**管理员** - 每种角色都有自己的攻击面 - 后端部署在 **Render** 上(常驻免费套餐)- 发起攻击无需进行本地设置 ## 漏洞摘要 | 类别 | 数量 | OWASP 映射 | |---|---|---| | OWASP Mobile Top 10 (2024) | 23 | M1–M10 | | OWASP LLM Top 10 (2025) | 10 | LLM01–LLM10 | | 业务逻辑与 API | 14 | OWASP API Top 10 | | **总计** | **47** | | | 难度 | 数量 | |---|---| | 简单 | 22 | | 中等 | 18 | | 困难 | 7 | ## 技术栈 | 层级 | 技术 | |---|---| | 移动框架 | React Native 0.81 + Expo SDK 54 | | 路由 | Expo Router (基于文件) | | 后端 | Node.js 22 + Express | | 数据库 | SQLite (故意未加密) | | 认证 | JWT (故意接受 `alg:none`) | | 密码 | MD5 (无加盐 - 故意的) | | AI 聊天机器人 | Groq API - LLaMA 3.3 70B | | 支付 | VulnBank API (故意存在漏洞) | | 构建 | EAS Build (Expo Application Services) | | 托管 | Render (免费套餐) | | 存储 | AsyncStorage 明文存储 (故意的) | | 存在漏洞的库 | Lodash 4.17.4 - CVE-2019-10744 | ## 快速开始 - 安装 APK **无需设置。** 后端已在运行。 1. 从 [Releases 页面](https://github.com/r007sec/pwnshop-mobile/releases) 下载最新的 APK 2. 在您的 Android 设备上启用 **安装未知来源应用** 权限 3. 安装并启动 PwnShop ## 从源代码构建 ### 前置条件 - Node.js 20+ - Expo CLI: `npm install -g expo-cli` - EAS CLI: `npm install -g eas-cli` ### 前端 (React Native) ``` git clone https://github.com/r007sec/pwnshop-mobile.git cd pwnshop-mobile npm install npx expo start ``` 该应用默认连接到实时后端。 若要指向本地后端,请编辑 `constants/config.js`: ``` export const CONFIG = { BASE_URL: "http://YOUR_LOCAL_IP:3001", API_URL: "http://YOUR_LOCAL_IP:3001", }; ``` ### 后端 (本地) ``` git clone https://github.com/r007sec/pwnshop-backend.git cd pwnshop-backend cp .env.example .env # fill in your values npm run dev ``` ### 构建 APK ``` eas build -p android --profile preview ``` ## 默认账户 | 角色 | 电子邮件 | 密码 | 备注 | |---|---|---|---| | 卖家 | `seller@pwnshop.com` | `password123` | 卖家控制台 + 产品 | | 买家 | `buyer@pwnshop.com` | `password123` | 购物 + 钱包 | 所有账户初始均拥有 **₦10,000 钱包余额**(欢迎奖金 - 其本身也是一个漏洞:PWN-A004)。 ## 应用功能 ### 买家 - 按分类、价格、品牌和评分浏览产品 - 搜索 (此处存在 SQL 注入 - PWN-M007) - 产品详情,包含图片库、配送区域选择器、评论 - 购物车,支持优惠码 (折扣篡改 - PWN-A005) - 通过 PwnShop 钱包或直接 VulnBank 支付结账 - 订单历史和配送跟踪 - 由 Groq 提供支持的 AI 聊天机器人 (10 个 LLM 漏洞) - 钱包:通过 VulnBank 充值,交易历史 - 双因素认证 (可绕过 - PWN-M021) - 推荐码系统 (奖金滥用 - PWN-A004) - 愿望清单 ### 卖家 - 卖家控制台:销售额、收益、待结算余额 - 添加/编辑/删除产品,支持多图上传 (路径遍历 - PWN-M008) - 销售历史,包含每笔订单的佣金明细 - 收益钱包:提现至 VulnBank 账户 - 卖家分析:按周/月统计的收入图表 ### 管理员 - 控制台:总收入 (物流 + 佣金 + VAT + 提现手续费) - 用户管理:更改角色、充值钱包、封禁/解封 - 订单管理:更改状态、解决争议 - 产品管理:推荐产品、闪购定价 - 卖家管理:批准/拒绝、授予认证徽章 - 优惠码管理:生成 `PWNS-XXXX-XXXX` 码 - 活动日志、安全日志、聊天日志、错误日志 - VulnBank 交易日志 (账号 + PIN 明文存储 - PWN-A014) - **实验室重置** - 清除所有运行时数据,用于全新的培训会话 ## 漏洞索引 ### OWASP Mobile Top 10 (2024) | ID | 漏洞 | 类别 | 难度 | |---|---|---|---| | PWN-M001 | APK 源码中硬编码的 Groq API 密钥 | M1 - 凭据使用不当 | 简单 | | PWN-M002 | 硬编码的数据库密码提交至 GitHub | M1 - 凭据使用不当 | 简单 | | PWN-M003 | Lodash 原型污染 - CVE-2019-10744 | M2 - 供应链 | 困难 | | PWN-M004 | 过时的 express-session - 会话固定 | M2 - 供应链 | 困难 | | PWN-M005 | JWT `alg:none` - 签名绕过 | M3 - 不安全的身份验证 | 中等 | | PWN-M006 | 可预测的 4 位 OTP,无锁定机制 | M3 - 不安全的身份验证 | 简单 | | PWN-M007 | 产品搜索中的 SQL 注入 | M4 - 输入验证 | 中等 | | PWN-M008 | 产品图片上传中的路径遍历 | M4 - 输入验证 | 中等 | | PWN-M009 | 无 TLS - WiFi 上的明文凭据 | M5 - 不安全的通信 | 简单 | | PWN-M010 | 无证书固定 - MITM 攻击 | M5 - 不安全的通信 | 中等 | | PWN-M011 | PII 和 JWT token 被写入设备日志 | M6 - 隐私控制 | 简单 | | PWN-M012 | VulnBank 凭据被静默复制到剪贴板 | M6 - 隐私控制 | 简单 | | PWN-M013 | APK 未混淆 - 源码完全可读 | M7 - 二进制保护 | 简单 | | PWN-M014 | WebView 加载任意 URL - 通过产品实现 XSS | M7 - 二进制保护 | 中等 | | PWN-M015 | 导出的 Android Activity - 无需登录的管理面板 | M8 - 安全配置错误 | 中等 | | PWN-M016 | 生产环境中激活了 Debug API 端点 | M8 - 安全配置错误 | 简单 | | PWN-M017 | AsyncStorage 明文中的 JWT token | M9 - 不安全的数据存储 | 简单 | | PWN-M018 | 已 root 设备上未加密的 SQLite 数据库 | M9 - 不安全的数据存储 | 中等 | | PWN-M019 | MD5 密码哈希 - 数秒内即可破解 | M10 - 加密不足 | 简单 | | PWN-M020 | AES-ECB 钱包加密 - 模式泄露 | M10 - 加密不足 | 困难 | | PWN-M021 | 通过响应操纵绕过 2FA | M3 - 不安全的身份验证 | 中等 | | PWN-M022 | 钱包在 Android 最近应用截图中可见 | M6 - 隐私控制 | 简单 | | PWN-M023 | 不安全的 Deep Link 绕过身份验证 | M8 - 安全配置错误 | 中等 | ### OWASP LLM Top 10 (2025) | ID | 漏洞 | 类别 | 难度 | |---|---|---|---| | PWN-L001 | 直接提示词注入 - 系统提示词泄露 | LLM01 | 简单 | | PWN-L002 | 通过恶意产品描述进行间接注入 | LLM01 | 中等 | | PWN-L003 | 通过 WebView 中未经验证的 LLM 输出实现存储型 XSS | LLM01 | 困难 | | PWN-L004 | 通过 LLM 上下文泄露敏感数据 (`process.env`) | LLM02 | 简单 | | PWN-L005 | 跨用户数据泄露 - 上下文中包含所有订单 | LLM02 | 简单 | | PWN-L006 | 过度代理 - 通过聊天充值钱包 | LLM06 | 困难 | | PWN-L007 | 通过越狱实现系统提示词泄露 | LLM07 | 中等 | | PWN-L008 | 通过上下文泛洪实现模型 DoS | LLM04 | 简单 | | PWN-L009 | 对话历史投毒 | LLM04 | 中等 | | PWN-L010 | 不安全的输出处理 - 通过聊天创建订单 | LLM05 | 困难 | ### 业务逻辑与 API | ID | 漏洞 | 难度 | |---|---|---| | PWN-A001 | 订单详情上的 IDOR - 顺序 ID | 简单 | | PWN-A002 | 大规模赋值 - 通过注册请求体瞬间成为管理员 | 简单 | | PWN-A003 | 结账时的客户端价格篡改 | 简单 | | PWN-A004 | 欢迎奖金端点滥用 - 无限积分 | 简单 | | PWN-A005 | 优惠折扣覆盖 - 订单总额为负数 | 中等 | | PWN-A006 | VulnBank 充值金额覆盖 - 无余额检查 | 中等 | | PWN-A007 | BOLA - 卖家编辑任何卖家的产品 | 中等 | | PWN-A008 | 无速率限制 - 暴力破解登录 | 简单 | | PWN-A009 | 冗长的错误信息暴露了完整的堆栈跟踪 | 简单 | | PWN-A010 | 产品评论中的存储型 XSS | 中等 | | PWN-A011 | 库存检查绕过 - 购买缺货商品 | 简单 | | PWN-A012 | 钱包提现上的竞态条件 | 困难 | | PWN-A013 | JWT 在登出时未失效 - 30 天有效期的 token | 中等 | | PWN-A014 | 损坏的函数级身份验证 - 用户访问管理员路由 | 中等 | ## 实验室重置 指导员可以重置所有运行时数据,而无需清除用户账户或产品: ``` POST /api/admin/reset-lab Authorization: Bearer Body: { "confirm": "RESET_PWNSHOP_LAB" } ``` ## 相关项目 | 项目 | 描述 | |---|---| | [PwnShop Web](
标签:Android安全, API安全, CISA项目, Expo, GNU通用公共许可证, JSON输出, MITM代理, Node.js, OPA, OWASP LLM Top 10, OWASP Top 10, React Native, Sysdig, XML 请求, 业务逻辑漏洞, 云资产清单, 安全开发, 漏洞修复, 漏洞靶场, 电子商务, 目录枚举, 移动安全, 网络安全培训, 自定义脚本, 逆向工程, 防御检测, 靶场