学习笔记暴力破解漏洞分析

概念

暴力破解,其实就是利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式,如果身份验证模块设计的不好攻击者可以利用自动化攻击进行暴力破解,大大增加了密码被破解的风险。
暴力破解的测试方法是针对账号和或密码进行逐一比较,直到找到正确的账号和密码。
一般分为三种情况:
在已知账号的情况下,加载密码字典针对密码进行穷举测试;
在未知账号的情况下,加载账号字典,并结合密码字典进行穷举测试;
在未知账号和密码的情况下,利用账号字典和密码字典进行穷举测试

测试流程

学习笔记暴力破解漏洞分析_第1张图片

暴力破解测试场景

学习笔记暴力破解漏洞分析_第2张图片

账户探测
探测存在与否
方案一:Top500用户名、手机号
方案二:邮箱、员工编号
指定口令爆破用户名

指定类123456口令爆破用户名
正常的top500,top10000帐号;
单个字母、两个字母、三个字母、四个字母随机组合的帐号
小工具pydictor值得推荐 一个强大实用的黑客暴力破解字典建立工具
python pydictor.py -base L --len 2 3

  https://github.com/LandGrey/pydictor

密码爆破

1.top500, top3000,top10000,自定义密码
Top 系列,几乎安全从业都有自己的弱口令字典,常规就好,太大的字典跑起来也费劲,关键是定制
定制字典,pydictor值得推荐:https://github.com/LandGrey/pydictor
社工库的使用,指定用户的历史密码,是一种尝试
2.厂商特色口令生成,如baidu@123
适用于应用管理员类人员以及主机协议类密码
更多定制类字典也可以pydicor
短信/邮箱验证码爆破
1.部分登录验证码的分类也可适用于此
2.验证码的本身绕过
返回包回显(包括返回包、输出在cookie等)
JS控制
返回包控制:True&false控制(0&1),修改返回包可绕过
3.4位数字,验证码爆破,很快
4.6位数字,验证码爆破;
可根据多线程的前提进行多进程处理,0-199999一波;200000-399999一波…(依次类推);也可以看频率,哪块区间分布的概率较高可重点关注;也可以指定前一位或两位进行爆破。
5.弱token
例:奇虎360任意用户密码修改漏洞,发送给邮箱的验证链接里面的vc值为时间戳的md5加密;作为一种检验参数可被猜测。
基于密码找回的手机号、UID、邮箱等遍历,结合客户端源码可能的些蛛丝马迹
协议口令爆破
1.SSH RDP FTP MySQL MSSQL …
    a)Fenghuangscan值得推荐,Hydra (Kali自带)值得拥有;
    b)Nmap 也可完成部分破解工作,本身是一个基础工具,但script下的脚本能让你做出不基础的事情
    c)毕竟直接拿到远控权限事半功倍,可直接获取数据,对于测试来讲还可获取源码,以半审计的方法进行挖掘。
2.SMTP、VPN协议类
    a)第一点提到的一些协议,初具成熟均不公开于互联网(当然意识和测试情况也有),但SMTP 和 VPN 类,大部分都有,也是入侵的概率很大的入口点
    b)翻到邮箱,根据信息检索,信息很精准,很有可能获得认证信息
    c)获得VPN认证。
3.特殊服务类未授权访问或者弱认证
    a)Redis未授权访问
    b)Jenkins未授权访问
    c)MongoDB未授权访问
判断成功
针对http协议的爆破主要分为
有返回特征:有明显的错误提示特征,如当用户登录错误后有错误提示。
无返回特征:没有明显的错误提示,但是可以通过正确的页面大小或者返回的状态码进行判断是否成功
攻击防御
  1. 登录界面暴力破解,哪些加固方法?
a.阈值的设立
i.单位时间内超过额定请求次数,封帐号&封IP段时间
ii.支持逆向思路
b.密码输入错误次数达到3次后增设验证码
i.验证码自身的安全性参考下一个问题

c.自身应用系统的健壮性
i.强制要求用户注册时满足口令复杂度要求
ii.定期检索数据库弱口令帐号的存在,可比对top500的密文值

