第一章节学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_45680080/article/details/102637411

暴力破解漏洞&暴力破解漏洞概述
一:暴力破解和暴力破解漏洞概述
1.①攻击者不知道目标系统的账号密码的情况下,对目标系统尝试性登陆,过程一般采用一些自动化工具加上特定的制点(比如:账号密码库)实现一个高效自动化连续性的尝试性登陆,从而碰撞出一些有效的账密码,(此般方式也可称之为瞎猜)往往会在一些渗透测试或者真实的攻击当中,这种瞎猜往往会带来意想不到的结果。
②暴力破解攻击一个较为重要的元素—字典(提高暴力破解攻击效率)
●常用的账号密码(弱口令),比如常用用户名/密码TOP500等。
●互联网上被脱库后账号密码(社工库)
(脱库:是一种黑客术语,也经常被称作“拖裤”,是指黑客入侵有价值的网络站点,把注册用户的资料数据库全部盗走的行为。)
(撞库:攻击者可通过脱库后拿到的资料数据库去尝试登陆另一个网站的库。这种方法称为撞库。)
●使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码。
③如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施。则称该网站存在暴力破解漏洞。
如何判定一个网站是否存在暴力破解漏洞
Ⅰ是否要求用户设置了复杂的密码;
Ⅱ是否每次认证都使用了安全的验证码;
Ⅲ是否对尝试登录行为进行判断和限制;
Ⅳ是否在必要的情况(交易支付…等等)下采用双因素认证;
……
存在暴力破解漏洞的网站可能会遭受暴力破解,但成功率不为100%。
2.暴力破解漏洞测试流程
①确认登录接口的脆弱性
确认目标是否存在暴力破解漏洞。(即确认被暴力破解的“可能性”)
比如:对目标系统尝试登录–把数据用不让burp suite 抓包–观察验证元素和response信息,判断系统是否存在被暴力破解的可能,同时判断后台是否存在服务规则。
②对字典进行优化
根据实际情况对字典进行优化,提高爆破过程的效率。
优化字典技巧:
Ⅰ根据注册提示信息进行优化
对目标站点进行注册,弄清账号密码的一些限制,根据限制去掉不符合要求的密码。
Ⅱ如果爆破的是管理后台,一般来说这种系统管理员是admin/administrator/root的机率较高。可以使用这三个账号+随便一个密码,尝试登录,观看返回结果,确定用户名,明确用户名后,可以只对密码进行爆破,提高效率。
③工具自动化操作
配置自动化工具(比如线程、超时时间、重试次数等),进行自动化操作
二.暴力破解实验演示-环境介绍
实验工具:burp suite~pikachu(靶场)安装与使用靶场pikachu
测试目标:Pikachu-暴力破解-基于表单的暴力破解
测试工具:burp suite free edition-intruder安装和基本使用burp suite
1.proxy(代理)和intruder模块使用讲解与演示
①打开proxy会在计算机本地监听一个端口,将浏览器的IP地址以及端口配置成proxy模式,实现从浏览器访问目标站点的请求会通过代理选项到达proxy以及burp suite上,通过burp suite对所有浏览器的请求作为一个抓包,同时通过burp suite提供的一些工具来对抓下来的数据包进行分析修改和重放等操作。
②intruder对proxy抓到的数据包进行一些自定义的修改,通过对http request的数据包以变量的方式自定义参数,然后根据对应策略进行自动化的重放,常用于自动化猜测/暴力破解过程中。
2.基于表单的暴力破解实验-burp suite-intruder介绍
①target选项卡
设置攻击目标,可以通过proxy发送。
②Pasitions选项卡
指定需要暴力破解的参数并设置成变量,同时选择攻击模式:
Sniper:狙击手
设置一个payload,先将第一个变量使用字典进行测试,然后再将第二个变量使用字典进行测试;
Battering ram:冲撞车
设置一个payload,所有变量一起用字典内容被替换,然后一起尝试;
Ptichfork:草叉型
每个变量设置一个payload,分别使用对应的字典对变量进行同时替换;
Cluster bomb:焦束炸弹(使用较多)(组合型较多)
需要为每个变量设置一个payload,分别使用字典内容对变量进行替换;
③Payloads选项卡
设置字典,并可以对字典进行统一的策略处理;
④Options选项卡
对线程的扫描、失败重试等进行配置;
对结果设置匹配的额flag:通过一个标识符来区别结果,并在结果栏中flag出来。
3.配置火狐浏览器网络,设置将浏览器端口设置和burp suite上一致,观察burp suite上对网页抓包的请求。
4.打开pikachu平台→暴力破解选项→基于表单的暴力破解→尝试如上登录进行抓包→确定认证因素→确认存在暴力破解漏洞→将proxy所抓取得数据包发送到intruder模式→/对数据包进行连续重放→尝试攻击类型burp suite 跑字典将账号密码替换成字典里的账号密码/→点击username点击add点击password点击add→在positions的attack type选项里选择cluster bomb→在payloads的select file选项使用自己实际的账号密码库→payload set 第一个选项设置user name第二个选项设置password→options和pause before retry 和 number of retries on network failure 基本不变(如果使用的burp suite 版本是pro版可以把number of threads提高)→Grep-Match选项(判断密码库的执行效果是否有正确输入的账号和密码即账号密码发送请求成功)→Clear所有选项Add输入网页所提示username or passwprd is exists(将碰撞成功的账户和密码输出)→点击Start attack在进行攻击然后点击OK→点击username or password is exists进行排序选择没有被flag出来的账号和密码(该账号密码就是该网页后台正确的账号密码)→使用该账号密码登录该wed页面
三.暴力破解的绕过和防范
1.验证码
①登录暴力破解;
防止机器恶意注册;
②验证码的验证流程
Ⅰ客户端request登录页面,后台生成验证码:
●后台使用算法生成图片,并将图片response给客户端;
●同时将算法生成的值全局赋值存在session中;
Ⅱ校验验证码:
●客户端将认证信息和验证码一同提交;
●后台对提交对验证码与session里面的进行比较;
Ⅲ客户端重新刷新页面,再次生成新的验证码:
●验证码算法中一般包含随机函数,所以每次刷新都会改变;
2.验证码可以防暴力破解
①不安全的验证码-on client-绕过实验演示
pikachu暴力破解模块里验证码绕过→验证接口是否存在暴力破解→观察被proxy抓到的数据包→返回该web页面右击查看页面源代码(观察该验证码是否通过前端制作而成)→观察javacript观察验证码逻辑生成→查看javacript在何处调用(如onclick调用createcode)→查看被proxy所抓获的数据包→将数据包发送到repeater模块→将发送过来的数据包进行修改→点击go随后输入随机验证码或者不输入验证码进行提交→查看response的raw模块(显示账号密码不存在,但并未说明验证码的情况,表明该提交验证码在后台并未得到验证)→重复二.4.步骤(在Grap-Match模块无需再添加add,根据返回长度进行判断→在request页面查看与其他选项不一致的行列→查看请求响应看到legin succes表面请求成功
②代码演示
在pikachu源代码里切换到vull查看暴力破解的包含client的目录,查看该代码。
3.不安全验证码-on client常见问题不安全验证码
●使用前端js实现验证码;
●将验证码在cookie中泄露,容易被获取;
●将验证码在前端源代码中泄露,容易被获取
四.验证码绕过-服务端的问题
1.不安全的验证码-onserver-实验演示
常见问题:
●验证码在后台不过期,导致可以长时间被使用;
●验证码校验不严格,逻辑出现问题;
●验证码设计得太过简单和有规律,容易被猜解
实验演示:打开pikachu暴力破解模块的验证码绕过(on server)→burp suite保持抓包状态→随便输入一个账号密码以及正确的验证码→把在proxy模块里抓包的数据发送给repeater模块运行→在response的response的row模块查看验证码是否在后端进行提交→验证验证码是否在后台不过期→返回网页页面刷新页面生成验证码→ 将新的验证码记下→在repeater的request的row修改版块里在需要输入正确验证码的地方输入账号密码和该验证码→提交,修改在request页面的账号密码再次提交在response里查看该验证码是否能够再次被利用→确定验证码可以被重复利用→重复之前二.4.(在intruder的positions输入验证码时需要输入正确的验证码)
2.代码演示:
①重复三.2.②步骤观察代码
②找到img的标签,调用代码为showvcode.php文件生成验证码的请求 ,点击onclick同样会去访问showvcode.php的文件,输入账号密码验证码不为空的情况下首先会去验证你输入的验证码,通过post与session的验证码进行对比,错误输出错误,正确才会验证你的账户和密码。
③打开生成验证码的showvcode.php,在此代码中vcode生成的验证码同时生成验证码的字符串会调用session里保存
④打开vcode函数,在此函数中去组合一些字符串生成type为图片模式的验证码
3.问题:对session的生成验证码有效时间默认为24分钟
解决:在php.ini修改验证码的有效时间修改验证码的有效时间,在server配置文件中在验证完验证码用完之后销毁session销毁
五.防暴力破解的措施总结:
●设计安全的验证码(安全的流程+复杂而又可用的图形);
●对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
●必要情况下,使用双因素认证;
1.token对暴力破解的意义
一般做法:
将token以"type=‘hidden’"的形式输出在表单中;
在提交的验证的时候一起提交,并在后台对其进行校验;
①打开pikachu打开token防暴破→打开浏览器web开发者→web调试台→用选择查看器查看提交的form表单里面存在账号和密码以及一个隐藏的input标签里包含有长串数字,该数字即为token
②目的当点击账号密码点击登录时后台对该账号密码以及token进行验证,并且每次验证的token值总会改变。
③后端token代码演示:
打开token.php文件,该代码先判断你是否提交用户名和密码,同时对所提交的token与session里的token进行对比,token验证通过才会验证账号和密码
④token的生成:
请求页面时,代码会执行set_token去执行该函数,该函数先判断token是否存在,如果存在则会销毁该token,然后再生成新的token,该token实际上就是rand里生成一个对应的字符串,将此字符串设置在session里
⑤效果:在前端刷新页面时,set_token产生的值会被会显示在session里,实现在前端提交账号密码时,同时被提交一个隐藏的token值,后台同时对token进行验证
由于其token值输出在了前端源码中,容易被获取,因此失去了放暴力破解的意义,一般token在防止CSRF上会有较好的功效。

猜你喜欢

转载自blog.csdn.net/qq_45680080/article/details/102637411