当前位置: 首页 > web >正文

小迪安全v2023学习笔记(七十五讲)—— 验证码安全插件识别攻击利用宏命令

文章目录

  • 前记
  • WEB攻防——第七十五天
    • 验证码安全篇&接口滥用&插件识别&复用绕过&宏命令填入&滑块类
      • 知识背景
      • 图片验证码 - 插件识别-登录爆破&接口枚举
        • 识别插件
          • NEW_xp_CAPTCHA
          • captcha-killer-modified
        • 案例演示
          • 插件识别
          • 接口枚举
      • 图片验证码 - 重复使用
        • 原理
        • 案例演示
      • 滑块验证码 - 宏命令-某 Token&Sign & 滑块案例

前记

  • 今天是学习小迪安全的第七十五天,本节课延续上节课的内容,仍然是验证码安全,不过这里主要是传统的图片验证码,讲了如何用插件进行识别,以及后续攻击利用
  • 内容比较简单,主要是理解思路,然后学会工具的使用
  • 所用到的靶场资源已放至下方链接,需要自取:
    • https://pan.baidu.com/s/1dawN1_4FFMvoUdjMF7kArA
    • 提取码:gaii

WEB攻防——第七十五天

验证码安全篇&接口滥用&插件识别&复用绕过&宏命令填入&滑块类

知识背景

  • 现在网站人机识别验证码包括传统图片英数识别滑块识别(滑到底/滑到中间)、点击识别(只点击/点击指定文字/点击指定图像)、其他智能识别(旋转/音视频等等)
  • 验证码识别绕过等技术适用于:口令存在爆破,接口枚举调用,任意用户注册等安全问题
    1. 验证码简单机制 - 验证码过于简单可爆破
    2. 验证码重复使用 - 验证码验证机制可绕过
    3. 验证码智能识别 - 验证码图形码可被识别
    4. 验证码接口调用 - 验证码触发接口可枚举
  • 这节课主要是针对传统的图片英数识别验证码,以及特定的滑块验证码进行绕过

图片验证码 - 插件识别-登录爆破&接口枚举

识别插件
  • 这里识别验证码的插件有如下几个:
    • NEW_xp_CAPTCHA:免费白嫖版,对复杂的验证码识别率可能比较低,看小迪演示感觉不太好用
    • xp_CAPTCHA_api:上面这个的付费版,通过调用API去识别验证码,准确率会高一点
    • captcha-killer-modified:免费白嫖版,感觉这个比较好用一点
  • 这里我就演示两个白嫖版的插件吧
NEW_xp_CAPTCHA
  • 直接下载jar包和server_4.3.py文件,先更新ddddocr库:
# 未安装ddddocr模块
python3 -m pip install ddddocr
# 已经安装过的请更新模块
python3 -m pip install -U ddddocr
  • 然后在BurpSuite里加载这个jar包,之后启动这个server.py文件:
    在这里插入图片描述

  • 在BP中打开xiao Pao插件,然后设置验证码的接口地址:
    在这里插入图片描述

  • 最后在使用时将爆破的线程设置为1即可

captcha-killer-modified
  • 下载captcha-killer-modifiedjar包以及codereg.py文件,启动py文件:
    在这里插入图片描述

  • 然后在BP中安装插件,配置验证码接口信息:
    在这里插入图片描述

  • 这里实战的时候还需要进行一些其他的配置,详细教程看这篇文章:Burpsuite验证码识别插件 “captcha-killer-modified“ 使用教程(详细)-CSDN博客

案例演示
插件识别
  • 这里演示的案例是SeaCMS,搭建环境为PHP5.6MySQL5.7,搭建教程不再演示,后台账号密码为admin/admin123

  • 我们进入登录页面,发现他需要输入验证码,否则不让登录:
    在这里插入图片描述

  • 假设我们并不知道admin用户的密码,那么这里常见的情况就是尝试爆破密码,坏消息是这里存在验证码,但好消息是这个验证码是传统的英数验证码,比较简单

  • 那不卖关子,这里我们就直接抓包上插件了:
    在这里插入图片描述

  • 转到Intruder模块,我们需要爆破pwd参数,那就在这里加上$$,然后需要识别验证码的地方是validate参数

  • 这里我就只演示NEW_xp_CAPTCHA插件的使用,我们需要找到该验证码的地址,最简单的方式就是直接F12然后选中验证码元素:
    在这里插入图片描述

  • 这里可以看到源为http://sea.cms:9991/include/vdimgck.php,访问刷新几次验证确实是验证码接口

  • 然后我们就配置到插件中,这里一定要记得点保存配置
    在这里插入图片描述

  • 然后在Intruder模块中替换validate参数的值为@xiapao@1@,设置字典和线程数:
    在这里插入图片描述

  • 开始爆破,可以访问8899端口查看识别结果:
    在这里插入图片描述

  • 说实话真的一般,并且这里也没有成功爆破出来正确密码,一直显示验证码是错误的,我也不懂为什么
    在这里插入图片描述

  • 那我们这里换成第二个插件captcha-killer-modified试一试,根据上面文章的配置,绕过是这样就说明成功识别:
    在这里插入图片描述

  • 然后这里还是设置线程数为1,延迟为1秒,直接爆破:
    在这里插入图片描述

  • 他这里就全部变成了密码错误,说明验证码是能成功识别的,为什么这里密码为admin也不对,是因为我们没有创建普通用户,这里我也不进行演示了,创建一个普通用户然后再跑一遍是可以的

  • 好,那这里就是关于插件识别的部分,通过插件我们能够成功识别到验证码,但是很致命的问题就是这个速度很慢

