0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

验证码渗透最全总结

jf_Fo0qk3ln 来源:小艾搞安全 2024-01-05 11:33 次阅读

验证码渗透最全总结

> 不少人在碰见验证码的时候,大多数只是看了一眼就过去了,没想到验证码还有啥可测试的。但其实验证码也能在项目中导致高危,并且验证码漏洞能在一定情况下造成危害。

验证码总结

验证码分为两块内容,一块是图形验证码,一块是短信验证码。下面是对这些技巧总结的思维导图。

c976b6be-9ecf-11ee-8b88-92fbcf53809c.png

图形验证码

图形验证码长宽可控

简单测试方法,就是看到一个登录框,然后新建打开图片链接,在图片链接中就有机会看到两个参数值,一个是 width,一个是 length。这两个参数是计算图片验证码的长宽,如果长宽过高就会过度消耗的是服务器的 CPU 资源。

c99145a6-9ecf-11ee-8b88-92fbcf53809c.png


当length为比较大的时候,响应时间为2767millis

c9a8e21a-9ecf-11ee-8b88-92fbcf53809c.png


注意:该漏洞能造成服务器拒绝服务攻击。有的 SRC 里面注明了,禁止使用 DDOS 攻击,这种漏洞是不收的,如果提交了漏洞,很有可能面临法律责任。

c9ba3e98-9ecf-11ee-8b88-92fbcf53809c.png

图形验证码可绕过

有时候开发,会写两套图形验证码流程,一套是在生产运行阶段必须使用正确验证码才能通过服务器校验。另外一套是在测试 SIT 环境下,把验证码设置为只要是 null 或者是空都可以登录验证码置为空,提高开发工作效率。还有的时候,将验证码修改为 true 就好了。这个是因为开发在进行图形验证码判断的时候,只要是验证码收到的是 true 就会通过。具体测试过程已经找不到了,大概写一下吧。

图形验证码不失效

简单易懂,图形验证码没有对应的失效机制。导致图形验证码能被多次利用。图形验证码在使用后未失效,发送短信时抓包,发送到Repeter中进行重放,可以发送成功!

图形验证码可识别

这个就是开发在制作图形验证码功能的时候,没有将图形验证码加入足够多的噪点,使验证码能够被现有的工具进行识别。一般是项目硬凑数用的,SRC 全部都不收。具体不做解释

图形验证码随机值可控

都知道图形验证码是后端随机生成的。那么随机生成的时候,有没有可能是能控制这个随机值?有可能! 生成验证码的随机值被写在了 url 里面

c9bf1800-9ecf-11ee-8b88-92fbcf53809c.png

将characters固定为aaaa,可以看到图形验证码为aaaa

c9c2c950-9ecf-11ee-8b88-92fbcf53809c.png

图形验证码返回到前端

测试过程已经找不到了,口头描述下大致就是登录后会在响应包中返回了下次图形验证码的内容。

短信验证码

我们已经写完了图形验证码部分,现实情况下短信验证码也是比较多。短信验证码的漏洞技巧要比图形验证码多很多

短信炸弹纵向

在一个限制时间的情况下对一个手机号,发送的短信验证码条数超过发送预期,这种漏洞我们都称为短信炸弹or短信轰炸or短信炸弹纵向

c9d590b2-9ecf-11ee-8b88-92fbcf53809c.png

c9e0c4a0-9ecf-11ee-8b88-92fbcf53809c.png


不停点击repeter或者放到intruder里面,就可以实现一个手机号接收到多条短信

c9f21160-9ecf-11ee-8b88-92fbcf53809c.png

短信炸弹横向

上面我们提到了在限定时间内,对一个手机号发送超过预期的短信条数是短信轰炸。造成的结果就是浪费短信资源。如果开发把这个漏洞给改了,那么还有没有漏洞?还有?不能给一个人发送短信验证了,那么给其他人发送验证码一样的。

ca0077fa-9ecf-11ee-8b88-92fbcf53809c.png

ca0abeea-9ecf-11ee-8b88-92fbcf53809c.png


将phone设置成变量,进行遍历

ca1b93dc-9ecf-11ee-8b88-92fbcf53809c.png

短信验证码可爆破

我们讲了 2 个发送短信验证码,都知道验证码通常 4 位数或者 6 位数的数字验证码。如果服务器没有限制提交的验证码的次数,那么我们可以爆破这个验证码。并且如果有 4 位验证码被爆破成功的话,在 SRC 里面通常是按照高危处理。

