代码编织梦想


一、实验目的与要求

  1. 能描述暴力破解;
  2. 能应用Low等级、Medium等级的暴力破解手工和自动化方法;
  3. 能应用High等级的暴力破解自动化方法及Impossible等级修复方法;
  4. 能用算法描述暴力破解过程(范围、动作、结果)。

二、实验原理与内容

  1. 暴力破解原理
    暴力破解的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录。关键点是字典的构建。
    暴力破解可分为手工破解、自动化破解和自己撰写工具自动化破解。关键点是需要了解HTTP的请求数据包,响应数据包的规律。
  2. 实验内容
    利用Kali Linux对DVWA的Brute Force模块展开实验,包括:
  1. Low等级、Medium等级的手工破解、自动化破解;
  2. High等级的自己撰写工具自动化破解;
  3. Impossible等级的机制以及修复、防御暴力破解的方法。
  4. 报告撰写规范程度、书面表达、排版规范,逻辑清晰。

三、实验设备与软件环境

  1. 笔记本;
  2. VMware WorkStation Pro;
  3. Windows7或其他Windows系统;
  4. Kali Linux 2021版本或其他Kali Linux版本;
  5. VC9VC11VC14集合;
  6. PhpStudy2018;
  7. DVWA-1.9;
  8. OWASP ZAP_2_10或其他版本。
  9. FireFox浏览器;
  10. Max Hackbar;
  11. Proxy Switcher;

四、实验过程与结果

1、搭建DVWA靶场环境

(1)安装windows的虚拟环境

我这里使用的是windows server 2003的虚拟实验环境,我们还需要安装phpstudy,这样我们就可以直接运行php环境。然后安装DVWA靶场,修改配置文件。详细配置内容可以参考首页PDF,压缩包在以下链接。
DVWA部署https://pan.baidu.com/s/1Hz84Qjtc1Ba5-LhhLN5Mzw?pwd=2333

(2)安装Kali虚拟环境

安装kali来当做我们的攻击机,使用Kali现有的渗透工具BurpSuite,来对DVWA靶场进行攻击。我们通过Kali的火狐浏览器去访问搭建好的Windows服务器的IP地址,访问DVWA靶场如图所示表示访问成功。
在这里插入图片描述

2、破解准备

(1)首先我们需要在windows的虚拟机确保打开phpstudy。
在这里插入图片描述
(2)在浏览器的网络设置里手动配置代理和端口号,目的是使我们的渗透工具BurpSuite可以进行抓包操作。
在这里插入图片描述
在这里插入图片描述

3、暴力破解等级—low

(1)我们首先打开渗透工具BurpSuite,利用它来对输入的用户名和密码进行抓包和攻击。我们第一步点击Proxy(代理),该模块主要用于拦截浏览器的http会话内容,给其他模块功能提供数据。第二步点击Intercept(拦截),该模块的作用是拦截所有通过代理的网络流量,如客户端的请求数 据、服务器端的返回信息等。第三步点击Intercept is off,目的是将拦截请求开关打开。
在这里插入图片描述
(2)首先我们先将靶场的等级设置为low。注意,在设置等级的时候需要将浏览器代理暂时关闭,在对目标页面抓包时再打开代理。
在这里插入图片描述
接着我们点击左侧的Brute Force模块,在这里进行用户的登录操作,我们在不知道密码的情况下时登录不上去的,显然这就是我们需要攻击的页面了。我们到BurpSuite工具确认拦截请求开关是否已经打开,在确保打开的情况下我们到DVWA下尝试进行登录操作,用户名和密码可以随便输入。
在这里插入图片描述
我们点击Login登录就会自动跳转到BurpSuite工具,我们就可以看到在刚刚的登录页面抓取到的请求信息,其中我们主要需要攻击的是username(用户名)和password(密码)。
在这里插入图片描述
(3)我们在抓取到的请求信息页面下右击,选择Send to Intruder,该模块是用于自动对Web应用程序自定义的攻击。
在这里插入图片描述
接着我们来到Intruder模块,在这里我们可以看到刚才发送过来的请求信息,点击Attack type我们可以看到有四种攻击模式,分别为Sniper、Battering ram、Pitchfork、Cluster bomb。这里我们选择最后一种Cluster bomb来攻击。
在这里插入图片描述
首先我们选择Cluster bomb,双击选择我们需要攻击的地方,比如输入的用户名和密码,然后在右边选择添加,就可以在Payloads里对爆破的点以及类型进行设置。
在这里插入图片描述
(4)进入Payload模块,因为我们选择的是集束炸弹攻击模式,也就是Cluster bomb,所以我们可以添加2个有效负载集,选择的类型是Simple list。这里我们先添加第一列常见的字典。
在这里插入图片描述
然后我们选择第2个有效负载集,类型同样是Simple list,添加第2列字典后就可以对页面进行攻击。
在这里插入图片描述
(5)接着我们就可以看到页面正在被破解,破解完成后,我们可以通过查看和对比长度来确定正确的用户名和密码,与其他长度相差甚大的则是正确答案。
在这里插入图片描述
(6)输入攻击后得到的用户名和密码,登陆成功,暴力破解成功。
在这里插入图片描述

