1、pikachu靶场简介
1.项目地址
2.具体安装就不在叙述了。
2、暴力破解漏洞概述
3、暴力破解-实验环境介绍
4、基于表单的暴力破解
随便输入一个用户名和密码,用burpsuite抓包。
发送到intruder模块,使用Clusterbomb工具进行暴力破解。先全选数据包清除变量,然后分别选中admin和password两个变量,分别添加变量符号。
然后选择有效载荷集payload,这里可以选择运行时文件(自定义payload),也可以选择简单清单(可以导入burp内置的字典)。这里我就随便输入了一些字典作为爆破使用。。。因为用别的字典基数太大爆破太慢,这里使用TOP100即可~
选定payload后,还可以进行一个小步骤的操作优化。在Grep-Match这里,我们可以添加错误提示。这样就可以和成功登陆的响应包区分开来。
一切准备就绪,开始攻击。
最后筛选一下数据,得到了三个有效的用户名密码。暴力破解成功~
admin 123456 pikachu 000000 test abc123
5、暴力破解的绕过和防范
6、验证码绕过(on client)
先抓个包看看效果。
看到了增加了一个验证码的功能。查看网页源代码,找到了一串js代码。整个验证码的逻辑都是在js里面实现的。
这个onclick=”createCode()”就是调用了验证码的功能。
整个验证码的生成和验证都是使用JavaScript在前端做的校验。而在前端做验证是不靠谱的。很容易绕过。
接下来我们来验证后端有没有开启验证模式,将数据包发送到repeater中,任意修改验证码,send发送,发现提示用户名密码错误,于是发现验证码被绕过了。
接下来就是暴力破解用户名和密码了,和之前4的步骤一样,就不在具体叙述了
最终得到用户名密码,直接登录进去。
让我们来看一下后端代码,后端只是对用户名密码做了校验,而验证码没有,因此可以绕过。
常见的问题
7、验证码绕过(on server)
常见的问题
验证码复杂度。。设计验证码。
开始实验。
我们先来尝试正常输入,发现没什么问题,抓包看一下后端校验。于是乎,发现了后端是有校验的。
判断验证码是否不过期。我们进行两次不同用户名密码的输入,使用同一个验证码来进行判断。最终得到的结果是验证码不过期!
接下来,就重复4和5的基础暴力破解用户名和密码的操作了,这里强调一点,就是验证码给它固定下来即可。其余不变,具体就自己尝试吧~与之前一样。
接下来,让我们从代码层面来看。img的标签调用的是产生验证码的文件,点击验证码也会从新获取验证码。
而生成验证码的文件中,每当调用showvcode就会生成验证码,存到vcode中。vode就是生成一个验证码。
好啦~问题就在验证码长时间不过期这里。后续可以改进哦~
8、防暴力破解的措施总结
9、token防爆破?
查看token。当我们打开一个页面,后端收到请求后,就会生成一个token放到session中,同时输出到前端的表单中。当我们每一次登录,就会验证用户名和密码以及token,刷新一次页面token也会刷新。
我们在后端看一下token验证
token生成-当访问一个页面,先看看有没有token有就销毁,没有就销毁,即set_token()函数。
这里的token被echo出来到表单中,是隐藏状态
所以,token是预防不了暴力破解的~~~