最新暴力破解漏洞技术详解

2023-11-03

点击星标,即时接收最新推文

cc2263c2621e9e8b0f7da7ea6ae955b2.png

本文选自《web安全攻防渗透测试实战指南(第2版)》

点击图片五折购书

f6bb33a7e7ae6af4d5d25c0ce0af5244.gif

暴力破解漏洞简介

暴力破解漏洞的产生是由于服务器端没有做限制,导致攻击者可以通过暴力的手段破解所需信息,如用户名、密码、短信验证码等。暴力破解的关键在于字典的大小及字典是否具有针对性,如登录时,需要输入4位数字的短信验证码,那么暴力破解的范围就是0000~9999。

ed6fa927a521d438dfd449ebc2c0988f.gif

 暴力破解漏洞攻击

暴力破解漏洞攻击的测试地址在本书第2章。

一般情况下,系统中都存在管理账号——admin。下面尝试破解admin的密码:首先,在用户名处输入账号admin,接着随便输入一个密码,使用Burp Suite抓包,在Intruder中选中密码,导入密码字典并开始爆破,如图4-1所示。

 c9ea8e17573e0cb3289a1f2fc37952ee.png

图4-1  

可以看到,有一个数据包的Length值跟其他的都不一样,这个数据包中的Payload就是爆破成功的密码,如图4-2所示。

69c32870875fe87f5a74c2a3f62d53a8.png

图4-2  

79c6c880275971dd16de43ce5ef54a89.gif

暴力破解漏洞代码分析

服务器端处理用户登录的代码如下所示。程序获取POST参数“username”和参数“password”,然后在数据库中查询输入的用户名和密码是否存在,如果存在,则登录成功。但是这里没有对登录失败的次数做限制,所以只要用户一直尝试登录,就可以进行暴力破解。

<?php
$con=mysqli_connect("localhost","root","123456","test");
// 检测连接
if (mysqli_connect_errno())
{
echo "连接失败: " . mysqli_connect_error();
}
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysqli_query($con,"select * from users where `username`='".addslashes($username)."' and `password`='".md5($password)."'");
$row = mysqli_fetch_array($result);
if ($row) {
exit("login success");
}else{
exit("login failed");
}
?>

由于上述代码没对登录失败次数做限制,所以可以进行暴力破解。在现实场景中,会限制登录失败次数。例如,如果登录失败6次,账号就会被锁定,那么这时攻击者可以采用的攻击方式是使用同一个密码对多个账户进行破解,如将密码设置为123456,然后对多个账户进行破解。

a41a09920d6bafebbab7374a507bceab.gif

验证码识别

在图像识别领域,很多厂家都提供了API接口用于批量识别(多数需要付费),常用的技术有OCR和机器学习。

1.OCR

OCR(Optical Character Recognition,光学字符识别),是指使用设备扫描图片上的字符,然后将字符转换为文本,例如识别身份证上的信息等。Python中有多个OCR识别的模块,例如pytesseract。但是OCR只能用于简单的验证码识别,对干扰多、扭曲度高的验证码识别效果不佳。

图4-3所示为使用最简单的语句识别验证码。

67c550f1de3b6b0e32199dafd3a89e2e.png

图4-3  

2.机器学习

使用机器学习进行图像识别是比较有效的方式,但是工作量大,需要标注大量样本进行训练,常用的深度学习工具有TensorFlow等。下面简单介绍使用TensorFlow进行验证码识别的过程。

第一步,如图4-4所示,使用Python随机生成10 000个图片训练集和1 000个图片测试集。

b22dd441c652785f37a7e771910b0157.png

图4-4  

第二步,使用TensorFlow训练数据,当准确率在90%以上时,保存训练模型。

第三步,重新生成100个图片,使用TensorFlow进行预测。如图4-5所示,可以看到有96个预测结果是正确的。

61c22d347624277109098135f877b289.png

图4-5  

GitHub上有多个验证码识别的开源项目,例如ddddocr,该项目可以破解常见的验证码,读者可以自行尝试。

0647d95eccb779691443bbefbf6bf832.gif

暴力破解漏洞修复建议

针对暴力破解漏洞的修复,笔者给出以下建议。

— 使用复杂的验证码,如滑动验证码等。

— 如果用户登录失败次数超过设置的阈值,则锁定账号。

— 如果某个IP地址登录失败次数超过设置的阈值,则锁定IP地址。这里存在的一个问题是,如果多个用户使用的是同一个IP地址,则会造成其他用户也不能登录。

