【渗透工具系列】Burpsuite扩展插件Turbo Intruder

相关阅读

视频讲解

本期视频开始,我们将为大家陆续更新一些渗透测试工具的使用方法,本期介绍的是Burpsuite扩展插件Turbo Intruder,如何在渗透测试过程中提升扫描速度?如何使用该工具完成竞争条件漏洞的验证?

图文教程

安装教程

打开BurpSuite后,Extender>BApp Store>Turbo Intruder

图片[1]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

右侧点击install,便可以进行安装

图片[2]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

使用教程

拦截开启(Intercept is on)后,我们可以抓到请求,然后我们将请求载入到插件中

Extensions>Turbo Intruder>Send to turbo intruder

图片[3]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

来到插件界面

图片[4]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

选择脚本

然后,我们可以选择使用相应的脚本

图片[5]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们这里以exmaples/basic.py为例

图片[6]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们可以在上方添加%s为我们要进行fuzz的内容

图片[7]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

调整性能

queueRequests用来调整速度

  • concurrentConnections为并发数
  • requestsPerConnection为单个连接的请求数量
  • pipeline基于HTTP 1.1 可以一个请求中携带多个请求,如果启用则为True
图片[8]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们可以每个都单独设置一次,看下效果,并发数为25

图片[9]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

可以看到每秒请求数为46

图片[10]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

这时,我们再修改每个连接的请求数,改成100

图片[11]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

效果很明显,每秒请求数达到了1198

图片[12]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

HTTP管道概念介绍

关于HTTP管道,我们看下对比就能够理解了

我们正常应该是这样的请求

图片[13]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

如果使用HTTP/1.1 我们可以在单个请求中携带多个请求

图片[14]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们看下启动HTTP管道,可以达到什么扫描速度

图片[15]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

可以看到更快了,每秒可以达到4000多次请求

图片[16]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

漏洞演示:使用Turbo Intruder进行竞争条件漏洞利用

其实在2015年的时候星巴克就出现过这样的漏洞,通过竞争条件漏洞,可以让自己星巴克礼品卡(星礼卡)中的钱变得无限……

图片[17]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们这里通过类似的方式进行演示,譬如有这样的一个接口

我们可以通过/addMoney?amount=给自己添加余额,这个接口只能使用一次

图片[18]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

譬如,添加80元

图片[19]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

这时,你肯定会想,既然只能用一次,那多添加点看看呢?我们这里添加101,会发现这里如果超过100,余额并不会生效

图片[20]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

这时,我们可以尝试使用竞争条件漏洞,turbo intruder里内置了eaxmples/race.py竞争条件漏洞利用的脚本

我们现在只需要将余额添加数量,设置为小于100的即可

图片[21]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

这时,我们点击Attack进行攻击,并观察得到结果

第一个是99

图片[22]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

我们查看其他的,比方说第五个请求,可以看到余额进行累加了,至此,我们完成了漏洞的利用

图片[23]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

知识补充:条件竞争漏洞

其实在上一个版本,我们的博客也存在类似的条件竞争漏洞,可以通过条件竞争达成这样的效果

  • 可以刷粉丝
  • 可以刷点赞数

只需要一直请求对应接口即可

图片[24]-【渗透工具系列】Burpsuite扩展插件Turbo Intruder-FancyPig's blog

故我们现在详细再来讲讲这个漏洞

让我们想象一下,一个浏览器应用程序被开发并安装在你的计算机上。然后你的计算机将分配内部内存来运行这个应用程序,这被称为 “进程“。现在,该进程将被你的计算机理解为这个特定的浏览器程序的执行。

浏览器有各种功能,如接受键盘输入,进行互联网搜索,并显示输出。所有这些都被单独称为 “线程“。

一个线程只是一个进程中的执行单位。它是进程的一个子集,在这里它共享相同的内存。如果线程同时执行,则被称为 “多线程“。因此,根据我们的例子,我们的浏览器运行简单的功能将需要几个线程,我们的计算机将同时处理这些线程。因此,像打开浏览器开始一天的工作这样简单的事情就包括多线程。”多处理 “是一种技术,几个进程使用多个处理器同时执行。多处理的好处是提高系统的速度和处理器之间的任务分配。可以把它看作是分工合作。一个 “调度器 “(Scheduler)帮助系统以某种顺序安排多个线程来执行它们。

