渗透测试|某单位从敏感三要素泄露到接管管理员的漏洞挖掘之旅
字数 2237 2025-09-01 11:26:17

渗透测试实战:从敏感信息泄露到管理员接管

0x1 前言

一、渗透测试概述

本次渗透测试项目是与市网信办合作进行的,测试范围涵盖多个政企单位和学校。由于资产数量庞大,测试相对容易。本文分享几个典型漏洞案例,为新手渗透测试人员提供实战经验。

重要声明:所有渗透测试均已获得合法授权,文中涉及漏洞均已修复。请勿进行未授权测试。

二、资产整理方法

  1. 将项目相关文件、资产和漏洞报告模板汇总在一个文件夹中
  2. 分类整理Web资产、APP和小程序漏洞
  3. 常见资产提供形式:
    • Excel表格
    • TXT文本文件(适用于少量Web资产)

0x2 漏洞一:短信轰炸漏洞

一、纵向轰炸(单手机号绕过)

测试目标:人力资源管理局微信小程序

测试步骤

  1. 在登录口输入手机号,使用Burp Suite抓取短信验证码发送数据包
  2. 第一次发送正常,第二次显示"短时间内不能重复发送"错误
  3. 尝试绕过限制:
    • 使用特殊字符:@、空格、+86、逗号等
    • 示例:13888888888@13888888888,

危害扩大

  1. 使用Burp Intruder模块进行批量爆破
  2. 添加多个绕过字符作为payload
  3. 实现每分钟发送大量验证码,消耗系统资源

二、横向轰炸(多手机号绕过)

测试方法

  1. 尝试多种多手机号格式:
    phone=13888888888,phone=13999999999
    phone=13888888888&phone=13999999999
    phone=13888888888,13999999999
    phone=13888888888&13999999999
    
  2. 成功实现双手机号同时接收相同验证码
  3. 利用此漏洞可越权登录其他账号(只需知道目标手机号)

三、短信轰炸总结

思维导图要点

  1. 测试点:登录口、注册口、找回密码等短信验证功能
  2. 绕过方法:
    • 特殊字符追加
    • 多手机号格式
    • 修改请求参数名
  3. 危害评估标准(企业SRC通常要求):
    • 每分钟15-30条以上视为有效漏洞

0x3 漏洞二:SessionKey三要素泄露

一、未授权登录

工具准备

  1. 独立解密工具:wx_sessionkey_decrypt
  2. Burp Suite插件:BurpAppletPentester

测试步骤

  1. 在大学校园小程序中找到手机号快捷登录功能
  2. 抓取登录数据包,发现包含SessionKey三要素
  3. 使用工具解密SessionKey
  4. 替换数据包中的手机号为管理员号码
  5. 重新加密并发送,实现未授权登录

二、弱口令+信息泄露

后续利用

  1. 将小程序host放到Web端访问,发现若依系统后台
  2. 使用获取的手机号尝试弱口令(如123456)
  3. 成功登录后台,获取大量学校个人敏感信息

0x4 漏洞三:JWT攻击

一、JWT密钥爆破

测试步骤

  1. 在小程序数据包中发现JWT令牌
  2. 使用jwt.io解析令牌内容:
    • role: appUser(用户角色)
    • exp: 过期时间(Unix时间戳)
    • userId: 用户唯一标识
    • user_key: 用户密钥
    • username: 手机号
  3. 使用自定义脚本爆破JWT密钥(成功爆破出密钥"123456")
  4. 构造新的JWT令牌,修改:
    • 过期时间(延长有效期)
    • username(替换为目标手机号)
    • role(尝试改为admin)
  5. 替换原始数据包中的JWT值,实现越权访问

二、None算法绕过

工具使用

  1. 使用jwt_tool测试None算法漏洞
  2. 生成4种None算法变体:
    python jwt_tool.py <JWT值> -X a
    
  3. 响应分析:
    • 401 Unauthorized:签名校验失败
    • 200 OK:攻击成功
    • {"error":"alg not allowed"}:服务端禁用None算法