短信验证码可编辑

我们讲了发送短信验证码以及爆破短信验证码。我们知道短信验证码功能发送的是短信,那么我们就有可能把短信内容给更改。

ca1ffa12-9ecf-11ee-8b88-92fbcf53809c.png

ca246520-9ecf-11ee-8b88-92fbcf53809c.png


通过修改transAmt 参数内容,可随意修改短信内容

短信炸弹的绕过技巧

我们在了解基础短信验证码的漏洞后,相应的开发也会进行了解。那么我们就需要增加技巧来绕过这些东西。

短信炸弹的绕过技巧 1--特殊字符

通常,开发在发送短信验证码的时候,没有对特殊字符进行过滤。比如在手机号是 15312341234。我们加上+86,变成+8615312341234,这样的话服务器就有可能判定为两个手机号了。

在 mobile=15312341234 的前面,加空格,86,086,0086,+86,0,00,/r,/n,?,#,!,,...只要想法多就有可能绕过。

ca3d1390-9ecf-11ee-8b88-92fbcf53809c.png

ca470cba-9ecf-11ee-8b88-92fbcf53809c.png


控制phone参数进行攻击

ca4bc8a4-9ecf-11ee-8b88-92fbcf53809c.png

短信炸弹的绕过技巧 2--添加 XFF

在请求包中添加XFF头,有的时候服务器是按照IP地址进行判定的。

短信炸弹的绕过技巧 3--添加多个值

在发送手机短信验证码的时候可以把一个参数赋上多个值。比如 Mobile=18312341234,13612341234&code=1234

短信炸弹的绕过技巧 4--添加多个参数

比如 Mobile=18312341234&Mobile=13612341234

短信炸弹的绕过技巧 5--修改返回包

在发送短信验证码的数据包,修改返回包的 Flase 为 Success

短信炸弹的绕过技巧 6--并发

对短信验证码的数据包进行并发,有机会绕过限制

ca693d80-9ecf-11ee-8b88-92fbcf53809c.png

ca74f116-9ecf-11ee-8b88-92fbcf53809c.png

在响应包里面可以看到短信验证码

在抓取短信验证码的数据包后,在 response 可以看到短信验证码

提交别人的验证码

假设有一个需要短信验证码功能点。给自己手机号 13512341234 发送验证码为 111111,给别人手机号 18312341234 收到验证码为 222222。那么自己手机号使用 222222 验证码,也能正常登录

每次短信验证码都是同一个

一个手机号,点击 2 次发送短信验证码,验证码都是同一个。这样的情况下,可以试试爆破验证码,如果爆破次数无限制,还是存在验证码固定这样漏洞的

验证码不失效 1

比如验证码是在修改密码处使用。在使用短信验证码进入修改密码后,验证码没有失效。当前用户还可以再次用这个短信验证码修改密码

验证码不失效 2

场景:收到两条短信验证码,时间顺序为,1 在前,2 在后。收到的 2 后,1 还是没有失效-

验证码绕过技巧

项目在上线前,只是写好验证码接口,不会调用短信资源。因而为了功能登录会把验证码设计成固定的比如尝试 6 个 1,6 个 0 短信验证码

验证码技巧

在找回密码方面,填写完账号名,要给A发短信验证码,通过burp拦截包,给B发送短信验证码。这样的话,就能用B的验证码提交给A用,造成任意账号密码重置

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211568
  • 服务器
    +关注

    关注

    12

    文章

    9123

    浏览量

    85322
  • 验证码
    +关注

    关注

    2

    文章

    20

    浏览量

    4700

原文标题:验证码渗透最全总结

