渗透测试CISP-PTE:暴力破解

渗透测试CISP-PTE-系列学习笔记

第一章 渗透测试CISP-PTE:Web安全简介
第二章 渗透测试CISP-PTE:信息收集
第三章 渗透测试CISP-PTE:漏洞扫描
第四章 渗透测试CISP-PTE:HTTP请求流程
第五章 渗透测试CISP-PTE:SQL注入
第六章 渗透测试CISP-PTE:暴力破解



前言

暴力破解是一种针对于密码或身份认证的破解方法,即穷举尝试各种可能,以尝试破解密码或用户名或找到隐藏的网页,或者找到用于加密消息的密钥。
暴力破解不仅可以被恶意者使用,还可以用于检查系统、网络或应用程序中使用的弱密码。

一、暴力破解的原理

暴力破解是一种尝试所有可能的密码组合,直到找到正确密码的方法。其基本原理是通过不断尝试不同的密码组合,进行暴力破解。
具体来说,暴力破解通常是通过以下几个步骤进行的:

 1. 确定密码长度:首先需要确定密码的长度范围,通常会根据经验或者已有信息来估计密码的长度。
 2. 生成密码组合:根据确定的长度范围,生成所有可能的密码组合。对于数字密码,可以生成所有可能的数字组合;对于字母密码,可以生成所有可能的字母组合;对于字母数字混合密码,可以生成所有可能的字母数字组合。
 3. 尝试密码组合:将生成的密码组合逐个尝试,依次输入到目标系统或账户中进行验证。如果尝试的密码组合是正确的,那么暴力破解成功;如果不正确,那么继续尝试下一个密码组合。
 4. 优化破解过程:由于暴力破解可能需要尝试的组合数量非常庞大,因此通常会采用一些优化方法来提高破解效率。例如,可以根据已有信息或者统计学规律,调整密码生成的顺序或范围,以减少尝试的组合数量。

需要注意的是,暴力破解是一种非常耗时的方法,尤其是对于复杂的密码组合,可能需要消耗数小时、数天甚至更长时间。另外,暴力破解也是一种非法的攻击行为,在未经授权的情况下进行暴力破解是违法的。

二、暴力破解工具和使用方法

1、B/S架构-BurpSuite

Burp Suite是用于攻击web应用程序的集成平台。它包含了许多工 具,并为这些工具设计了接口。主要可以应用Burp Suite来进行抓 包、改包、截断上传、扫描、爆破等功能。

1.1 代理监听配置

  1. 配置Burp Suite:Proxy -> Options,如下图所示
    在这里插入图片描述
  2. 配置浏览器的网络代理,如下图所示
    在这里插入图片描述

此时Burp Suite回监听来自浏览器的所有http请求和响应

3.在Proxy ->Intercept模块选择是否拦截,如果选择intercept is off,如下图所示不会对监听到的请求进行拦截,但可以在HTTP history模块查看监听到的http请求;如果选择intercept is on,会对监听到的请求进行拦截,需要通过Forword按钮放行不需要处理的请求
在这里插入图片描述

1.2 基于表单的暴力破解

1.2.1 基本样式

如下图所示基于表单的登录页面,如何进行暴力破解
在这里插入图片描述

1.2.2 破解思路
  1. 手动尝试登录该页面,并使用burpsuite监听

  2. 进入HTTP history模块,找到对应的HTTP请求,如下图所示,发送的POST请求中包含username和password两个参数,这两个参数就是需要爆破的参数
    在这里插入图片描述

  3. 选中Request->Raw 右键 选择 Send to Intruder,如下图所示
    在这里插入图片描述

  4. 进入Intruder模块,包含Target、Positions、Payloads、Options子模块,
    Target 配置
    ■攻击的目的IP和端口
    Positions配置
    ■payload中有效参数位置position以及Attack type,如下图所示
    在这里插入图片描述
    ■本实验需要破解的参数为username和password两个参数,清除无效参数,选中这两个参数添加§§(标注需要插入参数的有效位置)
    ■选择attack type ,一般为Cluster bomb
    Payloads配置
    ■针对不同的positions(参数)选择对应的Payload set和Payload type(一般选择Simple list)
    ■针对不同的Payload set加载对应的 Simple list,如下图所示
    Options配置
    ■执行爆破攻击的线程数等参数,提高爆破效率,减少爆破时间,如下图所示

  5. 点击 Start attack,完成以上配置开始执行攻击

1.2.3 补充知识
Positions->Attack type

