web攻防-通用漏洞验证码识别复用调用找回密码重定向状态值

news2024/11/15 10:15:50

目录

一、知识点概述

二、找回密码过程中涉及到的安全问题

三、案例演示

<验证码回显>

<修改Response状态值>

<验证码爆破>

四、真实案例1

<更改状态值>

<验证码接口调用>

五、真实案例2

<用户名重定向>

六、安全修复方案


一、知识点概述

  • 找回密码逻辑机制-回显&验证码&指向。
  • 验证码验证安全机制-爆破&复用&识别。
  • 找回密码-客户端回显&Response 状态值&修改重定向。
  • 验证码技术-验证码爆破,验证码复用,验证码识别等。

二、找回密码过程中涉及到的安全问题

  • 用回显状态判断-res 前端判断不安全。
  • 用用户名重定向-修改标示绕过验证。
  • 验证码回显显示-验证码泄漏验证虚设。
  • 验证码简单机制-验证码过于简单爆破。

三、案例演示

<验证码回显>

1.打开目标站点,输入账号和密码后点击登陆。

2.登陆后可以看到下面的信息,点击账户绑定。

3. 进入到了下面的页面,点击绑定手机号。

4.填写手机号后进行抓包。

5.抓到的数据包如图所示。 

6.此时将数据包放出,可以看到验证码已经发送了,但是没发送到我们的手机上来(那个手机号是虚构的不知道是谁的)。

7.我们随便输入验证码”123456”然后抓取数据包。

8.数据包如下所示。

9.可以看到数据包内有一个选项,下图中红色框出部分,这部分就是验证码。

10.我们将其粘贴到下面我们刚刚随便猜解的验证码的位置,然后放包。

11.可以看到网站内提示“手机绑定成功”。 

12.这就是第一种情况——验证码的回显。 

<修改Response状态值>

13.我们再次将其解绑来讲解另一种方式。

14.点击“立即绑定”。

15. 再按照前面的操作使验证码进行回显。

16.我们对数据包进行下面的操作,这个操作就是使得回显值也会发送到burp里。

17.选择上面的选项后我们放包。可以看到得到了回显数据包,其值为“3”。

18.如果将此数据包放出去,网站内就会提示验证码不正确。

19.那么我们此时就大概知道了“3”就是验证码不正确。

20.我们再采取上面的方式,但是将正确的验证码填入,可以看到返回值是“1”。 

21.此时我们放包就可以看到手机绑定成功。

22.因此可以猜想,利用此方式,就可以不用理会验证码正不正确,只需要更改返回包内的数字网站内即可返回成功绑定。

23.但是我们还不能确定是否真的绑定成功了,因为我们更改的仅仅是浏览器接收的值。到底成不成功不是以浏览器的返回值为准,而是要看服务器是否会例会这个值,如果服务器不理就不会真的绑定成功。

24.我们通过将其值从3更改到1的方法绑定后,刷新页面查看。

25.可以看到刚刚网站虽然提示绑定成功了,但是这里却并没有真的绑定成功。

26. 这就说明到底有没有绑定成功,是通过服务端确定的,而不是通过返回的状态码确定的。

27.所以这种攻击的实现需要网站是根据前端来进行验证的,而不能是通过服务端验证的。

28.这就是另一种情况——修改Response状态值,res前端判断不安全。

<验证码爆破>

29.我们再来讲解另一种方式。

30.首先再次抓取数据包。

31. 这里是6位纯数字验证码,就存在1,000,000种可能的组合方式。

32.在我们提交验证码的时候,如果网站对提交的次数没有要求,那么这里就存在爆破的可能性。

33.右击鼠标后选择下面的选项。

34. 接下来来到下图的位置。

35. 首先点击清除。

36.将下图所示位置选中后点击“add”。

37.来到下图位置。

38. 选择“Numbers”。

39. 为了节省时间我们将下面的配置设置成如下图所示。

40. 进行下面操作后开始发送数据包。

41. 可以看到正确验证码的数据包内值为1,而其它错误的均为3。