文章出处:【微信号:菜鸟学信安,微信公众号:菜鸟学信安】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    无法验证邮箱,总是提示验证码错误,验证码明明是正确的。

    `无法验证邮箱,总是提示验证码错误,验证码明明是正确的。是不是系统的bug?`
    发表于 05-12 10:41

    平台是如何高效的破解市面上各家验证码平台的各种形式验证码的?

    众所周知,验证码的出现是为了区分人和机器,但随着科技的发展,黑产从业者的可图之利增多,验证码的战场也进入了一段破解与抗破解的持久博弈。验证码在逐渐复杂的同时,黑灰产的攻击手段也不断提升。本文就从
    发表于 11-01 15:21

    基于加密短信验证码的移动安全支付解决方案

    针对移动支付过程中支付验证码容易泄露的问题,提出了基于加密短信息验证码的双因素移动支付系统方案。该方案基于公开密钥系统,使用公钥基础设施/认证机构( PKI/CA)的认证方法进行服务器与客户端的在线
    发表于 11-29 14:40 0次下载
    基于加密短信<b class='flag-5'>验证码</b>的移动安全支付解决方案

    多样变换的手写验证码自动识别算法

    研究验证码自动识别技术可以进一步提升人识别验证码的可读性,增强机器识别的难度,从而提高网络安全性。针对目前提出的验证码识别方法基本都是采用光学字符识别(OCR)方法对机器写的标准字符进行识别,本文
    发表于 12-20 14:14 0次下载

    SQLyog_12.4.1_带验证码

    SQLyog_12.4.1_带验证码.rar
    发表于 04-12 21:03 22次下载

    以一个真实网站的验证码为例,实现了基于一下KNN的验证码识别

    很多网站登录都需要输入验证码,如果要实现自动登录就不可避免的要识别验证码。本文以一个真实网站的验证码为例,实现了基于一下KNN的验证码识别。
    的头像 发表于 12-24 17:27 7775次阅读

    如何使用Python机器学习解决验证码的资料说明

    写爬虫有一个绕不过去的问题就是验证码,现在验证码分类大概有4种: 图像类 滑动类 点击类 语音类
    的头像 发表于 05-03 13:43 2306次阅读

    验证码层出不穷?试试这个自动跳过验证码的工具

    目前网络上越来越多使用验证码了,验证码的本意是阻止机器刷流量挤占服务器资源,这本来无可厚非;但是验证码已经变得越来越过分,别说机器人了,连人也经常没法辨认!这就相当烦了,特别是被广泛使用更多
    的头像 发表于 11-15 10:42 5957次阅读

    验证码太麻烦,自动跳过验证码神器试一试

    目前网络上越来越多使用验证码了,验证码的本意是阻止机器刷流量挤占服务器资源,这本来无可厚非;但是验证码已经变得越来越过分,别说机器人了,连人也经常没法辨认! 这就相当烦了,特别是被广泛使用更多
    的头像 发表于 11-15 11:15 1w次阅读

    16位CRC验证码生成VI工具下载

    16位CRC验证码生成VI工具下载
    发表于 03-22 10:40 55次下载
    16位CRC<b class='flag-5'>验证码</b>生成VI工具下载

    带带弟弟OCR通用验证码识别SDK免费开源版

    在使用爬虫登录网站的时候,经常输入用户名和密码后会遇到验证码,简单一点的有字母验证码,复杂一点的有滑块验证码,点选文章和点选图片验证码。这些都是爬虫中的老大难问题,今天介绍一款通用
    的头像 发表于 03-30 17:26 4662次阅读

    一个短信验证码爆破重置

    以前倒是遇到过不少四位数验证码爆破的,但是这种可以结合短信遍历,一个短信验证码只能验证三次的,最后能成功利用的还是第一次遇到,关键还是这里不存在图片验证码或者行为
    的头像 发表于 09-07 09:14 5069次阅读

    验证码到底在验证啥?聊一聊验证码是怎么为难我们人类的

    在文章开头,老狐先给大家玩一个验证码的游戏,猜出图中验证码字母。
    的头像 发表于 08-12 10:25 2098次阅读
    <b class='flag-5'>验证码</b>到底在<b class='flag-5'>验证</b>啥?聊一聊<b class='flag-5'>验证码</b>是怎么为难我们人类的

    Java 中验证码的使用

    今天我们讲一下在 Java 中验证码的使用。 验证码生成 本效果是利用easy-captcha工具包实现,首先需要添加相关依赖到pom.xml中,代码如下: com .github.whvcse
    的头像 发表于 09-25 11:11 1027次阅读
    Java 中<b class='flag-5'>验证码</b>的使用

    SpringBoot分布式验证码登录方案

    传统的项目大都是基于session交互的,前后端都在一个项目里面,比如传统的SSH项目或者一些JSP系统,当前端页面触发到获取验证码请求,可以将验证码里面的信息存在上下文中,所以登录的时候只需要 用户名、密码、验证码即可。
    的头像 发表于 10-12 17:34 719次阅读
    SpringBoot分布式<b class='flag-5'>验证码</b>登录方案