0x5 漏洞四:OAuth2.0漏洞

案例参考先知社区文章

漏洞原理

  1. 第三方授权登录(如微信扫码登录)
  2. 扫码后无需二次确认,直接绑定账号
  3. 可构造钓鱼攻击:诱导用户扫描恶意二维码

利用方法

  1. 在后台找到"微信绑定"功能
  2. 获取绑定二维码
  3. 制作钓鱼页面,诱导用户扫描
  4. 用户扫描后,攻击者账号与用户微信号绑定

0x6 漏洞五:Jeecg框架漏洞

一、框架简介

JeecgBoot是基于SpringBoot的低代码开发平台,常见漏洞包括:

  • 默认接口信息泄露
  • SQL注入
  • 权限绕过

官网:jeecg.com

二、综合利用工具

推荐工具:jeecg-利用工具

三、接口信息泄露

测试步骤

  1. 在大学缴费小程序中发现tableName关键字
  2. 尝试常见表名(如information_schema.tables
  3. 将host放到Web端访问,使用FindSomething插件扫描接口
  4. 发现敏感接口泄露400+数据表信息
  5. 获取大量身份证、手机号、姓名等敏感信息

四、SQL注入

Payload示例

updatexml(1,concat(0x7e,user(),0x7e),1)

五、账号提权

操作流程

  1. 使用register接口注册普通账号
  2. 查询管理员admin的账户ID
  3. 查询自己账号的ID
  4. 使用提权POC:
    POST xxxxx/jeecg-boot/sys/user/addSysUserRole
    Content-Type: application/json
    
    {"roleId":"管理员角色ID","userIdList":["自己账号ID"]}
    
  5. 成功将普通账号提升为管理员

六、Jeecg小技巧

  1. 常见泄露接口

    /v2/api-docs
    /swagger-ui.html
    /env/
    /actuator/mappings
    /actuator/metrics
    
  2. 关键字识别

    • jeecg
    • /api/sys/
    • /sys/user
  3. 默认弱口令

    • admin/123456
    • jeecg/123456

0x7 总结

本次渗透测试共提交40-50个漏洞报告,主要发现:

  1. 框架系统默认弱口令
  2. 已知Nday漏洞(老系统未修复)
  3. 资产量大导致出洞率高

关键经验

  1. 小程序与Web端联动测试
  2. 接口FUZZ的重要性
  3. 合理使用自动化工具提高效率
  4. 漏洞链利用(如信息泄露→弱口令→提权)

防御建议

  1. 严格验证短信发送频率和格式
  2. 加强SessionKey保护机制
  3. JWT使用强密钥并禁用None算法
  4. OAuth2.0实现二次确认
  5. 自定义Jeecg默认接口和密码
渗透测试实战:从敏感信息泄露到管理员接管 0x1 前言 一、渗透测试概述 本次渗透测试项目是与市网信办合作进行的,测试范围涵盖多个政企单位和学校。由于资产数量庞大,测试相对容易。本文分享几个典型漏洞案例,为新手渗透测试人员提供实战经验。 重要声明 :所有渗透测试均已获得合法授权,文中涉及漏洞均已修复。请勿进行未授权测试。 二、资产整理方法 将项目相关文件、资产和漏洞报告模板汇总在一个文件夹中 分类整理Web资产、APP和小程序漏洞 常见资产提供形式: Excel表格 TXT文本文件(适用于少量Web资产) 0x2 漏洞一:短信轰炸漏洞 一、纵向轰炸(单手机号绕过) 测试目标 :人力资源管理局微信小程序 测试步骤 : 在登录口输入手机号,使用Burp Suite抓取短信验证码发送数据包 第一次发送正常,第二次显示"短时间内不能重复发送"错误 尝试绕过限制: 使用特殊字符: @ 、空格、 +86 、逗号等 示例: 13888888888@ 、 13888888888, 危害扩大 : 使用Burp Intruder模块进行批量爆破 添加多个绕过字符作为payload 实现每分钟发送大量验证码,消耗系统资源 二、横向轰炸(多手机号绕过) 测试方法 : 尝试多种多手机号格式: 成功实现双手机号同时接收相同验证码 利用此漏洞可越权登录其他账号(只需知道目标手机号) 三、短信轰炸总结 思维导图要点 : 测试点:登录口、注册口、找回密码等短信验证功能 绕过方法: 特殊字符追加 多手机号格式 修改请求参数名 危害评估标准(企业SRC通常要求): 每分钟15-30条以上视为有效漏洞 0x3 漏洞二:SessionKey三要素泄露 一、未授权登录 工具准备 : 独立解密工具: wx_ sessionkey_ decrypt Burp Suite插件: BurpAppletPentester 测试步骤 : 在大学校园小程序中找到手机号快捷登录功能 抓取登录数据包,发现包含SessionKey三要素 使用工具解密SessionKey 替换数据包中的手机号为管理员号码 重新加密并发送,实现未授权登录 二、弱口令+信息泄露 后续利用 : 将小程序host放到Web端访问,发现若依系统后台 使用获取的手机号尝试弱口令(如123456) 成功登录后台,获取大量学校个人敏感信息 0x4 漏洞三:JWT攻击 一、JWT密钥爆破 测试步骤 : 在小程序数据包中发现JWT令牌 使用 jwt.io 解析令牌内容: role: appUser(用户角色) exp: 过期时间(Unix时间戳) userId: 用户唯一标识 user_ key: 用户密钥 username: 手机号 使用自定义脚本爆破JWT密钥(成功爆破出密钥"123456") 构造新的JWT令牌,修改: 过期时间(延长有效期) username(替换为目标手机号) role(尝试改为admin) 替换原始数据包中的JWT值,实现越权访问 二、None算法绕过 工具使用 : 使用 jwt_ tool 测试None算法漏洞 生成4种None算法变体: 响应分析: 401 Unauthorized:签名校验失败 200 OK:攻击成功 {"error":"alg not allowed"}:服务端禁用None算法 0x5 漏洞四:OAuth2.0漏洞 案例参考 : 先知社区文章 漏洞原理 : 第三方授权登录(如微信扫码登录) 扫码后无需二次确认,直接绑定账号 可构造钓鱼攻击:诱导用户扫描恶意二维码 利用方法 : 在后台找到"微信绑定"功能 获取绑定二维码 制作钓鱼页面,诱导用户扫描 用户扫描后,攻击者账号与用户微信号绑定 0x6 漏洞五:Jeecg框架漏洞 一、框架简介 JeecgBoot是基于SpringBoot的低代码开发平台,常见漏洞包括: 默认接口信息泄露 SQL注入 权限绕过 官网: jeecg.com 二、综合利用工具 推荐工具: jeecg-利用工具 三、接口信息泄露 测试步骤 : 在大学缴费小程序中发现 tableName 关键字 尝试常见表名(如 information_schema.tables ) 将host放到Web端访问,使用FindSomething插件扫描接口 发现敏感接口泄露400+数据表信息 获取大量身份证、手机号、姓名等敏感信息 四、SQL注入 Payload示例 : 五、账号提权 操作流程 : 使用register接口注册普通账号 查询管理员admin的账户ID 查询自己账号的ID 使用提权POC: 成功将普通账号提升为管理员 六、Jeecg小技巧 常见泄露接口 : 关键字识别 : jeecg /api/sys/ /sys/user 默认弱口令 : admin/123456 jeecg/123456 0x7 总结 本次渗透测试共提交40-50个漏洞报告,主要发现: 框架系统默认弱口令 已知Nday漏洞(老系统未修复) 资产量大导致出洞率高 关键经验 : 小程序与Web端联动测试 接口FUZZ的重要性 合理使用自动化工具提高效率 漏洞链利用(如信息泄露→弱口令→提权) 防御建议 : 严格验证短信发送频率和格式 加强SessionKey保护机制 JWT使用强密钥并禁用None算法 OAuth2.0实现二次确认 自定义Jeecg默认接口和密码