网络安全漏洞——验证码漏洞

一、漏洞类型

● 实体漏洞 :
XSS ( 将传入的参数作为 JS 程序来执行 )
SQL 注入 ( 将传入的参数作为数据库的 sql 语句来执行 )
CSRF( 伪造一个链接页面,客户端请求伪造 )
变量覆盖,代码执行漏洞
用户传入的参数都会作为程序的某一部分来执行

● 逻辑漏洞 

因为代码逻辑出现问题,产生了漏洞

 二、逻辑漏洞产生的原因

● 程序设计思路出现了问题 ( 开发人员的问题 )
● 项目衔接出现了问题( 新人和老员工之间交接的问题 )
● 项目经理经验不足,造成程序设计出现问题

三、验证码绕过漏洞的危害

验证码复用、验证码存在爆破、验证码能否被识别
用户验证码存在于前端情况和后端情况 , 如果存在于前端说明程序是不安全的
用户找回密码使用验证码,修改 res 数据包,绕过程序
用户重定向 : 在输入验证码修改用户 A 的密码过程中,我将即将修改的 A 的数据包改为修改 B
密码,那么直接修改了 B 的密码 <--- 修改用户标识信息实现绕过验证
验证码回显 : 例如邮箱验证码 , 手机验证码等等。验证码出现在响应数据包中,可以直接查看验证码

验证码绕过漏洞

什么是验证码
人机交互公共全自动图灵测试,主要作用实现区分是计算机还是人

验证码的分类  

● 区分是人还是计算机 <--- 图片验证码
● 识别身份 短信验证码,邮箱验证码,电话验证码

验证码的显示方式

● 数字验证码
● 中文字符验证码
● 点击字符
● 滑动拼图
● 数学计算

四、验证码作用 

防止恶意程序做爆破密码,反爬、论坛灌水、刷票  

五、验证码绕过的方式

 ● 识别并执行

        python识别图片验证码,通过程序识别图片显示的验证码,然后将验证码自动输入到文本框然后执行程序

 ● 前端验证 验证码

        禁用JS代码,或者抓包将JS代码更改

● 验证码未启用
        程序交付后,验证码功能没有开启
       
● 验证码复用
        第一次登陆页面产生一个验证码,但是验证码不过期,所以换一个账号还是使用相同的验证码,还能够登陆

 

● 验证码空值绕过

        拖库 撞库 删库
        https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0155066
● 验证码干扰度低( 复杂度太低 )
        爆破难度低,造成数据泄露
        https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0194576
● 验证码通过html 输出
        http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0146767
● 验证码可控(基于某个参数来判断验证码正确和错误 )
        http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2014-071289
 
● 万能验证码, 验证码无论显示什么,只需要是用固定的数字就能绕过
        admin login , 111111 00000
● 验证码类型少,验证码过期时间放在 cookie
http 协议是无状态无连接的
        验证码获取 3 次之后,必须间隔 24 小时才能再次获取。绕过方式换 IP 地址
        内网环境换IP ,家宽 ( 光猫断电,重置 ) 可以获取 IP 地址。公网环境 ( 自己搭建 IP 地址池,买一个地址池)换账号 ----> 制作一个账号本与密码本
        

六、找回机制web工作原理图  

 

通过回显绕过 

注意:网站需要配置短信模块 

 

获取短信验证码,然后输入验证码后提交表单,BP抓包找到真实验证码

七、通过修改res状态值绕过  

根据短信验证码提交后服务端验证结果返回给客户端,修改服务端的响应值,返回给前端正确的状态
抓一次正确验证码的 res 返回值 -- 记录状态值 3
抓一次错误验证码的 res 返回值 -- 记录状态值 1
输入错误验证码,将 res 数据包状态值改为 1

 

八、通过爆破验证码  

一般短信验证码都是4-6位,进行数字爆破 

 

九、通过用户重定向

正常修改 A 用户的密码,在最后提交数据包的时候,将数据包的用户名改为用户 B
需要配合白盒的代码审计来进行

通过url分析到当前提交页面,然后查看对应的php文件  

进行代码审计 

 

查看数据库中的数据,通过查看数据发现找回密码的账户的repswcode值随机生成,而不进行密码找回的用户默认值是y

抓包改数据包 

 十、测试某APP的验证码绕过

安装一个安卓模拟器
        ● 生成一个移动端证书
        ● 设置BP,然后下载 BP 的证书 (https http 的安全认证 ),
开启 BP ,配置 IP和端口 

 下载一个CA证书,是der类型的证书,移动端需要使用的证书是cer证书

打开浏览器的证书管理页面

 

 

 

需要将 cer 的证书安装到移动端里面
模拟器与计算机之间有一个空间是共享的 ( 文件夹 ) ,需要将 cer 证书放置在共享文件夹中。然后将其复制到移动 端设备当中,然后在安卓系统中进行安装证书

 

 

 

 

 

 

 

 

 

● 使用BP抓包 

 

● 安装软件
● 抓包绕过验证码
绕过原理,通过修改 res 数据包,然后绕过

 

获取返回包的数据值
{"code":"201","data":"","msg":" 验证码错误 "}
{"code":"200","data":"","msg":" 发送成功 "}
{"code":200,"data":"15210766266","msg":""} 我们可用的
{"code":206,"data":"","msg":" 短信验证码不正确 !"}

总结:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值