上一讲,我们已经成功的将DVWA安装到了我们的服务器上。
通过外部主机也能够成功访问DVWA。
那么今天,猴子君学习了Brute Force部分,下面是猴子君的演示过程。
前期准备
一、Low级别
1.我们点击DVWA的安全配置选项,选择low级别,点击submit进行设置。
2.点击进入Brute Force
3.这个时候,我们需要用到我们的Burpsuite工具。在安全圈摸爬滚打许久的童鞋们应该人手一个Burpsuite。如果没有的话,kali系统中自带Burpsuite可供使用。
打开Burpsuite的Proxy,options选项卡,将端口前面的小方块打上对号。
4.切换到Intercept选项卡,切换到Intercept is off模式。
5.打开我们的火狐浏览器,输入我们的DVWA网站的URL。
http://搭载DVWA主机的ip地址/DVWA-master/index.php
6.点击右侧的 ‘三’,选项按钮,将页面拉倒最尾部。
7.进行网络设置
8.切换为手动代理配置,输入Burpsuite设置的ip和端口号,勾选 也将此代理用于FTP和HTTPS。
9.点击确定,返回DVWA界面。
这样,我们的前期工作就准备完毕了。
二、Low级别
1.制作简易字典
首选,我们知道DVWA的账号:admin,密码:password。
进行暴力破解的关键就是要拥有一个强大的字典。
我们这里是演示,所以创建的字典比较短。
在桌面分别创建user.txt和pass.txt
分别在里面输入正确的账号密码和其他的随意几行字段。
这样我们的简易字典就做好了。
2.抓取登录的数据包
将Burpsuite打开,调整为Intercept is on 模式。
输入账号密码,点击Login。
打开Burpsuite,发现登录数据包
如果不是上面这张图所显示的数据包,点击Forward选项卡放掉这个包,直到发现上面图片所显示的包为止。
3.设置爆破的关键字
按Ctrl + i
或者点击Action,选择Send to Intruder
我们切换到Intruder选项卡的positions,将Attack type切换到Cluster bomb模式,点击Clear清除自动选择的关键字。
选中账号,点击Add,选中密码,点击Add。
点击Payload,Payload set 为1,这里我们先默认不变,这个选项是切换我们之前框选的user和password两个字段的。将Payload type设置为Runtime file,Simple list是简单的列表,在下面输入简单的数据进行爆破。而Runtime file是导入一个txt字典文件。
点击Select file,选择user.txt
将Payload set 设置为2,我们设置第二个字段的字典。
步骤同上,这里有一个点,需要大家注意。Burpsuite不识别中文路径,如果将字典放在桌面,而桌面是中文的情况下,字典是不会进行解析的。
4.进行爆破和数据分析
设置好之后,点击Intruder,Start attack。
由于提交错误的账号密码会返回错误的包,而正确的则会返回与错误包不一样的内容,所有,我们可以点击length,对数据包的长度进行筛选,选出其中不一样的包,就是正确的密码了。
我们发现账号密码为admin/password的包长度与其他的包不一样。
登录尝试一下。DVWA返回了登录成功的信息。
Low级别的暴力破解就成功完成了!
我们可以点击页面右下侧的View Source查看源码。
可以看出,这段代码对输入没有任何的验证和防护。所以,如果有一个强大的字典,是可以暴力破解成功的。
同时,这里对sql注入的防护也完全没有,我们可以通过通用sql注入口令进行注入登录。
admin’or ‘1’=‘1
admin’ – -
admin’ #
发现直接登录成功。
三、medium级别
我们可以查看源码
对传过来的值,使用了 mysql_real_escape_string() 函数,对一些字符进行了转义.同时,使用了 sleep(2) 函数,如果密码错误,则延时两秒响应。可以进行爆破,但时长会延慢一些。
这个时候,我们的万能密码就不能使用了。
爆破操作同Low级别一样。
我们通过分析返回数据包长度,可以找到正确的账号密码。
四、high级别
我们抓包进行分析
发现多出来一个user_token字段。
第二次抓包,发现,坏了,这个token值是每一次提交都不同。
这样的话,我们就需要每次都获取新的token值,然后进行提交。
这样我们就需要写一个脚本去暴力破解了
或者利用Burpsuite本身自带的功能。
这次我们选择Pitchfork模式,将password和token的关键字选中。
payload1设置与low级别操作相同。
这里我们额外加一个步骤即可。
点击Options,向下翻,找到Grep-Extract,点击Add。
点击Refetch response,找到这段token值,将它选中,我们可以发现,上面的字段自动设置好了,点击ok。
payload2选择Recursive grep模式,同时将第一次收到的token输入到下面。
开始暴力破解。
我们发现这里有两个包的长度与其他包是不一样的,我们都尝试一下,就可以发现正确的密码了。
pass的包是第一个发出的包,可能是有些奇怪的问题,导致它和别的包不一样。
如果想更好的暴力破解,还是建议写一个脚本来跑。
猴子君学历尚浅,就暂时不做这方面的研究了(哭)