接口枚举
  • 这个其实就是假设他有个接口,需要先进行验证码识别之后才能调用,比如这里,如果不输入验证码,那就发不了短信验证码:
    在这里插入图片描述

  • 输入图片验证码,然后获取短信验证码抓包:
    在这里插入图片描述

  • 转发到Intruder模块,按照刚刚的配置,直接攻击:
    在这里插入图片描述

  • 这里如果他没有做任何验证的话,那么是会一直调用短信发送接口,向指定手机号发送短信验证码,造成短信轰炸

  • 小迪上面是可以的,但是我这里不知道是不是网站更新了,或者没有注册账号的原因,没有细测,所以并没有发送短信

图片验证码 - 重复使用

原理
  • 图片验证码重复有两种情况,一种是如果不手动刷新页面,他就不刷新验证码,导致这个验证码能够一直使用;另一种是即使刷新了页面,但是之前的验证码仍然能够使用
  • 当然也有一些情况下刷新页面后重复提交失败,并不是验证码失效了,而是token这种值导致数据包存在唯一性
案例演示
  • 这里还是SeaCMS,如果我们不刷新页面,那么可以重复使用当前验证码去提交爆破密码:
    在这里插入图片描述

  • 这里随便输入一个密码123456,然后点击登录:
    在这里插入图片描述

  • 会提示密码错误,此时不要点击手动跳转,我们直接点击上面的返回箭头回到刚才的页面,会发现验证码并没有刷新,此时仍可以提交密码

  • 第一种情况的重复提交大概就是这么个意思,理解即可

  • 第二种的特殊情况其实之前的案例已经演示过了,带有token值:
    在这里插入图片描述

  • 原本这里设计的初衷是每个token只绑定一个验证码,但是这里并不是,他的token可以复用,以至于我们可以直接爆破图片验证码

  • 当然,这里删掉token也是可以尝试看看能不能发送短信的,这里就不细测了

  • 然后小迪上面这里是用福利期货做的演示案例,这个我们打不开,也演示不了,大概理解这个思路就行

滑块验证码 - 宏命令-某 Token&Sign & 滑块案例

  • 参考文章:burp suite 高端利用之编写宏规则绕过滑动验证码_怎么用burp绕过滑块验证-CSDN博客
  • 这篇文章中的滑块验证主要是因为他的验证值是直接写死在前端的,而不是滑动完之后再显示的,所以可以一开始用宏命令去爬取最后的值,然后放到验证的参数中,导致绕过
  • 那这样不管是滑块还是点击验证,只要能找到他最终的验证值,我们就可以进行替换,导致绕过
  • 所以其实比较难遇到,大部分都是点击之后才出现,那就没办法了,比如这里:
    在这里插入图片描述
    在这里插入图片描述
http://www.xdnf.cn/news/19554.html

相关文章:

  • 设计模式在Java中的应用:从单例模式到工厂模式的全面解析!
  • 计算机网络总览
  • 使用 GLSL 实现真实自然的纹理混合技术详解
  • 【Java实战⑨】Java集合框架实战:List集合深度剖析
  • 【STM32】外部中断(下)
  • 829作业
  • 告别强化学习?GEPA:用“反思性提示词进化”实现超越的新范式
  • SpringMVC的执行流程
  • 阿里云-应用实时监控服务 ARMS
  • 想学怎么写网站怎么办?初学者专用! (HTML+CSS+JS)
  • 微知-Mellanox OFED编译的一些细节?无法编译怎么办?如何添加自定义编译选项?
  • selenium 元素操作
  • mysql5.7.44安装遇到登录权限问题
  • NM:微生物组数据分析的规划与描述
  • 数字世界的两面性:从乘积组合到最大公约数的算法之旅
  • MCP(Model Context Protocol,模型上下文协议)介绍
  • 计算机毕设选题:基于Python+Django实现电商评论情感分析系统
  • 如何利用AI IDE快速构建一个简易留言板系统
  • 基于SpringBoot + Vue 的宠物领养管理系统
  • Decoder 解码器
  • JPEG XS概述
  • 【51单片机】【protues仿真】基于51单片机智能晾衣架系统
  • centos7安装jdk17
  • Linux 中进入 root 权限
  • C++ 数据结构之哈希表及其相关容器
  • 从RNN到BERT
  • C++Primer笔记——第七章:类(上)
  • 开发常用工具专栏
  • Playwright Python 教程:中级篇
  • Windows PowerShell