Pikachu靶场:暴力破解之token防爆破?
作者:互联网
Pikachu靶场:暴力破解之token防爆破?
实验环境以及工具
Firefox浏览器、Burp Suite、Pikachu靶场
实验原理
1.将token以"type= 'hidden’”的形式输出在表单中;
2.在提交的认证的时候一起提交,并在后台对其进行校验;
但由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。
实验步骤
1.前期工作
先将Proxy中的intercept关闭,使其不进行拦截,让数据通过监听的端口。
输入正确用户名和密码弹出login success
空输入,直接点Login,弹出用户名不能为空
任意输入用户名和密码,弹出username or password is not exists~
在Firefox浏览器中打开开发者模式(F12)使用选择器,选中Login,在下面代码中发现一个隐藏的输入,name为token,值为一串字符串。
token是用来防爆破的,但是其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。只需要将它输出到前端的值写入字典中,并发数设置为1,每次获取一个token就进行一次尝试。先随意输入账号密码,这里输入(www/www)然后在Proxy的HTTP history中找到POST请求,将其发送到Intruder中。
2.使用Intruder进行暴力破解
爆破目标为管理员账户admin,变量设置为密码和token值,因为token值用一次换一次,故模块选择Pitchfork。
在Intruder的Options中找到Grep-Extract添加一个过滤条件,找到token值。
在Intruder的Options中找到Redirections,将Follow redirections的Never改为Always。
点击Options找到Request Engin找到Number of threads 将其设置为1。然后在Payloads中将字典1正常设置为Runtime并将字典文件导入,将字典2设置为Recursive grep。
最后点击Start attack进行攻击,然后单击length进行排序可以看到一个长度比较小的,因为密码错误(username or password is not exists~)和密码正确(login success)所弹出的字符串长度不一样,所以可以根据返回页面的长度来判断是否成功。
总结
将Proxy的Intercept拦截关闭后,通过手动访问目标网页,然后提交表单后,在Proxy的HTTP history中找到最新的POST请求,将其发送到Intruder里进行破解,目标设定为管理员账户admin,将密码和token设置为变量。用户密码继续用Runtime导入密码字典,token则用Grep-Extract过滤后的结果作为字典,线程threads设置为1,来配合一次一个的token。观察返回包的长度并分析,得到正确口令。
标签:暴力破解,Pikachu,密码,token,Intruder,Proxy,字典 来源: https://blog.csdn.net/witwitwiter/article/details/115442910