42.这就是另一种情况——对验证码没有实施安全措施,可以进行爆破获取。

四、真实案例1

<更改状态值>

1.打开目标软件。

2.进入软件。

3. 点击“我的”,然后点击“登陆/注册”。

4. 假如说我们要重置个人密码,点击“忘记密码”。

5. 将相关信息输入后点击“获取”,获取验证码。

6.抓取到下图所示的验证码。

7. 对数据包进行简要分析

 8.我们对上面的md5加密的字符串进行解密,但是返回未查到,那么就先不理会它。

9.我们先将数据包放出去,然后在填写验证的位置随便填写验证码。

10. 点击下一步后抓取数据包。

11. 但是在数据包被并没有发现验证码的踪影,说明其前端显示是没有的。

12.那么我们就可以想到能不能通过修改状态来绕过呢。

13.因此此时我们需要换一个我们自己的账号,来进行修改密码,获取数据包来观察数据包特征。

14.输入得到的正确的验证码。

15.抓取数据包后选择下面的选项来抓取其回显数据包。

 16. 放包后可以看到验证成功的状态。

17.将成功的状态码和失败的状态码放在一起方便进行对比。

18.再次随便输入验证码,然后抓取返回数据包。

19.将刚刚复制下来的成功的状态码替换掉失败的状态码。

20. 放包后可以看到成功验证了,然后跳转到了修改密码的界面。

21. 输入密码点击确定后抓取数据包。

22.抓取到的数据包如下图所示。

23. 将这个数据包发送出去后提示密码重置成功。

<验证码接口调用>

24.打开目标软件,在修改密码这里存在验证码发送的接口,当我们点击获取后,其就会给我们发送一条验证码。

25.我们点击获取验证码后抓取数据包。

26. 如果这个数据包放出之后,其就会发送验证码。

27.将数据包发送到“Repeater”,点击一次放包,可以看到验证码成功发送了。

 27.至此我们想到如果不断的去发送数据包时的两个问题:

  • 不断放包,会不会不断给我们发送验证码。
  • 正常的安全的图形验证码每次我们点击一次获取之后,其都应该刷新一次,并且就算图形化验证码输入的正确,发送验证码也要有时间间隔,短信轰炸的原理就在此。
正确设计:
获取:判断图像验证码是否正确。
    ————防机器,确保人工
获取:每一分钟才能触发一次发送验证码。
    ————防止乱用(短信轰炸)

28.我们利用上面抓取到的数据包重复发送,发现每次放包之后,都会成功将验证码发送。这里接口不断被调用,验证码就不断被发送。

29.扩展:

后台猜密码:

  • 验证码提交猜解-复用(验证码等于没有)
  • 不存在复用-(验证码识别)

这里推荐两个验证码识别插件:

  • https://github.com/c0ny1/captcha-killer
  • https://github.com/smxiazi/NEW_xp_CAPTCHA

五、真实案例2

<用户名重定向>

——海洋CMS

1.打开目标网站。

 2.来到注册页面,输入注册信息后进行账户注册,注册两个账户。

 

3.来到找回密码的页面。

4. 我们会受到如下所示的邮件,里面包含重置密码的链接。

5. 打开链接就来到了重置密码的界面。

6.其核心就在接收的邮件里的找回密码的链接里。

7.我们尝试将链接末尾的“1”,改成“2”,然后进行访问,来尝试其会不会修改2的密码。

8. 但是结果是失败的,它返回了下面的页面。

9. 我们注意到这个值,这个值类似于身份验证。

10.我们结合其原码进行分析,可以看到其会与数据库内存储的信息进行比对。

11.查询数据库后我们将其进行对应的修改,访问后发下成功可以更改2的密码了。

12.那么就会产生一个问题,如果不查看数据库,那么怎么知道那个值是y呢?

        答:其实如果你再注册一个账户就可以发现,每次新注册的用户的那个值都是默认固定的y,当找回过密码之后才会发生变化。 

