首先给出正确的暴力破解命令:
hydra -l admin -P /usr/share/wordlists/metasploit/password.lst 10.10.10.143 http-get-form "/dvwa/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login#:Username and/or password incorrect.:H=Cookie: security=low;PHPSESSID=9gughtdqf2rbv8cl6de9fmvui2;"
C指定的是cookie文件的路径, 这个路径是服务器上的路径, 也就是说如果服务器上存放cookie的文件是/path/cookie, 那么就可以用:C=/path/cookie来指定hydra从服务器上获取cookie, 然后自动添加到每次的get或者post的http header中, 如果像dvwa这样没有cookie的专门文件或者我们不知道cookie的存放文件, 那么就用:H来每次手动指定。
如果指定了:C=/path/cookie 那么每次hydra提交之前首先会去get /path/cookie 来得到cookie, 然后每次分析response返回的信息,自动将cookie添加到http 的header中。
:H其实是用来手动添加Header 域的, 比如上面的我们手动添加了 :H=Cookie: security=low; PHPSESSID=9gughtdqf2rbv8cl6de9fmvui2;(PHPSESSID通过burpsuite获得这个值很重要), 这其实是告诉hydra每次get或者post的时候要添加上这个:H后面的头部的域。
坑1:
如果你认为如下就能自动破解那就大错特错了,啥也暴不出来,因为这是http-get-form提交形式:
hydra -l admin -P password.txt IP http-get "/dvwa/vulnerabilities/brute/"
坑2:
如果认为按以下暴力破解也会错,因为form必须制定username、password对应参数
hydra -l admin -P password.txt 127.0.0.1 http-get-form "/dvwa/vulnerabilities/brute/"
坑3:
如果按找DVWA网站的破解说明构造,也一定不对。hydra一般不会考虑cookie,
hydra -l admin -P password.txt -vV 127.0.0.1 http-get-form "/dvwa/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login#:Username and/or password incorrect."
发现这个cookie是在使用浏览器登录的时候就设置好的, 不同的浏览器cookie是不同的, 开始默认的security= high, 当修改安全级别后服务器会重新发送set-cookie 为low, 以后每次提交表单或者get 操作都要提交这个cookie, 负责服务器验证是通不过的。
下面关键的来了:
用burpsuite,截获网页信息
当我们登录成功后将安全等级提交为lhigh和ow后, 可以看到cookie是有变化的,可以获取到PHPSESSID=9gughtdqf2rbv8cl6de9fmvui2;这个太重要了。