— 使用多因素认证,例如“密码+短信验证码”,防止账号被暴力破解。

— 更复杂的技术是使用设备指纹:检测来自同一个设备的登录请求次数是否过多。

例如,WordPress的插件Limit Login Attempts就是通过设置允许的登录失败次数和锁定时间来防止暴力破解的,如图4-6所示。

1d79fb686adc1964799c38d2069d713f.png

图4-6  

9d5a24f25a688ac22bfe4fe840189514.gif

MS08067安全实验室视频号已上线

欢迎各位同学关注转发~

—  实验室旗下直播培训课程  —

22f5bdd29af599f60954df2354a6d9a1.png

2a8c8adb4c23f6a5eed27ec88db95a75.jpeg

96745507172827d9c731e5de708ced36.jpegb9d732a329dc7be61c9bb18b7fbbc8da.png

9a495723171d0759ca0d5f09784c8de8.jpeg

a0486341d8ffa817e8d9fb95a738b135.jpeg

90e92a6135aa8c3b0d0e9de07d4ba386.jpeg

25a50482e7c55e64322b59de3301a9cb.jpeg

3e3eaea6476c47953d6e543b1eb76606.jpeg


和20000+位同学加入MS08067一起学习

31177ef6717a81ea49c12b5dc4d1585a.gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最新暴力破解漏洞技术详解 的相关文章

  • Python函数&模块

    函数 一个专门用于实现某个功能的代码块 可重用 模块 集成了很多功能的函数集合 函数又分内置函数和自定义函数 内置函数 len bin 自定义函数 def send status print 发送成功 send status 模块也分为内置
  • SSM框架笔试题(2)

    文章目录 1 对比jdbc请简述Mybatis框架的好处有哪些 2 简述Spring的AOP 并说明其应用场景有哪些 3 介绍一下 ResponseBody注解 4 简述SpringMVC执行流程 5 mybatis 和 有什么区别 6 简
  • 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server

    启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server 2021 6 1 本文内容 在 Exchange 服务器上启用和配置 POP3 或 IMAP4 如在 Exchange 服务器上启用和配置POP3和在 E
  • 说说对npm的开发模式和生产模式的理解

    nodejs这些年的发展非常快 相信没有哪个前端不知道的了 npm也成为了前端开发中经常用到了的一个命令 那么npm不是只用一个 npm install xxx 命令就够了吗 实际上并不是这样 发现有些团队在使用npm的时候没有认真去搞懂n
  • Web自动化测试11:Selenium之frame切换、多窗口切换

    更多功能测试以及全套学习路线图均在专栏 戳进去领取 Web自动化测试01 认识web自动化在什么项目中适用 Web自动化测试02 Web自动化测试工具选择大全 Web自动化测试03 Selenium安装配置 详细教程 Web自动化测试04
  • Java 后端工程师的书单推荐

    拒绝盗版 从你我做起 源码圈 众胖友协作完成 希望书单能在你想要进一步打怪升级的路上 给予些许帮助 建议先收藏本书单 认真啃完一本再买下一本 扎实走完每一步 部分书籍关联相关博客和微信公众号 让你更嗨皮 如果对你略有帮助 烦请分享给你的基友
  • Linux 内存管理

    文章目录 前言 连续分配 单一连续分配 分区式分配 固定分区分配 动态分区分配 可重定位分区分配 离散分配 分段 分页 多级页表 快表 TLB 段页式 Linux 前言 Linux 内存管理 虚拟内存管理 虚拟内存空间 虚拟内存分配 Lin
  • SpringBoot如何使用WebSocket+jsch实现前后端交互获取服务器log并返回前端?

    一 导入依赖
  • [阶段4 企业开发进阶] 5. Netty新编

    文章目录 1 NIO 基础 1 1 NIO 三大组件 Channel Buffer Selector 1 2 ByteBuffer 总结ByteBuffer用法 ByteBuffer结构 调试工具类 常见方法 分散读取 集中写入 粘包半包
  • 解决element-ui的tab栏切换样式的问题

    1 出现如上情况 用element ui同样也可以实现 2 实现难度在于 用css画出来的三角可以实现 三十由于父盒子宽度不够 会被默认隐藏 此时我们需要抬高下划线和三角形 如何用伪类让后面的线也抬高 代码如下 v deep thing t
  • 在linux上强制停止进程应该用哪个命令,如何在Linux系统中使用命令终止无响应进程...

    有多种工具可用于从命令行终止无响应或挂起的进程 包括kill pkill和killall 这些命令通过向这些无响应的进程发送特定信号来工作 您将需要进程ID或PID信息 以便可以向他们发送所需的终止信号 您可以使用命令来检索无响应进程的PP
  • java两个jsonobject对象合并_Java:将两个json对象与主键合并在一起

    假设我在内存中有两个 JSONObject数组 每个对象都有一个在两个数组中相似的键 数组1 name Big Melons Co location Inner City Dubai id 1A name Pear Flavored Jui
  • CGI与FastCGI

    当我们在谈到cgi的时候 我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求 并将存储在服务器上的HTML文件返回给浏览器 也就是静态html 事物总是不 断发展 网站也越来越复杂 所以出现动态技术 但是服务器并不能直接运
  • [激光原理与应用-48]:《焊接质量检测》-5-德擎先进激光过程诊断系统ALPAS分析

    目录 第1章 概述 第2章 产品特性与功能 2 1 传感器 2 2 主机数据分析系统 第3章 工作原理 第4章 系统组成 第5章 案例分析 第1章 概述 先进激光过程诊断系统 ALPAS Advanced Laser Process Ass
  • 高德地图key验证失败:[INVALID_USER_SCODE]

    高德地图key验证失败 INVALID USER SCODE key错误 错误出现原因 如果是在非打包情况下 电脑直接安装 调试 调试版安全码SHA1 一定要填写 否则会报key错误 不填只能打包成apk文件再安装 如果修改了依然报错 那么
  • 解决垃圾回收难题,提升Android应用性能的技巧

    Android应用程序在运行过程中可能会遇到内存溢出 Memory Out of Bounds 和内存泄漏 Memory Leak 的问题 这些问题会导致应用程序性能下降 响应变慢甚至崩溃 内存溢出 Memory Out of Bounds
  • springboot部署到服务器遇到的SSL证书问题

    错误 javax net ssl SSLException java lang RuntimeException Unexpected error java security InvalidAlgorithmParameterExcepti
  • Pycharm使用教程 (非常实用)

    一 PyChram下载 官网 http www jetbrains com pycharm Windows http www jetbrains com pycharm download section windows Linux http
  • 【STL】模板概念+STL介绍

    模板 Template 模板就是C 实现代码重用机制的一种工具 它可以实现类型参数化 即把类型定义为参数 从而实现了真正的代码可重用性 可以使用模板来定义函数和类 当你定义一个如下函数 想要计算一个数的平方 int square int x
  • sql中用什么替代in

    IN和EXISTS 有时候会将一列和一系列值相比较 最简单的办法就是在where子句中使用子查询 在where子句中可以使用两种格式的子查询 第一种格式是使用IN操作符 where column in select from where 第

