专栏首页FreeBufTownscript票务平台的任意账户劫持

Townscript票务平台的任意账户劫持

本文讲述了印度票务平台Townscript缺乏速率限制,以及密码重置缺陷导致的任意账户劫持漏洞。速率限制(Rate Limiting)仍是大多数Web应用不太重视的问题,但一旦与其它功能形成漏洞利用,也将会导致严重的危害影响。

漏洞发现

Townscript是一家印度在线活动票务公司,主要提供研讨会、展览、马拉松和冒险活动等项目的登记、注册和售票服务,只要用户发布活动项目,注册和购票页面就会自动生成,其于2017年被印度另一家在线票务平台BookMyShow收购。

近期,我们打算在印度国内举办名为“Letshack”的安全训练营活动,作为活动发起方,我们把该项活动的售票放到了Townscript平台。不巧的是,注册进行了一段时间之后,我就把绑定Townscript平台的邮箱密码和登录Townscript平台进行注册人员管理的密码都忘记了,糟糕!已经注册了500多人,而且活动将在数周后开始,这该如何是好!思来想去,我注册了一个新的Townscript账户打算向Townscript官方发邮件看看有何解决办法。

但之后,我想就着测试一下Townscript应用吧,看看是否存在漏洞可利用以找回我的先前账户…。说整就整,起初我想到的就是SQL注入,虽然SQL注入漏洞影响较大,但发现过程稍显复杂,我就把测试重点放到了相对简单的登录和注册页面上。

接下来,我就测试了登录页面上的“忘记密码”功能,经过一番分析之后,我发现该“忘记密码”并没有部署速率限制措施(rate limit),那是不是可以据此对其它人的账户密码来个暴力枚举呢?

我以我当前新注册的Townscript账户为例,在忘记密码功能区域输入了与该账户绑定的邮箱地址,然后点击“找回密码”,然后,我在该账户绑定的邮箱中收到了以下找回密码的链接:

可见,上述找回密码链接非常简单,其中包括了绑定账户的邮箱地址和一个code,该code是一个6位数的数字。那就用我之前账户的邮箱地址来试试吧,随便输入一个code值,用Burp来暴力枚举试试:

把6位数的构造字典拉进去就是一番枚举,但大部份响应看似都是一些404页面未找到的302响应,在我快要放弃的时候,我又检查了一下响应长度,一看,其中存在长度为391的响应:

尝试着把该响应进行转发,哇,竟然可以成功跳转到以下密码重置界面!

就这样,在密码重置功能缺乏速率限制(Rate Limit)的情况下,我通过暴力枚举重置了我之前忘记了Townscript登录密码和绑定邮箱密码的Townscript账户,成功找回了丢失的Townscript账户权限,以及其中注册的数百个参与人员信息。

但是,Townscript应用在账户设置中严禁更改用户的绑定邮箱,所以,即使根据上述密码重置漏洞劫持了受害者账户,但受害者一样还可以通过自己的绑定邮箱再次发起密码重置请求,找回账户,那对攻击者来说,这就不算真正意义上的账户劫持。

接下来,我对Townscript应用中的用户设置(edit)操作请求进行了抓包,从中发现了包含的用户绑定邮箱地址,然后我尝试对其进行了替换:

之后,竟然可以成功实现邮箱修改:

这样一来,也就是说,我可以利用密码重置缺乏速率限制+Code暴力枚举+更改用户绑定邮箱,实现真正意义上的账户劫持,只要知道对方用户的Townscript绑定邮箱,就能对其实施账户劫持。

经验总结

针对登录页面或密码重置功能可以多花点心思进行研究,尤其是对其中的参数、编码或用户属性进行测试,另外,缺乏速率限制也是当前大多数Web应用存在的问题,可以考虑用它来与其它功能进行组合利用。

*参考来源:medium,clouds 编译整理,转载请注明来自 FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:clouds

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-30

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 挖洞经验 | 篡改密码重置的加密参数实现账号劫持研究

    想必大家都对参数篡改攻击有所了解,今天作者分享的是对RSA加密参数的篡改从而实现账号劫持的简单测试,漏洞原因在于Web应用在客户端缺乏安全的防护机制。一起来看看...

    FB客服
  • 《2014工业控制系统的安全研究与实践》报告发布

    在2013年,工业控制系统的安全问题在国内许多信息安全相关的技术大会上作为重要的研讨议题频繁出现,已成为工业控制系统相关的各行业以及信息安全领域的研究机构、厂商...

    FB客服
  • PRMitM:一种可重置账号密码的中间人攻击,双因素认证也无效

    在今年的IEEE研讨会上,来自以色列管理学术研究学院的研究人员展示了一种新的攻击方法。这种攻击方法被命名为PRMitM,意为“密码重置中间人攻击(Passwor...

    FB客服
  • maven依赖冲突以及解决方法

    依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突

    lyb-geek
  • maven依赖冲突以及解决方法

    依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突

    lyb-geek
  • 思维导图学Java虚拟机(修订版)

    第二次读周志明的《深入理解Java虚拟机》,感觉我原来的思维导图笔记,在结构上有些问题。更新了思维导图的结构,同时优化了GC、虚拟机字节码执行引擎、Java编译...

    Yano_nankai
  • 关于自动化测试的理解与误区

    为什么先要从概念说起呢?对于新手而言可能总是把自动化看得很高端和牛逼。

    软件测试君
  • HTML5学习-day01【悟空教程】

    网页超文本应用技术工作小组是一个以推动网络HTML 5 标准为目的而成立的组织。在2004年,由Opera、Mozilla基金会和苹果这些浏览器厂商组成。

    Java帮帮
  • 开源 | CVPR2020 使用二叉空间分割生成3D 网格模型

    多边形网格普遍存在数字三维领域中,但在深度学习革命中却只发挥了很小的作用。当前领先的生成模型方法通过隐函数实现,并且需要在生成昂贵的iso-surface后,才...

    CNNer
  • 商城项目-取消过滤项

    cwl_java

扫码关注云+社区

领取腾讯云代金券