13.总结:

        这就是利用用户名的重定向,实现对任意用户密码的修改。

六、安全修复方案

  1. 找回机制要进行每一步验证-防绕过重定向。
  2. 找回机制要进行服务端验证-防res数据修改。
  3. 找回机制要控制验证码安全-防验证码攻击。
  4. 验证码接口需验证后被调用-防接口被乱调用。
  5. 验证码引用智能化人工判断-防验证码被识别。
  6. 验证码采用时间段生效失效-防验证码被复用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实现栈--数据结构

魔王的介绍&#xff1a;&#x1f636;‍&#x1f32b;️一名双非本科大一小白。魔王的目标&#xff1a;&#x1f92f;努力赶上周围卷王的脚步。魔王的主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王.&#x1f525;&#x1f525;&#x1f525; ❤️‍&#x1…

【半个月实践】普通人如何利用ChatGPT变现?(附镜像网站)

前言1.PPT2.百度问答3.代写文章4.设计LOGO 前言 如今ChatGPT的话题爆火各大平台&#xff0c;所谈论的方向也各不相同&#xff0c;或许是ChatGPT使用方法、应用领域、前景趋势等等。而这必然也产生了信息差&#xff0c;使得大多数人可以利用ChatGPT变现。   而在这一开始&…

嵌入式QT (使用 Qt Designer 开发)

一、使用 UI 设计器开发程序 1.1、 在 UI 文件添加一个按钮 1.2、在 UI 文件里连接信号与槽 所谓信号即是一个对象发出的信号&#xff0c;槽即是当这个对象发出这个信号时&#xff0c;对应连接的槽就发被执行或者触发。 UI 设计器里信号与槽的连接方法一&#xff1a; 在主窗…

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测 目录 分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记…

TCP长连接的连接池、容量控制与心跳保活

一、长连接与短连接 TCP 本身并没有长短连接的区别&#xff0c;长短与否&#xff0c;完全取决于我们怎么用它。 短连接&#xff1a;每次通信时&#xff0c;创建 Socket;一次通信结束&#xff0c;调用 socket.close()。这就是一般意义上的短连接&#xff0c;短连接的好处是管理…

FastReport .NET 2023.2.7 FastReport Crack

快速报告 .NET 适用于 .NET 7 的报告和文档创建库 v. 2023.2.7 适用于 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows Forms 的全功能报告库。它可以在微软视觉工作室 2022 和 JetBrains Rider 中使用。 利用 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows For…

yara规则--编写

编写 YARA 规则 — yara 4.2.0 文档 YARA规则易于编写和理解&#xff0c;并且它们的语法是 类似于 C 语言。这是您可以编写的最简单的规则 YARA&#xff0c;它什么都不做&#xff1a; rule dummy {condition:false } 一、规则标识符 每个规则都以关键字“ rule”开头&#xff0…

成功案例丨Fortinet为跨国汽配制造企业打造典型安全SD-WAN网络

某国际化汽车配件制造企业&#xff08;以下简称某企业&#xff09;为解决跨国数据传输难、单一网络费用贵等痛点&#xff0c;决定采用SD-WAN这一新的组网形式。Fortinet携手中企通信为其打造组网高效、云网一体化、集中管理和编排的安全SD-WAN网络&#xff0c;通过精准流量和应…

数据库实验 | 第5关:使用游标的存储过程

任务描述 本关任务&#xff1a; jdxx数据表有四个字段&#xff0c;分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如&#xff0c;查询天心区(qxmc)的所有字段的值结果如图所示 任务要求 建立存储过程 tjdq(in sf varchar(10)) 输入省份的名称&#xff0c;将该省份…

创建web项目-----idea

创建项目 file—new—projiect java enterprise—next next 修改项目名字&#xff0c;finish 在此窗口打开新建的项目&#xff0c;选择this Window 新建好项目后是这样子的 配置项目的tomcat环境 file—project structure project 配置jdk和编译输入目录 libraries配…

【数据结构与算法】图像——四叉树自适应模糊(ppm图像为例)