1) Sniper(狙击手) :使用一套单一的payload set 。
使用场景:单一$$值且单一payload。即使攻击的向量唯一。
多个$Position$值以轮流的形式,使用一个payload set 去枚举第一个$ Position 1$值,再接着枚举$Position2$值。或者说使用一个payload 载荷逐个进行攻击多个位置,如:
在这里插入图片描述

2)Battering ram(撞击物) : 使用一组payload set
适用场景:账号密码都是同一个值
多个$Position$值同时以一个Payload set 值进行,如:$Position1$、$Position2$、$Position3$都是以a,b,c同时进行枚举,并且只能加载一份字典。或者说使用一个payload 载荷同时进行攻击多个位置,如
在这里插入图片描述

3)Pitchfork(相交叉):使用多个Payload set
使用场景:一对一账号密码
以一对一方式枚举,多个$Position$值分别加载不同的字典文件同时进行枚举,如字典1(a,b,c)、字典2(1,2,3)。或者说,使用多个 payload set 一一对应 多个$Position$值,如
在这里插入图片描述

4)Cluster bomb(集束炸弹):使用多个Payload set
对每个定义的Position(最多20个)设置不同的payload set。通过每个有效载荷的攻击迭代依次设置,使有效载荷组合的所有排列进行测试。分别以一对多的关系,如:字典1(a,b,c)、字典2(1,2,3)。或者说是使用 一对多的映射关系。产生的请求数目为payload 1 X payload2 的请求数目
在这里插入图片描述

Payloads->Payload Type

1)Simple list–简单字典
加载burp suite中集成的攻击载荷(字典):Payload Options->Add from list中加载或直接Add添加
添加自己准备的攻击荷载(字典) :Payload Options->load
2)Runtime file
选择自己的字典文件
3)Custom iterator
自定义迭代器。这种负载类型,您可以配置项目的多个列表,并使用生成的列表中项的所有排列有效载荷。它提供了一个强有力的方法根据给定的模板,以产生字符或其他项目的定制排列
Position 1添加1,11,111
Position 2 添加2,22,222
Position 3 添加3,33,333
在枚举时会生成如下格式字典:123,1123,11123,1223,11223,111223,12223依次类推。
在这里插入图片描述

针对参数login=username/password,需要Position 1 add user.txt,然后将 / 填写到Separator for position1,接着Position 2 add password.txt,
4)Character substitution
字符替换。用户界面允许配置一些字符替换。当执行攻击,有效载荷类型工程通过逐一配置的列表项。对于每个项目,它产生一个数的有效载荷,根据所定义的取代基包括取代的字符的所有排列。例如,默认替换规则(a>4,b>8,e>3,i>1)
如admin,在枚举时会
先枚举一次admin,
然后再替换a>4(4dmin),
接着会替换i>1(adm1n),
最后才全部替换a>4 i>1(4dm1n),依次类推

1.3 验证码绕过(on client)

登录页面的验证码由客户端(浏览器前端运行:html(内容)\JavaScript(交互、动态等)\CSS(样式))直接校验

1.3.1.判断方法

1)burpsuite启动监听
2)输出账号和密码,并将验证码填写错误或不填写,点击提交
3)此时页面弹出验证码错误等提示,但burpsuite是监听不到对应的http请求的
4)说明该页面的验证码校验是由浏览器进行的,并没有和服务端进行通信
针对由客户端进行验证码校验的情况,在进行密码爆破可通过以下三种方式来爆破

1.3.2.关闭JS

1)验证码是由客户端通过JS来进行校验的,因此可以在登录前关闭页面的JS功能,如下图所示,关闭JS刷新页面之后不再显示验证码
在这里插入图片描述

2)重新输入账号密码,点击提交,此时使用burpsuite可监听到对应的HTTP请求,如下图所示,验证码vcode的值为空,由于服务端并不校验验证码,所以直接在该请求的基础上进行密码爆破即可
在这里插入图片描述

1.3.3.开启JS,输出正确的验证码

1)验证码是由客户端通过JS来进行校验的,如果开启页面的JS功能,输入正确的验证码,客户端验证通过之后会给服务器发送http请求来验证账号密码
2)此时使用burpsuite可监听到对应的HTTP请求,如下图所示,验证码vcode的值为之前输入的正确值,由于服务端并不校验验证码,所以直接在该请求的基础上进行密码爆破即可(不用修改验证码)
在这里插入图片描述

1.3.4.编辑页面源码

