Pikachu靶场:暴力破解之token防爆破?

Pikachu靶场:暴力破解之token防爆破?

实验环境以及工具

Firefox浏览器、Burp Suite、Pikachu靶场

实验原理

1.将token以"type= 'hidden’”的形式输出在表单中;

2.在提交的认证的时候一起提交,并在后台对其进行校验;

但由于其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。

实验步骤

1.前期工作

先将Proxy中的intercept关闭,使其不进行拦截,让数据通过监听的端口。

Pikachu靶场:暴力破解之token防爆破?

输入正确用户名和密码弹出login success

空输入,直接点Login,弹出用户名不能为空

任意输入用户名和密码,弹出username or password is not exists~

在Firefox浏览器中打开开发者模式(F12)使用选择器,选中Login,在下面代码中发现一个隐藏的输入,name为token,值为一串字符串。

Pikachu靶场:暴力破解之token防爆破?

token是用来防爆破的,但是其token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。只需要将它输出到前端的值写入字典中,并发数设置为1,每次获取一个token就进行一次尝试。先随意输入账号密码,这里输入(www/www)然后在Proxy的HTTP history中找到POST请求,将其发送到Intruder中。

Pikachu靶场:暴力破解之token防爆破?

Pikachu靶场:暴力破解之token防爆破?

2.使用Intruder进行暴力破解

爆破目标为管理员账户admin,变量设置为密码和token值,因为token值用一次换一次,故模块选择Pitchfork。

Pikachu靶场:暴力破解之token防爆破?

在Intruder的Options中找到Grep-Extract添加一个过滤条件,找到token值。

Pikachu靶场:暴力破解之token防爆破?

在Intruder的Options中找到Redirections,将Follow redirections的Never改为Always。

Pikachu靶场:暴力破解之token防爆破?

点击Options找到Request Engin找到Number of threads 将其设置为1。然后在Payloads中将字典1正常设置为Runtime并将字典文件导入,将字典2设置为Recursive grep。

Pikachu靶场:暴力破解之token防爆破?

Pikachu靶场:暴力破解之token防爆破?

Pikachu靶场:暴力破解之token防爆破?

最后点击Start attack进行攻击,然后单击length进行排序可以看到一个长度比较小的,因为密码错误(username or password is not exists~)和密码正确(login success)所弹出的字符串长度不一样,所以可以根据返回页面的长度来判断是否成功。

Pikachu靶场:暴力破解之token防爆破?

总结

将Proxy的Intercept拦截关闭后,通过手动访问目标网页,然后提交表单后,在Proxy的HTTP history中找到最新的POST请求,将其发送到Intruder里进行破解,目标设定为管理员账户admin,将密码和token设置为变量。用户密码继续用Runtime导入密码字典,token则用Grep-Extract过滤后的结果作为字典,线程threads设置为1,来配合一次一个的token。观察返回包的长度并分析,得到正确口令。

上一篇:【Elasticsearch】Elasticsearch在windows下的安装方法


下一篇:跨站脚本漏洞(以Pikachu为例)