逻辑越权之验证码与Token及接口

逻辑漏洞总结思维导图

图片[1]-逻辑越权之验证码与Token及接口-Drton1博客

验证上的安全问题

验证码安全问题

  • 爆破—之前说到过,短信邮箱验证码的爆破。
  • 识别 —借用工具,插件对图形验证码进行识别
  • 复用— 只用输入一次正确的验证码然后一直发包复用
  • 回显—验证码回显响应包中
  • 绕过—前端验证的绕过

Token的安全问题

  • 爆破—破解token加密后进行批量爆破token
  • 固定—固定一个token批量发包
  • 回显—下一个token会回显到响应包中

接下来几个案例细细分析:

演示案例

验证码识别插件及工具操作演示

当一些登录点存在图片验证码需要我们输入时候,此时无法进行绕过,那么就只能进行识别验证码;了,这里涉及到几个工具跟插件

插件工具使用

  • captcha-killer
  • Pkav_Http_Fuzz
  • reCAPTCHA

Pkav_Http_Fuzz:

直接打开工具,放入验证码的地址然后直接进行识别:

图片[2]-逻辑越权之验证码与Token及接口-Drton1博客

同时他这个工具也支持爆破,同时把识别出来的验证码当作字典进行填充,从而实现爆破:

右边可以放入自定义账号密码字典对账密进行爆破:

图片[3]-逻辑越权之验证码与Token及接口-Drton1博客

bp插件-captcha-killer:

下载以及编译好的版本

图片[4]-逻辑越权之验证码与Token及接口-Drton1博客

加载到bp当中:

图片[5]-逻辑越权之验证码与Token及接口-Drton1博客

接下来把验证码url放入以及数据包

图片[6]-逻辑越权之验证码与Token及接口-Drton1博客

然后自己去百度ai或者别的识别文字接口申请接口,然后放在下面就可以开始识别了。

pikachu验证码绕过客户端及服务端验证

客户端的验证码绕过

这个说白就是前端验证码的生成验证,我们只需要抓包绕过就可以了

图片[7]-逻辑越权之验证码与Token及接口-Drton1博客

F12查看源码,找到验证代码,证实是前端的验证:

图片[8]-逻辑越权之验证码与Token及接口-Drton1博客

只需要抓包绕过即可,此时拿着数据包再去爆破什么都行。

图片[9]-逻辑越权之验证码与Token及接口-Drton1博客

服务器端验证码验证

这种验证就是在后端,这里就存在一个复用的问题,利用验证码复用绕过,也就是我们只用输入一次验证码然后一直用。

图片[10]-逻辑越权之验证码与Token及接口-Drton1博客

我们只用输入一次正确的验证码就可以用这个包一直爆破了,这就是验证码复用。

图片[11]-逻辑越权之验证码与Token及接口-Drton1博客

我们看看后端源码,来知道为什么会发生这种情况:

图片[12]-逻辑越权之验证码与Token及接口-Drton1博客

可以看到我们输入一次正确的验证码他就会存放在session中,之后我们一直用该验证码就可以实现复用,源码中也写出来漏洞导致的原因,就是验证完成后,没有销毁该seesion中的验证码。

pikachu-Token客户端回显绕过登录爆破

token是一种安全机制,可以防止ssrf攻击以及重放攻击,因为每次提交的token值都不一样,如果我们拿一个数据包进行爆破一直都是一个token,那么服务器就不会予以处理,我们每次发送的数据包的token必须符合它预期的token,我们要么知道token加密方式,进行破解寻找规律。还有一种是响应包中存在返回的token,这个token其实就是下一次发包的token。

我们可以看到数据包中有token:

图片[13]-逻辑越权之验证码与Token及接口-Drton1博客

我们发现响应包中存在一个token:

图片[14]-逻辑越权之验证码与Token及接口-Drton1博客

这个其实就是下一次发包的token值。

图片[15]-逻辑越权之验证码与Token及接口-Drton1博客

密码我们设置自己准备好的字典,token我们设置返回包中的value:

图片[16]-逻辑越权之验证码与Token及接口-Drton1博客

我们还要把线程设置为1,因为只有发一个包过去对方才回一个token,多线程并不行:

图片[17]-逻辑越权之验证码与Token及接口-Drton1博客

然后就可以开始爆破了:

图片[18]-逻辑越权之验证码与Token及接口-Drton1博客

成功登录:

图片[19]-逻辑越权之验证码与Token及接口-Drton1博客

bp爆破的四种攻击模式:

一、Sniper(狙击手模式)

针对单一密码,假设确定了两个位置A和B,然后密码包payload里有两个密码1、2,那么攻击模式如下:

Attack No.Position APosition B
01null
12null
2null1
3null2

二、Battering ram(攻城锤模式)

于sniper模式不同的地方在于,同样情况下,攻击次数减半,每次两个位置用同样的密码,如表:

Attack No.Position APosition B
011
122

三、Pitchfork(叉子模式)

跟前两种不同的地方在于,可以多组密码本payload,又于battering ram相同的地方在于,一一对应,现在添加包含3、4的密码本payload,暴力破解过程如表:

Attack No.Position APosition B
013
124

四、Cluster bomb(炸弹模式)

跟叉子模式相似的是多个密码本对应多个位置,不同的是不再是一一对应,而是交叉组合,每一个密码本里的密码都对应于另一密码本所有密码,如表:

Attack No.Position APosition B
013
123
214
324

URL下载接口ID值调用遍历测试

当某站点存在资源请求时候参数上带有id值,我们就可以爆破遍历该id值从而达到未授权去访问到某些资源。这里不进行实际演示,这种站点很多。

Callback自定义返回调用安全

这种指的是某个站点请求了第三方站点的接口,然后url里面有回调的内容,这个内容显示在前端页面中,我们就可以修改这个参数形成xss攻击等。

资源

(14条消息) Pkav HTTP Fuzzer教程_夏日 の blog的博客-CSDN博客

(14条消息) burpsuite安装插件captcha-killer识别验证码_一颗小黑橙的博客-CSDN博客_burpsuite 验证码

https://www.cnblogs.com/nul1/p/12071115.html

https://github.com/c0ny1/captcha-killer/releases/tag/0.1.2

https://github.com/bit4woo/reCAPTCHA/releases/tag/v1.0

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论