《密码爆破漏洞详解》——黑客必修的入门操作( 建议收藏 )

2024-03-07 10:12

本文主要是介绍《密码爆破漏洞详解》——黑客必修的入门操作( 建议收藏 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

隔壁老张: “狗剩啊, 隔壁xx村的王姐家的女娃好漂亮, 我想盗她qq啊, 你帮我把”
狗剩: “我不会呀”
村里大妈: “那个狗剩啊, 盗个qq号都不会, 他妈妈还好意思说他是学网络安全当黑客的”

在这里插入图片描述

密码爆破漏洞详解

密码爆破介绍

密码爆破又叫 暴力猜解 , 简单来说就是将密码逐个尝试, 直到找出真正的密码为止, 本质上是利用了 穷举法

穷举法专业点讲是叫 枚举法 , 枚举法的中心思想是逐个考察某类事件的所有可能情况, 从而得出一般结论, 那么这个结论就是可靠的

通常情况下, 我们根据已知的部分条件确定答案的大致范围, 并在此范围内对所有可能的情况逐一验证, 直到全部情况验证完毕, 由于枚举法所需的计算成本太高, 因此我们可以利用计算机运算速度快精度高的特点,来执行枚举过程,理论上来讲, 使用枚举法可以 暴力破解任意一个用户密码, 但实际上枚举法的运算量比较大, 解决效率不高, 如果枚举的范围太大( 一般以两百万次为限制), 在时间上就难以承受了, 换句话来说, 只要你有足够的时间, 你就能破解世界上任意一个账号和密码

在这里插入图片描述

密码爆破使用场景

密码爆破的目标有两种, 一种是针对 网站的高权限用户 , 比如网站的管理员账号

在这里插入图片描述
另一种就是 web应用程序的用户 , 比如ssh, ftp, mysql等, 这些服务往往存在一个高权限用户用来执行命令的操作, 比如mysql的root账号, 这些高权限用户原本是为了给开发人员提供方便, 但如果被爆破了密码, 后果将会不堪设想

密码爆破利用思路

  1. 检查网站是否存在验证码
  2. 尝试登录, 判断网站是否对登录行为有所限制
  3. 判断网站是否采用了双因素认证, Token值认证等身份验证手段
  4. 注册账号, 获取网站对密码的限制, 比如长度必须是8位以上,必须包含字母数字大小写等
  5. 准备一个有效的字典并根据密码的限制条件优化字典, 比如去掉明显不符合要求的密码, 提高爆破的效率
  6. 使用代理工具拦截请求,提供字典开始爆破( 或者自己编写脚本进行爆破)
  7. 如果是后台管理的密码, 可以优先尝试admin/administrator/root这种使用概率较高的账号, 破解过程中注意观察’用户名或密码错误’,'用户名不存在’等提示

需要注意的是, 有些网站的登录界面会提示 用户名不存在 这类提示
在这里插入图片描述
这就意味着开发人员在编写代码时先判断了用户名, 用户名匹配后再判断密码, 这样一来或许效率会高一些, 但逻辑并不严谨, 遇到这种情况我们可以先尝试爆破用户名, 拿到真实的用户名以后再针对密码进行爆破

防范密码爆破

密码的复杂性

毋庸置疑, 提高密码的复杂性是防范暴力破解的第一道防线, 开发人员在设计密码格式的时候一定要采用一些相对复杂的策略, 避免出现’123456’这类的弱口令, 常见的密码策略有以下几种

  1. 密码长度8位数以上, 8位数到16位之间最合适
  2. 至少包含一个大写字母( A-Z)
  3. 至少包含一个小写字母( a-z)
  4. 至少包含一个数字( 0-9)
  5. 至少包含一个特殊字符( *&^%$#@!)
  6. 禁止使用手机号码,邮箱等关键’特征’为密码
  7. 用户名和密码不能有任何联系,比如用户名是admin,密码是admin123

密码加密

用户注册时, 将密码加密后保存到数据库中, 用户登录时, 将用户输入的密码加密后再匹配数据库

需要注意的是, 有些加密方式本身就存在漏洞, 比如我们常用的MD5加密就存在0e绕过/数组绕过/MD5碰撞等漏洞, 如果条件允许, 可以使用自己的加密方式

登录逻辑

有些开发人员在编写登录的代码时, 因为效率或是其他原因, 采用先判断用户名, 用户名匹配后在判断密码等类似的逻辑, 这样一来就会导致用户可以单独爆破账号和密码, 从而降低爆破的成本

验证码

验证码是一种区分用户是计算机和人的全自动措施, 主要目的是防范 机器人 , 同时也可以有效防止密码爆破,刷票的恶意操作

需要注意的是, 验证码一定要自己动! 验证码一定要自己动! 验证码一定要自己动!

有些开发人员在编写登录功能的代码时, 确实会添加一个验证码, 但这个验证码不会变化!或者说验证码不会随着页面的刷新而变化!更有甚者在前端添加验证码后, 后端压根就不验证验证码是否正确
在这里插入图片描述
这样一来恶意用户只需要提供一个验证码或者不提供验证码就可以不停的爆破密码

想要使验证码发挥应有的作用, 起码要保证验证码会随着页面刷新而刷新,或随着每一次登录操作而刷新, 同时后端也需要同步更新

登录次数限制

密码爆破漏洞需要穷举所有可能的答案, 这就意味着需要大量的登录次数, 限制登录的次数可以有效增加密码爆破的 时间成本 , 从而使攻击者知男而退

限制登录次数分为两个方面, 一个是开发人员通过代码逻辑来限制登录的次数, 在规定时间内限制登录的最大次数, 比如连续登录失败三次以后锁定账号, 或者一分钟内只能登录两次/三次, 同时还需要考虑到用户的体验性, 在用户体验和网站安全之间选择一个适中的限制

需要注意的是, 限制登录次数只能增加爆破的时间成本, 如果遇到愣头青非得跟你杠到底, 那密码被爆破成功就是时间的问题了, 条件允许的情况下, 可以与管理员沟通, 定期更换密码 , 比如每个月或没隔两个星期换一次密码, 配合登录次数的限制, 可以有效降低密码被爆破的风险

在这里插入图片描述

学习计划安排


我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

:黑客&网络安全的零基础攻防教程

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

在这里领取:

这个是我花了几天几夜自整理的最新最全网安学习资料包免费共享给你们,其中包含以下东西:

1.学习路线&职业规划

在这里插入图片描述
在这里插入图片描述

2.全套体系课&入门到精通

在这里插入图片描述

3.黑客电子书&面试资料

在这里插入图片描述

4.漏洞挖掘工具和学习文档

在这里插入图片描述

这篇关于《密码爆破漏洞详解》——黑客必修的入门操作( 建议收藏 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783174

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP