我们先来认识一下BurpSuite中有哪些攻击模式,然后开始实战操作
下面攻击案例即将使用,对单个参数进行攻击破解
联想战争中狙击手的作用,一次只能击杀一名敌人
联想古代的攻城锤,特点就是攻击范围比狙击手大,但是效率不一定高
可以设置多个攻击字段,但是payload值只有一个
攻击的值只有一个
在这种情况下发起攻击,用户名和密码的值将是一样的,不适合密码获取
它会把一个值给到所有攻击字段
适合在多个字段中找合适值
联想农民伯伯耕地使用的草叉,如果地上有六个洞,但叉子只有四个分支,那么它最多只能插入四个洞中
对于攻击也是一样的,无法做到对所有可能性进行穷举验证,容易遗漏正确数据
允许设置很多payload来源
它的字段,默认按先后顺序排列
我们给第一个字段(用户名),添加5个内容
同样给第二个字段,添加6个密码
然后发起攻击,会看到,它只跑了5次,取两个数中最少的那个
从多个字典提取值,赋给多个字段,按顺序一一对应
例如:
100个用户名
50个密码
最终请求次数:50次
会出现一种情况,字典中有正确的用户名和密码,但是没有匹配成功,说明还不够全面,我们使用榴霰弹,交叉验证
联想二战中的榴霰弹,攻击范围大,攻击个体多,还可以做到彻底摧毁某一片土地,缺点就是造价昂贵
对于攻击也是一样的,它可以通过枚举,将所有的可能性都试一次,做到无疏漏,但问题就是使用它来破解参数,花费的时间占用的资源较多
同样,我们使用上次5个用户名和6个密码测试
结果发现,请求次数是30次
所有字典全部交叉验证
我们开始攻击,在30次匹配中有一组是正确的
DVWA是一款开源的练习web漏洞的靶场工具,用PHP代码编写而成。
需要PHP和Apache环境运行。
在下载好小皮基础上,我们需要下载DVWA靶场环境和一个文本编辑工具,Sublime
DVWA靶场网盘下载
提取码:tkwm
文本编辑Sublime下载
提取码:bwhe
把解压后的代码放在PHPStudy的WWW路径下(根目录)。
位置如下
打开phpstudy,添加网站。
这一步除了填写域名,其他的都不用改。
域名跟上一步的文件夹名字一致,会自动填充根目录。
(这里写成小写dvwa)
部署成功稍等几秒,Apache会自动重启
修改配置文件:
WWW\DVWA\config\config.inc.php
修改IP、库名(默认dvwa不用改)、用户名、密码、端口
这里将user设置为root
数据库密码在小皮数据库选项中查看
打开首页
http://localhost/dvwa
选择Setup
点击最下方的 Create /Reset Database初始化数据库
提示报错,我们需要修改配置文件
首先要确定自己的PHP版本
在小皮中查看
找到PHP配置文件
phpstudy_pro\Extensions\php\php7.3.4nts\php.ini
把以下两个值都改为ON
初始化后可以登录首页
http://localhost/dvwa
登录成功
靶场设置不同安全级别可以对渗透测试人员练习提供更多的经验
首先开启小皮,启动Apache和MYSQL
打开BurpSuite内置浏览器
为什么不用自带浏览器呢,自带浏览器请求和响应的数据太多太杂,有些广告,视频等等都会被抓包抓到,不利于初学者学习攻击原理
输入网址,进入靶场
localhost/dvwa/
登录进去后,我们修改安全级别为最低级
测试网站在没有附加防御措施下的安全性
首先,我们打开拦截,然后在网站中随便输入,提交用户名和密码
这里我们已经知道用户名是admin,密码是password,我们想要做的是在反馈中看到密码,故先测试获取密码。
可以看到BP已经抓到了包
然后我们把包发送到intruder模块
会看到intruder模块已经接收到包
我们看到,BurpSuite默认将这些字段打上分解符,BurpSuite默认你即将测试这些字段
但我们实际测试的只有密码值,所以点击清空
我们选中密码的值,点击ADD,添加分解符
攻击模式有四种,分别是Sniper、Battering ram、Pitchfork、Cluster bomb
选择攻击模式。这里选择Sniper,因为我们只要密码,是针对单个参数攻击
进入Payloads(攻击载荷)模块,我们先使用Simple list,简单列表
爆破字典设置
还可以对攻击字段做进一步设置
设置线程值为10
点击start
开始攻击
单击密码,可以看到它返回的响应
这里1111显示密码不匹配,故不是正确密码
但每个都点开查看不现实,所以我们要对响应内容的长度进行排序
会发现有一个值的长度和其他不一样,在值爆破中,正确值和错误值的长度是不同的,可以利用这一点进行快速判断
为了更快找到正确的值,我们想对正确的结果进行标记
即这段匹配成功响应
我们进入Intruder模块下的Options,找到Grep-Match
再次发起攻击,会在正确值位置出现标记
先把代理拦截关闭,将拦截级别切换到HIgh
其中涉及到CSRF token,它是什么意思呢
类似于古代的令牌,没有它,不能进入网站,但它和正常的令牌区别就在于,每次的令牌都不一样
用户每一次访问,都需要一个新的Token
一次使用,用完销毁
这一次浏览器响应给你,下一次你需要带上它上次给的token来访问才能进入网站
轮流依次访问
我们现在打开拦截
随便输入一个密码,会发现已经拦截到,并且安全级别是high
同样,发送到intruder模块
我们只能使用pitchfork攻击模式,然后将两个字段标识处理
进入payloads模块
先给密码一个字段
00000
1223
1232312
password
ashkkjd
在第二个字段,token值,我们使用载荷类型Recrusvive grep
它可以用来提取相应数据的比如拿到PHPSESSIONID,拿到TOKEN 等等,可以通过格式匹配抓取到对应的字段值。
它的规则需要在Option中设置,找到Grep-Extract,点击ADD添加,单击Refetch response生成一个相应,在响应中找到token,双击内容,会自动生成一套匹配规则
规则内容:
语句中前面是 value=' ,后面是' />\r\n
则中间一定是token
选中之后复制token值
9dff1b7aaa0dca5d78eb501602b2c34a
回到payload,我们发现已经将规则添加进去了
注意:
使用该模式,只能使用单线程
为了避免上一个请求还没有回来,下一个又发出去
打开Resource Pool,选择单线程
然后发起攻击,结果显示爆破成功
举例
对于这样一个网站的验证码,我们想要绕过它,通过不关注公众号就能查看网站里的内容
https://www.lxlinux.net/7001.html
首先打开浏览器BP代理
在这里插入图片描述
打开拦截,在验证码处输入666666,回车,会看到BP已经拦截到验证码
现在我们把它发送到Intruder模块
我们现在要做一个固定长度是6位的验证码
这里如果用生成字典的方法,可以生成从000001到999999一共一百万个密码,但是花费时间太久
所有我们试一下篡改响应结果
然后点击Forward放行,会看到一个服务器响应信息
{"msg":"校验码已失效,请重新获取!","resultCode":null,"success":false,"value":"666666","values":{}}
我们将success值改为ture
继续点击Foreword
然后来看一下浏览器中网页是否已经跳过验证码
成功在不输入验证码的前提下,进入网站
这里只给大家举个例子,虽然拿验证码并不难,但通过一个简单的例子,我们可以学到渗透的思路(感兴趣可以自己试试,真实有效)