记一次对诈骗app渗透测试
字数 1745 2025-09-01 11:25:54
诈骗APP渗透测试实战教学文档
项目背景
接到对某诈骗APP进行渗透测试的任务,目标是获取系统权限并收集证据。该APP需要邀请码才能注册使用,通过社工手段获取邀请码后成功注册并登录系统。
渗透测试过程
1. APP端漏洞挖掘
1.1 用户个人信息遍历漏洞
测试步骤:
- 配置WiFi代理,使用Burp Suite监听端口
- 对APP功能点进行抓包
- 发现包含用户信息的数据包
- 修改
fieid和user_id参数获取更多用户信息
漏洞详情:
- 通过参数修改可获取用户手机号、姓名、金额等敏感信息
- 存在批量获取用户数据的风险
修复建议:
- 实施严格的用户权限控制
- 对敏感数据接口增加身份验证
- 使用参数化查询防止数据泄露
1.2 系统信息泄露漏洞
测试步骤:
- 在
mobile参数后添加单引号 - 触发系统报错信息
漏洞详情:
- 泄露ThinkPHP版本信息
- 泄露数据库账号密码
- 泄露系统绝对路径
- 暴露疑似后台地址(但无法直接访问)
修复建议:
- 关闭错误信息显示
- 修改默认数据库账号密码
- 使用自定义错误页面
1.3 SQL注入漏洞A
测试步骤:
- 利用报错注入技术
- 获取数据库名称
漏洞详情:
- 通过报错注入可获取数据库信息
- 由于报错信息已泄露数据库信息,此漏洞影响相对较小
修复建议:
- 使用预处理语句
- 实施输入验证和过滤
- 限制数据库权限
1.4 SQL注入漏洞B
测试详情:
- 与SQL注入A类似,使用相同数据库
- 未展示具体细节
2. Web端漏洞挖掘
2.1 用户枚举和弱口令
测试步骤:
- 尝试使用APP账号密码登录Web端失败
- 确认APP和Web端使用不同数据库
- 尝试注册但Web版本过旧无法注册
- 使用APP泄露的手机号进行枚举
- 编写Python脚本批量测试弱口令
漏洞详情:
- 成功枚举出部分有效用户账号
- 发现弱口令账户
- 登录后功能与APP端相同
修复建议:
- 实施账户锁定机制
- 强制使用复杂密码
- 增加验证码防护
2.2 Web端系统敏感信息泄露
测试步骤:
- 在
mobile参数后添加单引号 - 触发系统报错
漏洞详情:
- 泄露Web端数据库账户密码
- 泄露系统绝对路径
3. 后台系统漏洞挖掘
测试步骤:
- 尝试访问疑似后台地址
https://admin.xxx.xx/失败 - 进行全端口扫描和目录探测
- 发现Cloudflare安全防护
- 尝试XFF头绕过
测试详情:
- 编写Python脚本提取APP端用户登录IP
- 尝试构造XFF白名单IP绕过Cloudflare
- 绕过尝试失败
4. 二维码系统漏洞挖掘
测试步骤:
- 进行敏感目录探测
- 发现服务器JS文件泄露
- 对JS文件进行审计
测试结果:
- 未发现可利用漏洞
5. 文件上传导致XSS漏洞
测试步骤:
- 尝试文件上传功能
- 发现SpringBoot框架不解析JSP木马
- 点击预览触发XSS漏洞
- 在GitHub找到系统源码进行审计
漏洞详情:
- 存在存储型XSS漏洞
- 文件上传功能受限
修复建议:
- 实施文件类型检查
- 对用户输入进行过滤
- 设置Content-Security-Policy
6. 未授权文件上传漏洞
测试步骤:
- 对系统进行弱口令、SQL注入等测试
- 在GitHub找到开源代码
- 发现系统为二次开发版本
- 审计源码发现未授权文件上传漏洞
测试详情:
- 构造数据包成功上传文件
- 但访问返回地址报404错误
- 可能因SpringBoot特性或安全防护导致
技术总结
成功利用的漏洞
- 用户个人信息遍历漏洞
- 系统信息泄露漏洞
- SQL注入漏洞
- 用户枚举和弱口令漏洞
- XSS漏洞
未成功利用的漏洞
- Cloudflare防护绕过
- 文件上传getshell
- 后台系统入侵
关键工具和技术
- Burp Suite抓包和重放
- Python脚本编写(批量提取、枚举测试)
- SQL注入技术
- 信息收集技术
- 源码审计
防御建议
- 输入验证:对所有用户输入进行严格验证和过滤
- 错误处理:关闭详细错误信息显示
- 权限控制:实施最小权限原则
- 安全配置:修改默认配置和密码
- WAF防护:部署Web应用防火墙
- 日志监控:建立完善的日志记录和监控机制
- 代码审计:定期进行安全代码审计
- 框架更新:保持框架和组件最新版本
附录:关键Payload示例
- 用户信息遍历:
GET /api/user?fieid=1&user_id=2 HTTP/1.1
Host: target.com
- SQL注入:
POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
mobile=123456789'&password=test
- XSS触发:
POST /upload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data
------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="test.html"
Content-Type: text/html
<script>alert(1)</script>