渗透测试|某单位从敏感三要素泄露到接管管理员的漏洞挖掘之旅
字数 2015 2025-08-30 06:50:11
渗透测试实战:从敏感信息泄露到管理员接管全流程解析
0x1 前言
一、渗透测试背景
- 项目类型:与市网信办合作的渗透测试服务项目
- 测试范围:全市多个政企单位和学校的资产
- 测试特点:资产数量庞大,测试难度相对较低
- 法律声明:所有测试均获得合法授权,漏洞已全部修复
二、资产整理方法论
-
资产收集:
- 接收甲方提供的资产表格(Excel/TXT格式)
- 常见资产类型:Web应用、APP、小程序
- 示例TXT资产格式:
http://example1.com https://example2.edu.cn 192.168.1.100:8080
-
文档管理:
- 建立统一文件夹结构
- 分类存放:授权文件、资产清单、漏洞报告模板
- 按漏洞类型分目录:Web漏洞、APP漏洞、小程序漏洞
0x2 漏洞一:短信轰炸漏洞
一、纵向轰炸(单手机号高频发送)
-
漏洞发现:
- 目标:某人力资源管理局微信小程序
- 测试点:手机验证码登录接口
-
绕过技巧:
- 初始限制:60秒内只能发送1次验证码
- 绕过方法:在手机号后添加特殊字符
- 有效字符:
@、空格、+86、逗号等 - 示例:
13888888888@ 13888888888,
- 有效字符:
-
自动化利用:
- 使用Burp Suite的Intruder模块
- 构建Payload集合:多种特殊字符组合
- 并发请求实现高频轰炸(每分钟可达数十条)
二、横向轰炸(多手机号同时发送)
-
绕过技巧:
- 参数构造方式:
phone=13888888888,13999999999 phone=13888888888&phone=13999999999 phone=13888888888,phone=13999999999 phone=13888888888&13999999999
- 参数构造方式:
-
实际利用:
- 可同时向多个手机号发送相同验证码
- 危害:知道他人手机号即可获取其验证码
- 结合信息泄露可越权登录高权限账号
三、漏洞总结
-
危害评级标准:
- 企业SRC:通常接收每分钟15/30条以上的案例
- 政务系统:危害更大,更容易被接收
-
防御建议:
- 严格的频率限制(如1分钟1条)
- 手机号格式严格校验
- 增加图形验证码或行为验证
0x3 漏洞二:SessionKey三要素泄露
一、未授权登录漏洞
-
工具准备:
- 解密工具:wx_sessionkey_decrypt
- BurpSuite插件:BurpAppletPentester
-
漏洞利用步骤:
- 抓取微信小程序登录数据包(含session_key、iv、encryptedData)
- 使用工具解密获取原始手机号
- 修改数据包中手机号为目标号码(如管理员手机号)
- 重新加密并替换原始数据包实现未授权登录
-
实际案例:
- 目标:某大学校园服务小程序
- 发现接口泄露教师通讯录(含手机号)
- 通过替换session_key登录管理员账号
二、弱口令与信息泄露
-
Web端发现:
- 从小程序Host发现Web管理系统(若依框架)
- 尝试手机号+常见弱口令(如123456)成功登录
-
敏感数据泄露:
- 后台包含全校师生个人信息
- 包括:身份证号、手机号、学工号等
0x4 漏洞三:JWT攻击
一、密钥爆破攻击
-
漏洞发现:
- 目标小程序使用JWT进行身份验证
- 通过jwt.io解析Token结构:
{ "role": "appUser", "exp": 1747377338, "userId": "xxxxxxxxxxxxxxxxxx", "user_key": "xxxxx-xxxx-xxxx-xxxx", "username": "1xxxxxxxxx79" }
-
爆破方法:
- 使用自定义脚本爆破JWT密钥
- 成功爆破出密钥:
123456 - 使用密钥伪造任意用户Token
二、None算法绕过
-
攻击工具:
-
测试方法:
python jwt_tool.py <JWT值> -X a- 生成4种None算法变体
- 逐个尝试替换原始Token
-
响应分析:
- 401:签名校验失败
- 200:攻击成功
- {"error":"alg not allowed"}:需尝试其他攻击方式
0x5 漏洞四:OAuth2.0漏洞
一、漏洞原理
- 第三方登录缺少二次确认
- 扫描二维码即可直接绑定账号
- 可制作钓鱼页面诱导用户扫描
二、实际案例
-
漏洞场景:
- 微信公众号绑定功能
- 宣传性网站登录系统
-
利用方法:
- 构造虚假活动页面
- 诱导用户扫描绑定二维码
- 获取用户账号控制权
0x6 漏洞五:Jeecg框架漏洞
一、框架简介
- 基于SpringBoot的低代码开发平台
- 官网:jeecg.com
- 常见组件:Online表单、报表设计、流程设计等
二、综合漏洞利用
-
利用工具:
- jeecg漏洞利用工具
- GUI界面,集成多个历史漏洞
-
接口信息泄露:
- 发现
tableName参数 - FUZZ测试获取敏感表名
- 示例泄露接口:
/api/table/list?tableName=sys_user
- 发现
-
SQL注入漏洞:
- 有效Payload:
updatexml(1,concat(0x7e,user(),0x7e),1)
- 有效Payload:
三、权限提升技巧
-
账号注册:
- 利用
register接口创建普通账号
- 利用
-
提权操作:
- 查询管理员ID和自身用户ID
- 使用提权POC:
POST /jeecg-boot/sys/user/addSysUserRole HTTP/1.1 { "roleId":"管理员角色ID", "userIdList":["自己的用户ID"] }
-
常见弱口令:
admin/123456 jeecg/123456
四、其他攻击面
-
敏感接口:
/v2/api-docs /swagger-ui.html /env /actuator -
特征关键字:
jeecg/ api/sys/ sys/user
0x7 总结与建议
一、渗透测试经验
- 资产庞大时漏洞发现率更高
- 框架类系统存在大量已知漏洞
- 接口FUZZ是重要突破口
二、防御建议
-
基础防护:
- 严格的身份验证机制
- 合理的权限控制
- 输入输出过滤
-
框架安全:
- 及时更新框架版本
- 修改默认配置和接口路径
- 禁用不必要的功能接口
-
监控审计:
- 异常请求监控
- 敏感操作日志记录
- 定期安全评估
三、学习建议
- 漏洞复现:搭建测试环境实践各类漏洞
- 工具掌握:熟练使用文中提到的各类工具
- 持续学习:关注框架漏洞的最新动态
注:本文所有漏洞均已修复,仅供学习参考。实际测试必须获得合法授权。