4、暴力破解等级—Medium

(1)我们先查看一下网页php源码,通过源码可以知道该等级和上一等级基本无差,但是多了防止SQL注入的防御手段和延迟爆破时间。所以我们可以根据上一等级的方法来进行爆破即可,时间稍微增加了点。
在这里插入图片描述
(2)想要破解加快,我们可以进入Resource pool模块,我们选择重新设置新的线程数为50,然后开始攻击,就可以加快破解速度。
在这里插入图片描述
(3)查看长度来筛选正确的用户名和密码。
在这里插入图片描述

5、暴力破解等级—high

方法一:

(1)我们将DVWA等级设置为high后,在登录页面查看源代码,我们可以看到high等级是在medium的基础上将sleep修改为随机的时间,并且增加了个token的校验来阻止CSRF的攻击,所以每次刷新页面的时候,我们都需要获取页面上的token。
在这里插入图片描述
(2)和前几个等级的操作一样,将拦截到的请求发送到Intruder,这次我们的破解方式不使用集束炸弹,因为它会把token值和我们的用户名和密码一起相乘,但是token使用一次就失效了,所以我们不使用这个方法。我们可以使用Pitchfork(鱼叉)来进行攻击,选择Pitchfork然后添加密码和token值后进入到Payloads。
在这里插入图片描述
(3)我们进入到Payloads后选择第一个有效负载集,类型是Simple list,然后在下面将常用的密码字典添加进去。
在这里插入图片描述
然后我们选择第二个有效负载集,因为token值每次都不一样,所以我们不能使用Simple list类型。我们要点击进入Setting模块,找到Redirections点击always允许Redirections,就是允许跟踪重定向。
在这里插入图片描述
接着在Grep-Extract中点击add,刷新响应包,找到并选择token值复制,点击ok。
在这里插入图片描述
通过这个表达式可以将token拿出来。
在这里插入图片描述
(4)我们回到Payloads,在第二个有效负载集我们类型选择Recursion grep,然后将刚刚复制的token粘贴到Payload Options[Recursion grep]模块。
在这里插入图片描述
(5)因为我们是一个不断变化的token,所以我们请求的时候不能很多次,我们需要到Rescource Pool中创建每次只能请求一个的新线程。
在这里插入图片描述
(6)最后我们可以点击开始攻击。查看长度得到密码,破解成功。
在这里插入图片描述

方法二:

(1)我们可以通过python来写脚本实现自动化破解。代码如下:

from bs4 import BeautifulSoup
import requests

header = {
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0',
    'Cookie':'security=high;PHPSESSID=bhnifs4d4kn7n5plr2bul13fq3'#自己的cookie
}
url = "http://192.168.139.133/dvwa/vulnerabilities/brute/index.php" #IP修改为windows虚拟机IP

def get_token(url,headers):
    r = requests.get(url,headers=header)
    html = r.content.decode()
    soup = BeautifulSoup(html,"html.parser")
    user_token = soup.find_all('input')[3]["value"]
    return user_token
i = 0
for admin in open("H:..\\users.txt"):#储存用户字典的本机地址
    for line in open("H:..\\password.txt"):#输出密码字典的本机地址
        u_token = get_token(url,header)
        username = admin.strip()
        password = line.strip()
        payload = {'username':username,'password':password,"Login":'Login','user_token':u_token}
        i = i + 1
        Response = requests.get(url,params=payload,headers=header)
        print(i,'用户名:'+username,"密码:"+password,len(Response.content.decode()))
        user_token = get_token(url,header)

(2)运行代码,破解成功。
在这里插入图片描述

6、暴力破解等级—impossible分析

(1)impossible等级机制

我们通过查看impossible等级的源码可以分析到它通过多个机制来防止暴力破解。
错误登录次数限制。登录3次失败后,账户会锁住15秒。
在这里插入图片描述
达到最大错误次数后account_locked 变为 true,将用户账户锁定,则在登录过程中会检查上次登录时间和锁定时间。在还没到lockout_time设定的时间间隔中不允许登录。
在这里插入图片描述
使用MD5加密
在这里插入图片描述
在登录失败的情况下,代码通过sleep设置一个随机的延迟2秒到4秒的时间,这样可以防止暴力破解者通过快速尝试大量不同的用户名和密码组合。
在这里插入图片描述
通过stripslashes函数来去除反斜杠输入,这样可以防止我们通过SQL注入攻击。
在这里插入图片描述

