DVWA详解:暴力破解篇(下)

前言:

没什么想说,快点把这个坑填了,至少先把暴力破解这个坑填完~~~

快速跳转

《DVWA详解:暴力破解篇(上)》

HIGH - 暴力破解 [ Burp Suite ]

在"HIGH"等级下,已经无法使用"hydra"工具进行暴力破解了,原因是"GET请求"中,额外的引入了"user_token="这个参数(TOKEN),而这个参数每点击完"Login"或刷"Brute Force"页面后都会重新生成(这是查看了PHP源码得出的结论),这就使"hydra"工具在这个情况下无能为力了;补充一下,HIGH级别的PHP源码中,首先使用"checkToken()"将"user_token="提交的值与服务器上的"session_token"值进行比较,之后会用"generateSessionToken()"重新生成TOKEN再将响应数据返回客户端,情况大概就是这样;

因此,要暴力破解HIGH难度的"Brute Force",我们需要使用新的方法,本篇博文使用的工具是"Burp Suite";该工具如何安装,读者只能自己去网上找了;首先,我们必须使用"Burp Suite"所附带的浏览器,目的是截获DVWA站点的"请求"与"响应"数据;打开"Burp Suite",执行下图的操作:

DVWA详解:暴力破解篇(下)

我们在"Burp Suite"所附带的浏览器上,使用任意账号与密码进行登录操作,让"Burp Suite"能够截获"/vulnerabilities/brute/..."的数据包,之后进入下一步:
DVWA详解:暴力破解篇(下)

现在,我们进入"Proxy"代理模块,找到最后一条"GET请求"的数据(上一步点击"Login"所发送的"GET请求"),将其发送至"Intruder"入侵模块,进入下一步:

DVWA详解:暴力破解篇(下)

进入"Intruder"入侵模块后,选择攻击类型为"Pitchfork",这是一种可以在"请求头"设定多个PLAYLOAD注入点的方式,选择这个方式,是因为在HIGH等级下,只有这个攻击类型最合适;另外还有其它攻击类型,其中有一种为"Cluster Bomb"(组合攻击),看上去应该是比"Pitchfork"更适合的模式,但这是错误的想法,由于"user_token="的存在及其"Cluster Bomb"的工作原理,此处使用这个模式并不合适;

这里,我们需要在"请求头"上设定我们的PLAYLOAD注入点;在我们将"GET请求"的数据发送至"Intruder"入侵模块时,"Burp Suite"已经为数据包自动设定了可能的注入点了,但这不合适,我们需要按实际情况修改;

1、强制设定"username="的值为"admin",即不定义注入点;这样设定,意味着我们在暴力破解前,已经知道了一个有效的用户名,我们现在只想暴力破解出该用户的密码;

2、设定"password="为PLAYLOAD注入点"§1§";

3、取消"Login="的注入点表示;

4、设定"user_token="的PLAYLOAD注入点"§2§";

5、取消"Cookie:"的注入点表示;

经过上面设定后,表明我们需要对两个PLAYLOAD进行配置;

补充:读者可能会想"将'username='也设定为一个PLAYLOAD注入点",不是更好吗?答案是可以的,但是基于"Pitchfork"攻击类型的工作原理,我们需要将原来的"user.dict"与"passwd.dict"进行改造才能实现,由于这篇博文的内容太长了,博主不想再增加这篇博文的长度了,有兴趣的读者可以自己去研究相关内容;

在完成以上操作后,进入下一步:

DVWA详解:暴力破解篇(下)

设定"第一个PLAYLOAD"(对应"§1§"注入点):

1、"Playload set"设定为"1"(对应"§1§"注入点);

2、"Playload type"设定为"Sample list";

3、导入"passwd.dict"字典(这个文件就是我们在"LOW"等级生成的密码字典文件);

DVWA详解:暴力破解篇(下)

现在我们需要对"第二个PLAYLOAD"进行设定(对应"§2§"注入点);想想"§2§"注入点需要的数据是什么?是TOKEN!!这个TOKEN每次都会变化,如何获取这个TOKEN?方法是,新发送一个"GET请求",然后从其响应的数据中获取!!这时我们就需要使用到"Playload type"中名为"Recursive grep"的方法了,这个方式可以基于规则,从响应数据中获取你所需要的"数据";
上面说了,"Recursive grep"方法需要"规则",那么,现在我们先去建立规则:

到"Option"选项,找到"Grep - Extrace",使用"ADD"功能新增规则;可以使用"user_token"关键字进行快速定位,然后选中所需要的内容(选中TOKEN的值),"Burp Suite"会自动帮你生成所需要的规则表达式,你只需要核对合理性即可;

DVWA详解:暴力破解篇(下)

在设定"第二个PLAYLOAD"之前,我们重设一下"Brute Suite"的重定向定义,因为就在同一个页面中;另外在这个页面中,我们也可以观察到之前创建的规则生成了;

DVWA详解:暴力破解篇(下)

现在,设定"第二个PLAYLOAD"(对应"§2§"注入点):

1、"Playload set"设定为"2"(对应"§2§"注入点);

2、"Playload type"设定为"Recursive grep",同时,我们发现刚刚建立的"规则",程序已经自动帮们导入了;

3、设定执行攻击时,第一次发送请求时所使用的TOKEN,实测效果非常不好,选择配置;

DVWA详解:暴力破解篇(下)

最后,我们需要单线程的去执行这个攻击!!!想想为什么?没错,因为每一次请求,都会重置TOKEN的值,如果使用并发执行,那"GET请求"中的"user_token="的值就无法保证正确性了;

1、进入"Resource Pool",设定一个"单线程执行的资源池"

2、设定见下图(不想写了):

3、设定完成后,点击"Start Attack"进行攻击!!!

DVWA详解:暴力破解篇(下)

当我们执行"攻击"操作后,会自动切换到相应的"攻击过程页面";待整个攻击过程结束后,我们就可以得到结果了,见下图:

DVWA详解:暴力破解篇(下)

在得到攻击结果后,我们如何知道我们是否攻击成功了呢?这就得说一下如何判断攻击是否成功的原理了!!!

实际上,"Burp Suite"并没有直接的破解结果,我们只能能完观察"每次请求所返回的响应数据的大小",来判断猜测破解成功的可能性;上图中,我们发现了一个特别的"响应数据包",其大小为"4733",明显 的与"其它响应的数据包"的大小不同,通过这个观察,我们可以大概猜测出,这个大小为"4733"的"响应数据包"所对应的"GET请求"请求应该执行成功了(登录成功),因为对于一次暴力破解,大部分"GET请求"所返回的"响应数据包"应该大小相同(均返回了登录失败的页面,所以"响应数据包"的大小应该相同);

再结合"GET请求"中的URL的参数定义("username=admin"),我们判断出一个有效的账号与密码组合,即"admin/password";到此,整个暴力破解过程执行成功;

HIGH - PHP源码解释

终于写完这个话题了,太多内容了,如果你希望看到下一篇详细,那么博主能保证,一定会很久很久!!!完~

上一篇:DVWA详解:暴力破解篇(上)》

DVWA详解:暴力破解篇(下):等您坐沙发呢!

发表评论

表情
还能输入210个字