这只是一个简单的解释,但它使你了解了这个漏洞的工作机制。

什么时候会发生条件竞争?

在一个计算机系统中,调度器负责按顺序处理哪些线程。然而,如果任何一个线程不按顺序执行,那么它就会发生,一个条件竞争就会产生。这可能导致我们的应用程序失去对其中一个线程的跟踪。为了帮助可视化,我们可以提供这个例子。

假设你已经开发了一个钱包应用程序,在这种情况下,我们的客户在两个不同的时间取款

线程 A线程 B钱包余额
访问应用程序  
 登录应用程序 
读取可用余额 100
 提款金额10元100
当前余额 90
读取可用余额 90
 提款金额20元90
当前余额 70

两次交易后,我们钱包的余额应该是70元。似乎没有任何问题。

然而,让我们使用这个相同的例子,但假设该应用程序遇到了一个条件竞争。

线程 A线程 B钱包余额
访问应用程序  
 登录应用程序 
读取可用余额 100
 提款金额10元100
当前余额 90
读取可用余额 90
 提款金额20元90
当前余额 90

两次交易后,钱包里的价值是90元,因为两个不同的线程被同时处理。最终的结果是对总资金的计算有误。

理解条件竞争漏洞

如果攻击者利用我们上面假设的条件竞争进行恶意操作,并帮助绕过安全机制,那么它就成为 “条件竞争漏洞”。这种漏洞通常发生在线程使用相同的共享内存来更新变量的值。

此外,条件竞争需要在短时间内发送许多请求。匆匆忙忙的请求对于触发条件竞争的发生至关重要。混乱是导致线程脱轨的原因。

这种类型的攻击可以通过Burp Suite中的 “Intruder”(或Turbo Intruder插件)等工具来完成,也就是本视频中提到的。

这种攻击最可能的目标是

  • 与资金转移有关的应用(加钱或减钱)
  • 主要与信用评分、优惠券代码、折扣和社交媒体应用程序中的追随者有关的增量和减量区域
  • 使用OTP或任何代码进入应用程序的登录方式

那么,有哪些现实世界中发生的例子呢?

案例1(微软的速度限制)

一般来说,微软已经对忘记密码页面实施了速率限制,以避免暴力攻击。这有助于通过限制尝试来防止账户被接管。然而,一名研究人员最近分享了一个理论演示,说明无论如何,都有可能实现账户接管。

最初,研究人员Laxman Muthiyah发现,在1000个请求中,只有122个被服务器处理。其余的因为速率限制机制而被显示为错误。如果有人能同时发送所有6位和7位安全代码的组合(近1100万个),那么账户被接管是可能的。考虑到这需要大量的计算能力,这可不是一件容易的事。这个问题在2020年11月被微软打了补丁

总之,在忘记密码页面上实现的速度限制功能被使用条件竞争绕过了。

案例2(星巴克免费咖啡)

谁不喜欢咖啡?好吧,Egor Homakov在星巴克的礼品卡页面上发现了一个条件竞争漏洞,使他可以免费生成无限余额。

该漏洞的存在是通过将金额从礼品卡钱包1转移到礼品卡钱包2。通过在一个小的时间范围内发送多个请求,在这个功能上执行一个条件竞争。这使得研究人员在钱包二中获得的余额比他之前在钱包一中获得的更多。

Egor早在2015年就向他们的安全团队披露了这一点。

建议

同时处理多个请求共享数据库管理系统(DBMS)是发生条件竞争的主要罪魁祸首。

那么,该如何解决呢?

我们需要实现一个暂停执行的方法。换句话说,为共享内存实现资源锁,并创建一个条件,要求每个请求只处理一次。剩下的请求将处于暂停状态,就像它们在一个队列中一样。

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 共8条

请登录后发表评论