freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

最新暴力破解漏洞技术详解
2024-02-23 10:09:10

暴力破解漏洞简介

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

暴力破解漏洞攻击

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

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



图4-1  

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


图4-2  

暴力破解漏洞代码分析

服务器端处理用户登录的代码如下所示。程序获取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,然后对多个账户进行破解。

验证码识别

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

1.OCR

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

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


图4-3  

2.机器学习

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

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

图4-4  

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

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

图4-5  

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

暴力破解漏洞修复建议

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

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

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

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

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

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

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

图4-6  

# 渗透测试 # 网络安全 # web安全 # 系统安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录