1)页面右键查看页面源码,验证码校验的函数function validate() 如下图所示
在这里插入图片描述

2)点击F12,进入控制台(console),输入 validate = function() {return ture;}; 点击运行(chrome 浏览器直接enter键就行)将校验函数写成全真即可,如下图所示
在这里插入图片描述

3)此时使用burpsuite可监听到对应的HTTP请求,如下图所示,验证码vcode的值为空,由于服务端并不校验验证码,所以直接在该请求的基础上进行密码爆破即可(不用修改验证码)
在这里插入图片描述

1.4 验证码绕过(on service)

1.4.2.破解思路-不更新验证码
服务端验证原理

登录页面的验证码由客户端发送给服务端(PHP\ASP\JSP\Nodejs)来校验,并每次验证后会由客户端请求新的验证码,通信流程如下:
在这里插入图片描述

BurpSuite监听图片请求,配置Proxy->HTTP history 点击Filter,选中 image,如下图所示
在这里插入图片描述

此时可以监听到客户端请求验证码图片的请求

操作步骤

验证码是由客户端请求更新的,如果拦截客户端发送给服务端的验证码更新请求,即可使用之前的验证码(不用更新验证码)来进行密码破解。
1)使用BurpSuite->Proxy->Intercept 开启拦截模式
2)浏览器手动输出任意账号密码和正确的验证码
3)Forword 客户端发送的请求验证账号密码和验证码的POST请求
4)Drop 客户端发送的更新验证码的请求
5)服务端响应账号密码错误(验证码验证正确)
6)浏览器手动输出任意账号密码和正确的验证码(之前的,没有更新)
7)将监听到的post请求,发送到Intruder,针对参数账号密码(验证码为之前验证通过的验证码,不更新)进行爆破

1.4.3.破解思路-验证码和session ID为空
服务端验证原理

服务端生成Session ID和对应的验证码,用Session ID和验证码标识一个用户,对于Session ID为空的用户服务端记录的验证码也为空,相互对应
在这里插入图片描述

1.5 token防爆破

每次请求token都是有规律一直变化的

1.5.1 破解思路

观察token的规律,一般都是从服务端的响应帧中获取,访问服务端页面时,服务端会返回一个token作为会话的标识,后续客户端与服务器通信需要发送携带对应token值的请求

观察token的规律

在Proxy->HTTP history模块,观察抓取的访问该页面的请求帧(通过该帧服务端响应token)和登录的请求帧(携带token和账号密码),如下图所示
在这里插入图片描述

创建宏(获取token值的宏)

1)选择Project options->Sessions
2)配置Macros,点击add,选择获取token的请求帧(GET /vul/burteforce/bf_token.php HTTP/1.1),如下图所示
在这里插入图片描述

3)选择获取token的请求帧之后,点击Configure item(配置参数),填写参数名称(响应帧对于token的名称,如name='‘token’),用鼠标选择token的value值,自动识别正则表达式,如下图所示。
在这里插入图片描述

4)点击OK之后,宏添加配置完成

添加规则来执行宏

1)选择Project options->Sessions
2)配置Session Handling Rules,点击Add,填写规则描述(名称),添加Rule Actions,选择Run a macro(执行一个宏)
在这里插入图片描述

3)配置rule active 的run a macro,选择 update only the following parameters,填写需要获取的token等参数名
在这里插入图片描述

4)配置Session Handling Rules的Scope,如下图所示,选择执行该规则的工具(Intruder攻击器),配置URL Scope,添加执行该规则的URL(将获取token访问的URL粘贴到这里即可)
在这里插入图片描述

5)点击OK之后,规则添加配置完成

Intruder 进行爆破

1)选择Proxy ->HTTP history监听到的登录验证的Post请求,发送到Intruder
2)同1.3,配置同样的Target 、Positions(token值不用选中为参数)、Payloads、Options(线程只能是1,token值由服务器返回且请求一次变一次)
3)点击Start attack,开始攻击
在这里插入图片描述

2、C/S架构-THC-Hydra九头蛇

Hydra工具是著名黑客组织Thc的一款开源的暴力破解工具。可以 破解多种密码。主要支持:Telnet、Ftp、Http、Https、Http-proxy、 Mssql、Mysql等。唯一不方便的就是破解时须要的字典须我们自己制作。
针对该工具的使用方法不在本文章内详述。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了暴力破解的原理,以及不同场景下暴力破解的工具和方法等。后续将从XSS、文件上传等环节进行详细介绍。

  • 29
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未知2066

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值