源于大作业~~ 目录 前言 一、实现算法 二、结果展示 三、算法框架 (1) QuadTreeNode.h (2) 结点扩展、细化模糊层次 (3) 模糊化图像四叉树转为图像 (4) 主函数代码 四、说明 五、结语 前言 一张图片常常会存在空间冗余&#xff0c;即一大部分区域的色彩值相同&am…

Node.js二:fs模块

一.fs模块概述 2.fs异步写入 /*** 新建一个文件夹&#xff0c;座右铭.txt&#xff0c;写入内容三人行必有我师焉*///1.导入fs模块 const fs require(fs);//2.写入文件 fs.writeFile(./座右铭.txt,三人行必有我师焉,err >{//err写入失败&#xff1a;错误对象&#xff0c;写…

搭建CDH错误记录(踩坑无数)

搭建CDH流程记录 如何搭建本地yum源 1.配置yum源这里使用 阿里源 http://mirrors.aliyun.com/repo/Centos-7.repo wget http://mirrors.aliyun.com/repo/Centos-7.repo2.安装http软件 yum install httpd -y3.配置httpd.conf vi /etc/httpd/conf/httpd.conf在 AddType appli…

【社区图书馆】vue的生命周期

目录 vue的生命周期 生命周期流程 Init Events & Lifecycle beforeCreate Init injections & reactivity created beforeMount Create vm $el and replace ‘el’ with it mounted beforeUpdate Virtual Dom re-render and patch updated beforeDestroy vm…

python+vue 大学生社团管理系统

本系统分为学生&#xff0c;管理员&#xff0c;社团负责人三个角色&#xff0c;学生可以注册登陆系统&#xff0c;查看社团&#xff0c;申请入团&#xff0c;查看参加社团活动&#xff0c;查看社团新闻&#xff0c;社团负责人对社团信息&#xff0c;入团审核&#xff0c;社团新…

Opencv+Python笔记(五)图像阈值化处理

图像阈值化可以理解为一个简单的图像分割操作&#xff0c;阈值又称为临界值&#xff0c;它的目的是确定出一个范围&#xff0c;然后这个范围内的像素点使用同一种方法处理&#xff0c;而阈值之外的部分则使用另一种处理方法或保持原样。 阈值处理有2种方式&#xff0c;一种是固…

ijkplayer解码流程源码解读

ijkplayer是一款基于ffmpeg的在移动端比较流行的开源播放器。FFmpeg是一款用于多媒体处理、音视频编解码的自由软件工程&#xff0c;采用LGPL或GPL许可证。 要想理解ijkplayer源码&#xff0c;首先得知道视频播放器的基本原理。 视频播放器播放一个互联网上的视频文件&#xf…

win10怎么录屏幕视频带声音?有哪些需要注意的地方?

随着科技的不断发展&#xff0c;屏幕录制已成为常见的工具之一。在Win10系统中&#xff0c;录制屏幕视频带声音也变得越来越简单。本文将指导您如何在Win10上实现录制屏幕视频带声音&#xff0c;并介绍一些需要注意的地方。 需要用到的工具和步骤 在Win10系统中&#xff0c;自…

【u盘提示:驱动器未格式化】如何解决?

u盘虽然使用很方便&#xff0c;可随时拷贝资料到任何有电脑的地方&#xff0c;但它的问题也是比较多的&#xff0c;其中u盘提示驱动器未格式化故障最让人心虚&#xff0c;因为已经无法打开u盘了&#xff0c;里面的资料怎么办&#xff0c;很重要的怎么办&#xff0c;所以今天就教…

OAuth2.0 实战总结

title: OAuth2.0 实战总结 date: 2023-01-30 11:23:12 tags: OAuth2.0 categories:开发技术及框架 cover: https://cover.png feature: false 1. 引言 1.1 OAuth 2.0 是什么&#xff1f; 用一句话总结来说&#xff0c;OAuth 2.0 就是一种授权协议。那如何理解这里的“授权”…