破解 = 瞎猜
暴力破解 = 连续尝试 + 字典 + 自动化
字典的获取:
常用用户名/密码TOP500等
类似:https://www.cnblogs.com/smxiazi/p/9130408.html
网上被攻击之后“被开放”的密码库
http://site3.sjk.space/dosgk1.php
使用工具按照规则生成的密码(密码生成工具)
https://github.com/jeanphorn/common-password
确认是可以进攻的
对字典进行优化
使用自动化工具
注意:
技巧一:如果网站对于密码或者账户已经有限制,那我们可以按照规则优化字典,去除不符合要求的密码,比如6位以上的密码
技巧二:对于管理后台,可以使用admin/administrator/root进行初步测试,观察返回结果确认用户名
输入xxx/yyy返回“用户名或密码错误”
输入admin/yyy返回“密码错误”,则基本可以确定用户名是admin
因此可以只对密码进行破解,提高效率。
burp suite web测试软件 ,这个软件的使用,我这里就不介绍了,可以去了解一下安装,简单的使用。
这里需要引入新的软件,新的概念:监听器,使所有的流量都从这里传递。
proxy这里的监听端口是默认打开的,可以进行修改,现在是127.0.0.1:8080
这里有个功能需要解释一下,如果这里是on的话,浏览器的所有访问都会被拦截,如果是off的话,那就只会进行记录
通过软件打开浏览器
请求我们的http://127.0.0.1/pikachu/
由于我们打开了intercept,所以页面有卡顿的感觉
点击forward通过页面,这里就可以出现我们正常的页面
进行登录的请求
可以看出,是使用POST进行请求的,我们只需要对这两个变量进行替换就可以进行暴力测试,在失败的时候,界面上面会显示 username or password is not exists~
然后,我们需要把这个POST请求发送进,“intruder”
可以看见请求被发送到intruder了
brupsuite中intruder标签是经常使用的,今天我就对attack type四种类型的学习写下笔记
第一种:Sniper标签 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。
第二种:Battering ram – 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中
第三种:Pitchfork – 这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量
第四种:Cluster bomb – 这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。
我们经常需要选择Cluster bomb进行模拟攻击,首先,需要把模拟的地方设置为变量。
给对应的变量赋值
然后在Payload sets上面把Select file设置为,这里放文件的目录不要出现中文,不然读取不到数据
对应的字典,这里第一个变量对于的是user字典
user内容
admin
pikachu
test
adasd
adasdwd
adsas
sdw
asd
xcsc
dasas
第二个变量对于的是password字典
password内容
admin
pikachu
test
adasd
adasdwd
adsas
sdw
asd
xcsc
dasas
在Grep-Match对出现的错误信息进行监控
然后就可以进行模拟攻击了。
这里看见有两个数据与其他数据的信息不一样,进行测试,可以发现,这个就是账户密码,当没有关键词的时候,也可以根据返回的数据包的长度进行判断。
验证码的作用:
认证流程:
设计安全的验证码(安全的流程+复杂而又可用的图形)
对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时。
必要和关键的地方,使用双因素认证
问题
使用前端js实现验证码(纸老虎)
将验证码在cookie中泄露,容易被获取
将验证码在前端源代码中泄露,容易被获取。
现象
如果验证码正确,会显示 username or password is not exists
如果验证码错误,会弹出验证码错误
从提交的部分看
确实把验证码提交到了后台,我们经过在brupsuite的Repeater进行测试发现,后台对于”vcode“没有进行验证,所以我们只需要保存vcode不动就可以继续进行暴力测试。
tokey验证的流程:防止CSRF上会有比较好的功效。
一般会每次生成一个tokey的表单,然后在提交的时候带上tokey生成的值,在后台进行验证。
tokey的问题:
由于tokey输出在了前端源码中,容易被获取,所以失去了防御的功能。tokey主要用于csrf
把验证码生成,验证放在服务端
问题原因:
验证码在后台不过期,导致可以长期被使用
验证码校验不严格,逻辑出现问题
验证码设计的太过简单和有规律,容易被猜解
依然是尝试POST请求,使用重复的验证码也可以进行请求,原因seesion没有设置使用就销毁,php默认过期时间是440S
在尝试的时候只需要保持验证码不变就可以了,我们就可以进行暴力测试
在验证之后session设置为验证过期