(2)防御暴力破解的方法

主要的防御手段有设置验证码,设置错误密码次数,规定密码长度和密码复杂度,将MD5加密改成哈希表加密。


操作异常问题与解决方案

问题1:破解high等级时发送的请求过多。
解决:设置线程数量。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Regm123/article/details/139514517

dvwa暴力破解(brute_force high级别)_lwblovezj的博客-爱代码爱编程_dvwa爆破

将DVWA调至high级别,发现用之前的暴力破解就不好使了,因为其使用了随机token机制来防止CSRF,从而在一定程度上防止了重放攻击,增加了爆破难度。但是依然可以使用burpsuite来爆破。 1. 将登录请求进行拦截,发现增加了user_token参数,所以爆破要选择两个参数来进行,先将请求发送到intruder。 2. 设置两个参数 pas

5、dvwa暴力破解_林夕林@的博客-爱代码爱编程

暴力破解 相关函数的解释: (1)mysqli_query (2)die() 作用:函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。 (3)is_object() 函数用于检测变量是否是一个对象。如

DVWA(暴力破解)-爱代码爱编程

DVWA (暴力破解) DVWA简介暴力破解(Brute Force)lowMediumHigh DVWA简介 需要Apache和MySql的集成环境,可以安装phpStudy,在phpStudy的WWW文件下搭建DWVA靶场。 DVWA默认的用户有5个,用户名密码如下(记住一个就可以了): admin/password gordonb/a

DVWA之暴力破解-爱代码爱编程

1.低级 (1)发送账户和错误密码 去burp把拦截到的内容发送到测试器 (2)点击开始攻击,看回复的字节长度 确定账户密码 2.中级 (1)发送账户和密码 去burp把拦截到的内容发送到测试器 (2)点击开始攻击,查看回复的字节长度判断出账户密码

DVWA Brute Force(暴力破解)全等级-爱代码爱编程

Brute Force(暴力破解) 目录: Brute Force(暴力破解)1.Low2.Medium3.High方法1——Burp爆破方法2——Python脚本爆破4.Impossible 1.Low 查看源码发现关键代码为: SELECT * FROM users WHERE user = '$user' AND password

dvwa--暴力破解_九局下半6的博客-爱代码爱编程

1. Brute Force 暴力破解 漏洞原理: 暴力破解”是一攻击手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 1.Low: 绕过方法:使用burpsuite抓包,发送到爆破模块   2.medium: 源码分析:利用原理:源码分析后

dvwa通关教程--暴力破解_y-ng的博客-爱代码爱编程

暴力破解1.Low级别2.Medium级别3.High级别 准备工作 1.配置phpstudy 暴力破解 Low级别 1. 用BP拦截 . . Sniper模式逻辑:先将第一个变量也就是用户名替换,第二个变量不动

dvwa通关攻略之暴力破解-爱代码爱编程

目录 1.Brute Force 暴力破解2.漏洞场景3.实验演示lowMediumHighImpossible 4.暴力破解防御 1.Brute Force 暴力破解 暴力破解或称之为穷

dvwa靶场暴力破解实践-爱代码爱编程

暴力破解四种情况         字典爆破         前端绕过(验证码在本地检测)         后端绕过(验证码在服务器端检测)                 web端每次收到用户的操作响应后会自动向服务器端发送包含上一次验证码的请求包,服务端收到后会发送包含新的验证码的响应包,由于验证码的更换在一次完整用户响应之后,所以可以进行后端绕

网络安全学习之dvwa平台的搭建及简单使用_了解dvwa平台的具体使用-爱代码爱编程

DVWA介绍 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web 应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助we

dvwa——暴力破解_dvwa万能密码实验-爱代码爱编程

原理 概述: 穷举法是一种针对于密码的破译方法。这种方法很像数学上的“完全归纳法”并在密码破译方面得到了广泛的应用。简单来说就是将密码进行逐个推算直到找出真正的密码为止。比如一个四位并且全部由数字组成其密码共有10000种组合,也就是说最多我们会尝试9999次才能找到真正的密码。利用这种方法我们可以运用计算机来进行逐个推算,也就是说用我们破解任何一个密

dvwa暴力破解-爱代码爱编程

1.Low: low级别的流程:就是GET传参$user和$pass,后面直接执行Mysql语句查询数据库,验证账号密码是否正确,如果正确,则直接登陆成功。 首先,进入配置到的DVWA靶场,将Security修改为Low然后点击submit: 图1-1 更改Security级别为Low 接着点击Brute Force,输入用户名和密码: