渗透测试 | 分享某次项目上的渗透测试漏洞复盘
字数 1976 2025-08-29 22:41:32

渗透测试实战案例教学文档

0x1 前言

项目背景

  • 与市网信办合作的渗透测试项目
  • 测试范围广泛:包含市政企单位和学校
  • 资产类型多样:Web资产、APP、小程序等
  • 所有发现的漏洞已修复,仅用于教学目的

准备工作

  1. 资产整理

    • 收集甲方提供的资产表格(Excel/TXT格式)
    • 分类整理Web资产、APP、小程序漏洞
    • 示例资产表格内容:
      http://example1.gov.cn
      http://example2.edu.cn
      app://com.example.app
      
  2. 授权文件

    • 确保获得合法渗透测试授权书
    • 明确测试范围和边界

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

纵向轰炸(同一手机号多次发送)

  1. 测试步骤

    • 定位手机验证码登录接口
    • 使用Burp Suite拦截发送验证码请求
    • 首次发送正常,第二次被限制
  2. 绕过技巧

    • 尝试特殊字符绕过:@、空格、+86、逗号等
    • 示例有效载荷:13800138000@13800138000,
  3. 自动化攻击

    • 使用Burp Intruder进行并发爆破
    • 配置多个绕过字符作为payload
    • 实现每分钟发送大量验证码

横向轰炸(不同手机号同时发送)

  1. 测试步骤

    • 拦截验证码发送请求
    • 修改手机号参数为双手机号格式:
      • 13800138000,15800158000
      • 13800138000@15800158000
  2. 漏洞利用

    • 使用卡二收到的验证码登录卡一账号
    • 潜在危害:越权登录高权限账号

防御建议

  • 后端严格验证手机号格式
  • 限制同一IP的发送频率
  • 增加图形验证码

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

漏洞原理

微信小程序SessionKey、iv、encryptedData三要素泄露导致未授权登录

利用工具

  1. 独立工具
    • wx_sessionkey_decrypt:https://github.com/mrknow001/wx_sessionkey_decrypt
  2. Burp插件
    • BurpAppletPentester:https://github.com/mrknow001/BurpAppletPentester

测试步骤

  1. 定位微信小程序手机号快捷登录功能
  2. 拦截登录请求,获取SessionKey三要素
  3. 使用工具解密获取手机号
  4. 替换数据包中的手机号为管理员号码
  5. 重放请求实现未授权登录

关联漏洞:弱口令

  1. 通过获取的手机号尝试常见弱口令
  2. 示例:手机号后六位123456admin123
  3. 成功登录后台获取敏感信息

0x4 漏洞三:JWT攻击

JWT爆破攻击

  1. 测试步骤

    • 拦截包含JWT令牌的请求
    • 使用jwt.io分析令牌结构
    • 爆破常见密钥(如123456)
    • 修改payload中的关键字段(如userID、role)
  2. payload结构分析

    {
      "role": "appUser",
      "exp": 1747377338,
      "userId": "xxxxxxxxxx",
      "user_key": "xxxx-xxxx",
      "username": "13800138000"
    }
    

None算法绕过

  1. 使用jwt_tool工具(https://github.com/ticarpi/jwt_tool)
  2. 生成四种None算法变体:
    python3 jwt_tool.py <JWT> -X a
    
  3. 依次尝试替换原始令牌

防御建议

  • 使用强密钥
  • 禁用None算法
  • 严格验证签名

0x5 漏洞四:OAuth2.0漏洞

漏洞原理

二维码扫描登录缺少二次确认,导致钓鱼攻击可能

测试步骤

  1. 定位第三方登录功能
  2. 获取登录二维码
  3. 制作钓鱼页面诱导扫描
  4. 攻击者账号被绑定到受害者账户

防御建议

  • 扫描后需用户确认
  • 记录登录设备信息
  • 设置绑定提醒

0x6 漏洞五:Jeecg框架漏洞

框架介绍

JeecgBoot:基于SpringBoot的低代码开发平台

综合利用工具

  • jeecg漏洞利用工具:https://github.com/MInggongK/jeecg-

常见漏洞

  1. 接口信息泄露

    • 通过tableName参数获取数据库表信息
    • 示例泄露接口:/api/table/list
  2. SQL注入

    • 测试tableName参数:
    tableName=sys_user where 1=1--
    
  3. 权限提升

    • 注册普通账号
    • 查找管理员ID
    • 使用提权接口:
    {
      "roleId": "admin_role_id",
      "userIdList": ["your_user_id"]
    }
    

其他利用技巧

  1. 常见敏感接口

    • /jeecg-boot/**
    • /api/**
    • /sys/user/list
  2. 默认弱口令

    • admin/123456
    • jeecg/jeecg123
    • test/123456

0x7 总结

渗透测试要点

  1. 资产收集:全面收集Web、APP、小程序等资产
  2. 漏洞验证:从低危漏洞入手,逐步深入
  3. 关联利用:组合多个漏洞提升危害等级

防御建议

  • 定期安全评估
  • 及时修复已知漏洞
  • 加强开发人员安全意识培训

注意事项

  • 所有测试必须获得授权
  • 敏感信息需脱敏处理
  • 测试完成后及时提交报告

附录:工具列表

  1. Burp Suite
  2. wx_sessionkey_decrypt
  3. jwt_tool
  4. jeecg漏洞利用工具
  5. HAE插件(Burp历史请求分析)

参考链接

  • OAuth2.0漏洞详解:https://xz.aliyun.com/news/16153
  • Jeecg官网:https://www.jeecg.com/
渗透测试实战案例教学文档 0x1 前言 项目背景 与市网信办合作的渗透测试项目 测试范围广泛:包含市政企单位和学校 资产类型多样:Web资产、APP、小程序等 所有发现的漏洞已修复,仅用于教学目的 准备工作 资产整理 : 收集甲方提供的资产表格(Excel/TXT格式) 分类整理Web资产、APP、小程序漏洞 示例资产表格内容: 授权文件 : 确保获得合法渗透测试授权书 明确测试范围和边界 0x2 漏洞一:短信轰炸漏洞 纵向轰炸(同一手机号多次发送) 测试步骤 : 定位手机验证码登录接口 使用Burp Suite拦截发送验证码请求 首次发送正常,第二次被限制 绕过技巧 : 尝试特殊字符绕过: @ 、空格、 +86 、逗号等 示例有效载荷: 13800138000@ 、 13800138000, 自动化攻击 : 使用Burp Intruder进行并发爆破 配置多个绕过字符作为payload 实现每分钟发送大量验证码 横向轰炸(不同手机号同时发送) 测试步骤 : 拦截验证码发送请求 修改手机号参数为双手机号格式: 13800138000,15800158000 13800138000@15800158000 漏洞利用 : 使用卡二收到的验证码登录卡一账号 潜在危害:越权登录高权限账号 防御建议 后端严格验证手机号格式 限制同一IP的发送频率 增加图形验证码 0x3 漏洞二:SessionKey三要素泄露 漏洞原理 微信小程序SessionKey、iv、encryptedData三要素泄露导致未授权登录 利用工具 独立工具 : wx_ sessionkey_ decrypt:https://github.com/mrknow001/wx_ sessionkey_ decrypt Burp插件 : BurpAppletPentester:https://github.com/mrknow001/BurpAppletPentester 测试步骤 定位微信小程序手机号快捷登录功能 拦截登录请求,获取SessionKey三要素 使用工具解密获取手机号 替换数据包中的手机号为管理员号码 重放请求实现未授权登录 关联漏洞:弱口令 通过获取的手机号尝试常见弱口令 示例: 手机号后六位 、 123456 、 admin123 成功登录后台获取敏感信息 0x4 漏洞三:JWT攻击 JWT爆破攻击 测试步骤 : 拦截包含JWT令牌的请求 使用jwt.io分析令牌结构 爆破常见密钥(如123456) 修改payload中的关键字段(如userID、role) payload结构分析 : None算法绕过 使用jwt_ tool工具(https://github.com/ticarpi/jwt_ tool) 生成四种None算法变体: 依次尝试替换原始令牌 防御建议 使用强密钥 禁用None算法 严格验证签名 0x5 漏洞四:OAuth2.0漏洞 漏洞原理 二维码扫描登录缺少二次确认,导致钓鱼攻击可能 测试步骤 定位第三方登录功能 获取登录二维码 制作钓鱼页面诱导扫描 攻击者账号被绑定到受害者账户 防御建议 扫描后需用户确认 记录登录设备信息 设置绑定提醒 0x6 漏洞五:Jeecg框架漏洞 框架介绍 JeecgBoot:基于SpringBoot的低代码开发平台 综合利用工具 jeecg漏洞利用工具:https://github.com/MInggongK/jeecg- 常见漏洞 接口信息泄露 : 通过tableName参数获取数据库表信息 示例泄露接口: /api/table/list SQL注入 : 测试tableName参数: 权限提升 : 注册普通账号 查找管理员ID 使用提权接口: 其他利用技巧 常见敏感接口 : /jeecg-boot/** /api/** /sys/user/list 默认弱口令 : admin/123456 jeecg/jeecg123 test/123456 0x7 总结 渗透测试要点 资产收集 :全面收集Web、APP、小程序等资产 漏洞验证 :从低危漏洞入手,逐步深入 关联利用 :组合多个漏洞提升危害等级 防御建议 定期安全评估 及时修复已知漏洞 加强开发人员安全意识培训 注意事项 所有测试必须获得授权 敏感信息需脱敏处理 测试完成后及时提交报告 附录:工具列表 Burp Suite wx_ sessionkey_ decrypt jwt_ tool jeecg漏洞利用工具 HAE插件(Burp历史请求分析) 参考链接 OAuth2.0漏洞详解:https://xz.aliyun.com/news/16153 Jeecg官网:https://www.jeecg.com/