随机推荐

  • CVE-2019-0708 远程桌面代码执行漏洞复现

    0X00 靶机 漏洞环境 我当时就是虚拟机装了Windows7 SP1的系统 一下就ojbk 你们没有 就下载装吧 使用VM安装Windows7 SP1模拟受害机 Windows7 SP1下载链接 这里的靶机是使用清水表哥提供的win7sp
  • SOA:原理•方法•实践,第 1 部分: SOA 的基本概念

    SOA 原理方法实践 的第 1 章从概念上对 SOA 给出一个全面而精炼的总体描述 首先说明 SOA 的特点 以及使用 SOA 对系统进行架构决策和设计的必要性 然后介绍了 SOA 的参考体系结构 设计原则及相关技术的简介 查看本系列更多内
  • Android性能优化 _ 大图做帧动画卡?优化帧动画之 SurfaceView滑动窗口式帧复用

    ps 粗斜体表示引导方案逐步进化的关键点 SurfaceView逐帧解析 帧复用 简单回顾下上一篇的内容 原生帧动画在播放前解析所有帧 对内存压力大 SurfaceView可以精细地控制帧动画每一帧的绘制 在每一帧绘制前才解析当前帧 且解析
  • java常用部署脚本

    记一个工作中常用的java部署脚本 首先进入linux 1 使用下面代码段 vim run sh 2 然后按 i 进入编辑模式 3 拷贝下面脚本代码 bin sh chkconfig 2345 99 10 description Start
  • 西门子S7-1200 PLC进行项目选型要了解这些

    西门子S7 1200 PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200
  • Java多线程编程详解(第零章)

    Java多线程编程详解 0 参考书籍 Java并发编程实战 Java并发编程实战 本文是关于以上两本书的读书笔记以及一些个人思考 0 关于并发与多线程的简介 编写正确的程序很难 而编写正确的并发程序则难上加难 与串行程序相比 在并发程序中存
  • 如何针对单个表单项去掉验证和添加验证?

    this refs conpanyForm clearValidate district 清除校验 this refs conpanyForm validate district 添加校验
  • Ubuntu安装notepad++

    习惯了Windows的代码编写输入方式 转回Ubuntu vim编程总有点不习惯和不方便 即使vim功能很强大 我还是喜欢Windows的代码编写输入方式 简简单单 安装个notepadqq就行了 Ubuntu版notepad 安装方式 s
  • vue vue-json-viewer 展示 JSON 格式数据

    1 下载 vue json viewer npm 下载 vue json viewer Vue2 npm install vue json viewer 2 save Vue3 npm install vue json viewer 3 s
  • MS Active Accessibility 接口技术编程尝试

    MS Active Accessibility 接口技术编程尝试 编译 崔传凯 下载源代码 Microsoft Active Accessibility 2 0 is a COM based technology that improves
  • 【Ogre编程入门与进阶】第十三章 公告板与粒子系统

    Ogre编程入门与进阶 第十三章 公告板与粒子系统 标签 ogre公告板粒子系统ogre粒子系统 2015 07 05 14 41 1365人阅读 评论 1 收藏 举报 分类 Orge模块 16 版权声明 本文为博主原创文章 未经博主允许不
  • 计算机电源接口图解,菜鸟老鸟都要知道 电源接口图文全教程

    IT168 应用 电源的功率一直是玩家们关注的焦点 可对于刚涉足DIY领域的用户来说 自己组装DIY一台电脑拿才是最令人兴奋的事情 组装电脑少不了要接各种各样的线材 那么如何辨别各种类型的接口 每个接口之间的的功能有何区别呢 电源接口种类繁
  • 微信小程序之分享页面内容为空

    文章目录 错误记录 分享的关键方法 onShareAppMessage 错误记录 分享出去的页面 别人打开没有内容 解决方法参考文章 说是因为分享出去的页面的某些数据是上级页面传递过来的 结果直接分享出去的页面 别人打开是获取不到传递过来的
  • leetcode 二叉树题目总结

    leetcode 二叉树题目总结 一 基本问题 遍历 前序遍历 后序遍历 中序遍历 莫里斯遍历 空间复杂度O 1 层次遍历 由序列构造二叉树 递归解决二叉树问题 将二叉树转换为其他结构 二叉树结构 struct TreeNode int v
  • nrm安装(NPM源管理器)

    1 什么是nrm nrm 是一个 npm 源管理器 允许你快速地在 npm源间切换 npm默认情况下是使用npm官方源 使用命令可以查看 一般我们都会用淘宝npm源 设置淘宝源 npm set registry https registry
  • 智能小车之PWM脉冲控制小车调速

    目录 一 PWM脉冲控制小车调速 二 代码实现 一 PWM脉冲控制小车调速 原理 全速前进是LeftCon1A 0 LeftCon1B 1 完全停止是LeftCon1A 0 LeftCon1B 0 那么单位时间内比如 20ms 有15ms是
  • java keytool 工具

    Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具 Keytool将密钥 key 和证书 certificates 存在一个称为keystore 的文件 受密码保护 中 在keystore里 包含两种数据 密钥实体 Key en
  • 【编程之路】Python编程进阶

    Python编程进阶 不使用中间变量 交换两个变量a和b的值 a b b a 需要注意 a b b a 这种做法其实并不是元组解包 虽然很多人都这样认为 Python 字节码指令中有 ROT TWO 指令来支持这个操作 类似的还有 ROT
  • JAVASE-01:基础概念知识及学习环境配置

    JAVASE 01 基础概念知识及学习环境配置 Java语言发展史 詹姆斯 高斯林 James Gosling 1977年获得了加拿大卡尔加里大学计算机科学学士学位 1983年获得了美国卡内基梅隆大学计算机科学博士学位 毕业后到IBM工作
  • 最新暴力破解漏洞技术详解

    点击星标 即时接收最新推文 本文选自 web安全攻防渗透测试实战指南 第2版 点击图片五折购书 暴力破解漏洞简介 暴力破解漏洞的产生是由于服务器端没有做限制 导致攻击者可以通过暴力的手段破解所需信息 如用户名 密码 短信验证码等 暴力破解的