2. 图形验证码自身常见的加固方法?
    1)字体扭曲
    2)字体粘连
    3)字体镂空
    4)字体混用
    5)主体干扰线
    6)背景色干扰
    7)背景字母干扰
    8)公式验证码
    9)加减法验证码
    10)逻辑验证码

3. 安全登录流程设计?
a.系统设置一个固定的盐值,该盐值最好足够复杂,如:1qaz2wsx3edc4rfv!@#$%^&**qqtrtRTWDFHAJBFHAGFUAHKJFHAJHFJHAJWRFA
b.用户注册、修改密码时,将用户的原始密码与我们的固定盐值拼接,然后做md5运算。
c.传递至后端,保存进数据库(数据库中保存的密码是用户的原始密码拼接固定盐值后,md5运算后的结果)。
d.登录时,将用户的原始密码与我们的固定盐值进行拼接,然后做md5运算,运算后的结果再拼接上我们的随机码,再次md5运算,然后提交。
e.后端接收到登录请求后,将从数据库中查询出的密码与session中的随机码拼接后,md5运算,然后与前端传递的结果进行比较。
   注:这种登录流程对于数据包重放来讲的确有效,但对于正常的selenium浏览器输入爆破仍需要结合阈值和验证码来防御。

4.针对验证码可多次重用的加固方法?

实践操作
操作一 面向WEB登录的暴力破解(tomcat登录爆破)
漏洞分析
1.密码强度太弱
2.无验证机制
漏洞验证利用
学习笔记暴力破解漏洞分析_第3张图片

设置页面
IP设置:在此处添加扫描IP的范围。当将起始IP和终止IP设置 为同一个IP时,意味着只针对单个IP进行扫描。
设置用户名字典。将准备好的用户名字典内容全部复制到该区域即可。
设置密码字典。将准备好的密码字典内容全部复制到该区域即可
批量导入IP列表进入扫描。
设置端口和扫描间隔。Tomcat默认的服务端口为8080,视具体案例下tomcat的实际端口设置。对扫描间隔进行设置,这里默认为10毫秒。
信息页面
信息页面也可以理解为扫描结果输出页面。
最终扫描爆破结果。将匹配成功的账户密码以及URL输出到此处。
将需要扫描的IP添加到地址段中。
显示正在扫描的 IP列表。
将枚举匹配的过程输出到此处。
学习笔记暴力破解漏洞分析_第4张图片

拓展知识

开启tomcat WEB访问日志便于监控系统是否被恶意暴力破解。具体的操作如下:
1.需要修改的配置文件是tomcat/conf/server.xml文件。
2.需要修改的位置如下:
在这里插入图片描述

将图中第141-142行内容取消注释即可。
3.重启tomcat服务。
4.然后访问tomcat等操作就会被记录下来。
学习笔记暴力破解漏洞分析_第5张图片

操作二 针对带验证码的暴力破解(74cms 3.5.1爆破)

漏洞分析
1.验证码不刷新:这里指,只要不刷新登录或者操作页面,验证码就一直不刷新,与操作(或者登录)成功失败无关,这种情况下只要保持页面不刷新,就可以爆破。(后端程序在接受一次其你去后,并没有主动请求刷新验证码)
2.弱口令密码
3.未限制账户密码固定时间内的错误次数
4.未设置验证码错误次数和超时
漏洞验证利用
1.配置浏览器代理
2.切换到74cms后台登录界面,默认情况下我们是不知道账户密码的,因此我们这时候模仿输入一个错误的账户及密码口令和验证码。
3.抓包将输入的账户、密码口令以及验证码数据抓取到。
4.右键“Send to Intruder”
学习笔记暴力破解漏洞分析_第6张图片

5.在Positions下设置attack Type为 Cluster Bomb、然后添加需要暴力破解的变量admin_name和admin_pwd字段。
学习笔记暴力破解漏洞分析_第7张图片

6.加载爆破字典(其中Payload Sets中的Payload set值是按序的,例如上一步中你第一个设置变量是username那么,1则代表username,2代表password)。
学习笔记暴力破解漏洞分析_第8张图片

7.设置完成后,开始暴力破解,依次选择左上角Intruder Start attack。
学习笔记暴力破解漏洞分析_第9张图片

