Pikachu靶场:基于表单的暴力破解
实验环境以及工具
Firefox浏览器、Burp Suite、Pikachu靶场
实验原理
账号密码的强度取决于密码长度、复杂性、不可预测性。所有的密码都可以通过穷举的方法来进行破解,所以强度本身也可以用被破解的时长来衡量。使用如Burp Suite等工具可以根据密码字典来对密码进行暴力破解,字典的强度来决定破解的可行度和效率。
实验步骤
1.前期工作
先将Proxy中的intercept关闭,使其不进行拦截,让数据通过监听的端口。
先找到正确口令与错误口令页面返回结果的区别。
先输入正确口令
返回一个login success
这里我再账号密码均输入qqq
返回一个username or password is not exists~(后面会用到)
在Burp Suite里查看Proxy中HTTP history,可以看到一个POST,在Request中可以看到输入的username和password。在Response中可以看到username or password is not exists~
然后将文件发送到Intruder
2.使用Intruder进行破解
Intruder主要介绍如下图
2.1 Sniper(单字典,单position替换尝试)
使用Clear删除多余的变量,只留下账号和密码
切换到Payloads,进行字典的设置,可以使用Simple list手动在下面添加,也可以使用Runtime file添加字典,这里使用Runtime file。
字典文件如下图(其中admin/123456是正确的的口令)
设置好了如下图,然后点击Start attack开始攻击
查看攻击结果
Sniper模块进行了一个字典内所有秘钥的单position替换尝试,很显然没有找到用户名为admin,密码为123456的口令。
2.2 Battering ram(单字典,多个Position同个秘钥尝试)
将攻击模块切换为Battering ram
切换到Payloads,发现还是只能选一个Payload set,即一个字典,那么接着用之前的字典。
查看结果
发现username和password是同样的值,显然没有找到用户名为admin,密码为123456的口令。
2.3 Pitchfork(多个字典,同序号进行替换)
将模块切换为Pitchfork
这时候发现Payload set能够加入多个字典,这里只有两个变量,所以只能加入两个字典。
查看结果,并且与字典进行对比
发现Pitchfork将字典中的秘钥根据序列号进行了一一对应,即字典1的序列为1的秘钥无法对应字典2序列为非1的秘钥。显然没有找到用户名为admin,密码为123456的口令。
2.4 Cluster bomb(多字典,多行对应多行的尝试)
切换为Cluster bomb模块
字典依旧使用之前的两个字典,然后单击Start attack开始攻击
然后单击length可以看到一个长度比较小的,因为密码错误(username or password is not exists~)和密码正确(login success)所弹出的字符串长度不一样,所以可以根据返回页面的长度来判断是否成功。
查看Response里的内容
下面尝试用另一种方法来判断是否成功。
在Intruder的Option中找到Grep-Match
清除多余的字符串,添加 username or password is not exists 这个字符串,这样会将所有返回 username or password is not exists 的页面进行标记,即打上flag。
Start attack开始攻击,然后点击新加上的行(username or password is not exists)进行排序,可以看到破解成功的口令。
总结
将Proxy的Intercept拦截关闭后,通过手动访问目标网页,然后提交表单后,在Proxy的HTTP history中找到最新的POST请求,将其发送到Intruder中进行破解。在使用Intruder破解时,要根据实际情况来选择模块和标记。好的字典能够提高破解的效率。