草庐IT

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

士别三日wyx 2023-10-27 原文

隔壁老张: “狗剩啊, 隔壁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碰撞等漏洞, 如果条件允许, 可以使用自己的加密方式

登录逻辑

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

验证码

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

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

有些开发人员在编写登录功能的代码时, 确实会添加一个验证码, 但这个验证码不会变化!或者说验证码不会随着页面的刷新而变化!更有甚者在前端添加验证码后, 后端压根就不验证验证码是否正确

这样一来恶意用户只需要提供一个验证码或者不提供验证码就可以不停的爆破密码

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

登录次数限制

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

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

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

有关《密码爆破漏洞详解》——黑客必修的入门操作( 建议收藏 )的更多相关文章

  1. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  2. Tomcat AJP 文件包含漏洞(CVE-2020-1938) - 2

    目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控

  3. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  4. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  5. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  6. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  7. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  8. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  9. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  10. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

随机推荐