8.当看到下图中不同status(状态),不同响应字段长度和下方的Response信息就表明暴力破解成功了。
学习笔记暴力破解漏洞分析_第10张图片

操作三 BurpSuite破解一句话

概述
我们发现了之前的疑似一句话木马,但是我们还不知道一句话的密码是什么,无法用工具进行连接,本篇文章,我们利用burpsuite对一句话木马进行暴力破解。
暴力破解
eval可用于执行任意的php代码,中国菜刀是通过POST的方式来提交命令,来达到列目录操作文件等的目。
我们是不是可以构造一句代码用post的方式提交,来获取一个返回呢? 我们利用火狐浏览器的Hackbar,构造post数据pass=echo ‘OK’;
pass是一句话的木马密码,如果此代码为真,浏览器就会返回OK的字样,我们就用这个原理进行暴力破解。我们在火狐中发送数据,用burp进行截取。
学习笔记暴力破解漏洞分析_第11张图片

右键把数据包发送到Intruder模块,选中pass这个参数。
学习笔记暴力破解漏洞分析_第12张图片

点击add,把他添加到自定义的参数当中加载burp自带的密码字典。
学习笔记暴力破解漏洞分析_第13张图片
点击start开始爆破破解我们点击Length让他排序下,看看有没有同的页面长度,我们可以看到password这个值的长度为194与其他值不同这个应该就是一句话的密码了。

验证
爆破万密码我们验证一下
首先是我们构造的数据,可以看到,密码为password时成功打印了OK字样

我们再用中国菜刀进行进一步验证。

成功连接
学习笔记暴力破解漏洞分析_第14张图片
学习笔记暴力破解漏洞分析_第15张图片

操作四Burp暴力破解操作

漏洞分析
Phpmyadmin在登录的过程中会将用户登录错误的信息进行返回,可以根据返回的页面大小进行判定是否破解成功
暴力破解
通过浏览器访问http://www.test.com/phpmyadmin/查看phpmyadmin页面,在暴力破解之前确保URL后面是没有任何参数的,如果有删除重新刷新页面并将浏览器的历史记录清除即可。然后随机输入一下账户和密码,点击执行,即可在burpsuite上抓到请求数据包。
在这里插入图片描述
学习笔记暴力破解漏洞分析_第16张图片

将请求数据发送到“intruder”选项中:
学习笔记暴力破解漏洞分析_第17张图片
切换到“intruder”下后,选择“positions”,通过“clear”将被添加了变量形式的数据还原,然后通过“add”选项将“pma_password”添加为变量形式。
学习笔记暴力破解漏洞分析_第18张图片
学习笔记暴力破解漏洞分析_第19张图片
在“Positions”下我们选择“Attack type”为第四项即可“Cluster bomb”

学习笔记暴力破解漏洞分析_第20张图片

接下来切换到“Payloads”选项。
默认“Payload Sets”的选择,然后依次在“Paylaod Options”“Load”中加载上我们准备用来暴力破解的密码字典,因为我们需要暴力破解的是两个变量参数,所以需要在“Payload Sets”中设置加载两份字典
学习笔记暴力破解漏洞分析_第21张图片
学习笔记暴力破解漏洞分析_第22张图片

接下来设置返回的暴力破解返回值长度是否有序,也就是长度值在True或者False的时候返回的是否是有规律的。我们依次选择“Intruder”“Options”下的“Redirections”,默认选项为“never”。这里我们勾选为“Always”,并且将下面的“Process cookies in redirections”也勾选完成即可。
学习笔记暴力破解漏洞分析_第23张图片

加载好评字典后最后依次点击“Intruder”“Start attack”开始暴力破解即可。
学习笔记暴力破解漏洞分析_第24张图片

然后根据字节长度的变化查找暴力破解成功的账户即可。我们可以看到在账号密码错误的时候返回值都是一样的,而正确的返回值则是有别于其他的长度值的。
学习笔记暴力破解漏洞分析_第25张图片
免责声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。禁止任何人转载到其他站点,禁止用于任何非法用途。如有任何人凭此做何非法事情,均于笔者无关,特此声明。

你可能感兴趣的:(安全漏洞)