本篇blog导航

~暴力破解&暴力破解漏洞概述

~基于表单的暴力破解实验

~暴力破解的绕过和防范(验证码&Token)

    ~验证码的基础知识

    ~验证码绕过(on client)

    ~验证码绕过(on server)

~防范措施

    ~措施总结

    ~token防爆破?

一、暴力破解&暴力破解漏洞概述

1、什么是暴力破解?

"暴力破解"是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。

2、字典如何更有效,便于提高暴力破解的效率?

    ★常用的账号密码(弱口令),比如常用用户名/密码TOP500等;

    ★互联网上被脱裤后账号密码(社工库),比如csdn曾泄露的约600w用户信息;

    ★使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码。

3、什么是暴力破解漏洞?

    如果一个网站没有对登陆接口实施防暴力破解的措施,或者实施了不合理的措施,则我们称该网站存在暴力破解漏洞。

4、什么措施可以防暴力破解?

    ★是否要求用户设置了复杂的密码;

    ★是否每次认证都使用安全的验证码;

    ★是否对尝试登陆的行为进行判断和限制;

    ★是否在必要的情况下采用了双因素认证

    ……

5、暴力破解漏洞测试流程?

(1)确认登陆接口的脆弱性

    确认目标是否存在暴力破解的漏洞。(即被暴力破解的可能性)

    例如:尝试登陆-抓包-观察验证元素和response信息,判断是否存在被暴力破解的可能。

(2)对字典进行优化

    根据实际的情况对字典进行优化,提高爆破的效率。

(3)工具自动化操作

    配置自动化工具(例如:线程、超时时间、重试次数等等),进行自动化操作。

6、如何优化字典?

(1)根据注册提示信息进行优化

    对目标站点进行注册,搞清楚账号密码的一些限制,例如:目标站点要求密码必须是6位以上,字母数字组合,则可以按照此规则优化字典,例如去掉不符合要求的密码。

(2)如果爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的几率比较高,可以使用这三个账号+随便一个密码,尝试登陆,查看返回的结果,确定用户名。

例如:

    输入xxx/xxxxwx返回"用户名或密码错误";

    输入admin/xxxf返回"密码错误",则可以基本断定用户名是admin。

此时我们可以直接对密码进行爆破,提高效率。

二、基于表单的暴力破解实验

本次实验我会详细说明burp suite暴力破解模块的使用步骤。以后再进行相同模块使用的时候,就不这么详细了。

1、打开我们的pikachu平台,来到暴力破解下的基于表单的暴力破解模块。

 

2、提示我们账号密码不存在,我们来到burp suite:Proxy->HTTP history。

3、尝试使用burp suite的暴力破解模块进行破解。

4、打开Intruder,给变量加上特殊符号;

5、选择Attack type为Cluster bomb

6、准备两个.txt文件,命名为username.txt和password.txt。

因为是测试,所以我是自己编写的简单密码本,这样可以提高演示的速度。

7、做如下操作

(1)为第一个变量选择username.txt这个密码本。

(2)为第二个变量选择password.txt这个密码本。

8、我们回想一个问题:在破解完成后,如何判断出哪一对用户名和密码是正确的呢?

我们这样来判断:

9、对线程并发数等参数进行设置(也可选择使用默认的选项),执行破解程序。

10、分析结果。

11、用破解得到的username和password在网站上尝试登陆。

三、暴力破解的绕过和防范(验证码&Token)

3.1 验证码的基础知识:

★验证码是用来做什么的?

    来验证对方是一台机器还是一个人!

    √登录暴力破解

    √防止机器恶意注册

★验证码的认证流程是?

    ①客户端request登陆页面,后台生成验证码:

        1.1后台使用算法生成图片,并且将图片response(响应)给客户端。

        1.2同时将算法生成的值全局赋值保存到SESSION中。

    ②校验验证码:

        2.1客户端将认证信息和验证码一同提交。

        2.2后台对提交的验证码与SESSION里边的进行比较。

    ③客户端重新刷新页面,再次生成新的验证码:

        验证码算法中一般包含随机函数,所以每次刷新都会改变。

★只要有了验证码就可以防止被暴力破解嘛?

    当然不是啦,你想什么呢?!你的验证码就一定安全吗?

 

3.2 验证码绕过(on client)

一、OK,兄弟们,接下来就来演示不安全的验证码-on client-绕过实验

 

1、来到pikachu实验平台暴力破解下的验证码绕过(on client)模块,随便输入一个账号和密码+正确/错误的验证码。看看提示我们什么(返回什么提示信息)?

2、转到burp suite,我们可以看到我们提交的表单信息。

3、接下来我们来看源码,在网页空白处右击->查看网页源代码

4、我们知道它在前端进行了验证码的生成和验证,那么他到底有没有在后端同样进行验证呢?我们将burp suite抓到的POST请求数据包发送到Repester(数据包重放)模块。

除此,我们来到实验平台的后端源码看一看(确认一下!!)

5、到此,我们基本可以肯定,在我们技术人眼里,这种在前端JS里边的验证码就是狐假虎威,假把式,我们仍然可以使用burp suite里边的暴力破解模块进行破解。对于暴力破解的选项设置和前边的"基于表单的暴力破解实验"是一样的。我就不多废话了。

★通过上边的演示实验,我们知道写在前端JS代码里边的验证码就是纸老虎,那么还有其他类型的验证码纸老虎嘛?

    当然还有啦~~

    (1)将验证码在cookie中泄露,容易被截取;

    (2)将验证码在前端源代码中泄露,容易被获取。

到此,那么我们写在后端的验证码验证就一点安全吗?好多人要崩溃了,你快别说了,刚刚说验证码生成验证流程写在后端安全,现在又说不安全~~

别急别急,验证码的生成验证流程写在后端可不是纸老虎了,只不过后端的验证码生成验证流程如果没有严谨的逻辑,那么也会被不法分子钻了空子。

★后端验证码的常见的问题有什么?

(1)验证码在后台不过期,可以在一段时间內甚至长期被使用;

(2)验证码校验不合格,逻辑出现问题;

(3)验证码设计的太过简单或者说有规律,容易被猜解。

3.3 验证码绕过(on server)

好的,接下来,我们继续演示不安全的验证码-on server-绕过实验

1、来到pikachu漏洞实验平台,打开暴力破解下的验证码绕过(on server)模块。

2、我们输入错误的用户名、密码、验证码,来到burp suite看看截取到的数据。

3、观察到截取到的数据,我们发送到Repeater模块,修改验证码的值进行数据重放。

4、我们再来看后台的源码

5、那么有人问了,你不是绕过演示嘛。怎么到现在也没有任何问题啊,别着急~~

6、我们刷新一下页面,记录出现的验证码。

7、来到burp suite下Repeater模块。执行如图片内的操作。

8、看起来也没有什么问题哈!但是,如果你修改用户名或者密码后,而验证码的值我们不改变,又有什么结果呢?

9、ok,你知道怎么一回事了嘛?!我们将数据包发送到burp suite暴力破解模块,进行破解,username和password仍然是变量,而验证码我们设置成一个刷新页面后正确的常量就好了!

★上边的问题到底是怎么回事呢?

我们来看代码

★如何解决SESSION的问题呢?

四、防范措施

4.1 措施总结:

(1)设计安全的验证码(安全的流程+复杂而又可用的图形);

(2)对认证错误的提交进行计数并给出限制,例如:连续5次输错,锁定一定时间;

(3)必要的情况下,使用双因素认证;

4.2 token防爆破?

答案是否定的!!!!!!!

我们来看:

我们说虽然每一次token值都会变化,但是由于token响应到了前台,我们在每一次尝试前可以先获得token的值,在提交。其实token对于暴力破解,是起不到防止的作用的。

我们说一般token一般在防止CSRF上会有比较好的功效。

pikachu-暴力破解漏洞解析的更多相关文章

  1. pikachu——暴力破解

    前述: 前面学习了sqli-labs 和 DVWA,也算是初步涉足了web漏洞,了解了一些web漏洞的知识.所以在pikachu上面,会更加仔细认真,把前面没有介绍到的知识点和我一边学习到的新知识再补 ...

  2. pikachu 暴力破解

    一 暴力破解 1.基于表单的暴力破解 先随意测试root/root登录,用Burp抓包,丢进Intruder 添加username和password两个参数变量,攻击类型选择Clusterbomb 有 ...

  3. 搭建pikachu平台及暴力破解

    一.先将Pikachu文件放在网站根目录下 二.修改pikachu网站的配置文件  inc/config.inc.php define('DBUSER', 'user'); define('DBPW' ...

  4. 关于暴力破解的一些学习笔记(pikachu)

    这几天的笔记都懒得发博客都写在本地了,随缘搬上来 什么是暴力破解 就是在攻击者不知道目标账号密码情况下的,对目标系统的常识性登陆 一般会采用一些工具+特定的字典 来实现高效的连续的尝试性登陆 一个有效 ...

  5. 基于表单的web暴力破解

    暴力破解 概述 连续性尝试+字典+自动化 如果一个网站没有对登录接口实施防暴力破解的措施,或者实施了不合理的措施,则该网站存在暴力破解漏洞. 是否要求用户设置了复杂的密码 是否每次认证都是用安全的验证 ...

  6. pikachs 渗透测试1-环境及暴力破解

    一.安装 PhpStudy20180211,默认安装 1.mysql默认密码是root,因为在虚拟机,保留不动 2.解压pikachs 到 C:\phpStudy\PHPTutorial\WWW\pi ...

  7. Pikachu漏洞练习平台实验——暴力破解(一)

    概述 一个有效的字典可以大大提高暴力破解的效率 比如常用的用户名/密码TOP500 脱裤后的账号密码(社工库) 根据特定的对象(比如手机.生日和银行卡号等)按照指定的规则来生成密码 暴力破解流程 确认 ...

  8. Pikachu练习平台(暴力破解)

    Pikachu练习平台(暴力破解) 因为下面要用到burp suite,这里先简单介绍一下intruder模块的东西 Target选项:        设置攻击目标,可以通过proxy发送 Pasit ...

  9. pikachu学习-暴力破解模块

    安装好XAMPP,burpsuite,配置好pikachu我们就可以进行pikachu平台的漏洞学习 我这篇博客主要写暴力破解模块讲解,它分为4个小模块,分别是“基于表单的暴力破解”,“验证码绕过(o ...

随机推荐

  1. JS 点击验证码刷新

    <img src="/get_valid_img" id="valid-img" title="点击再换一张" class=" ...

  2. Linux内存管理解析(一) : 分段与分页机制

    背景 : 在此文章里会从分页分段机制去解析Linux内存管理系统如何工作的,由于Linux内存管理过于复杂而本人能力有限.会尽量将自己总结归纳的部分写清晰. 从实模式到保护模式的寻址方式的不同 : 1 ...

  3. 使用ob缓存简单实现页面静态化

    <?php //接收新闻id,传统的方法查询数据库并显示数据 $id=intval($_GET['id']); //先判断该新闻对于的静态页面是否存在,如果有,则直接返回,如果 //没有,则查询 ...

  4. Git详解之内部原理

    前言 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认 ...

  5. SonarQube代码管理

    一 搭建过程不详细说 二 配合jenkins使用,jenkins搭建过程这里不详细说 三 jenkins项目配置,需要安装sonarqube-jenkins插件 sonar.projectKey=a6 ...

  6. Kafka网络模型和通信流程剖析

    1.概述 最近有同学在学习Kafka的网络通信这块内容时遇到一些疑问,关于网络模型和通信流程的相关内容,这里笔者将通过这篇博客为大家来剖析一下这部分内容. 2.内容 Kafka系统作为一个Messag ...

  7. 【大白话系列】MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计

    一.存储引擎 上节我们最后说到,SQL 的执行计划是执行器组件调用存储引擎的接口来完成的. 那我们可以理解为:MySQL 这个数据库管理系统是依靠存储引擎与存放数据的磁盘文件进行交互的. 那么 MyS ...

  8. kubernetes从私有仓库下载遇到的坑

    1.必须要在所有的k8s节点上配置私有仓库的地址.(master和node) 2.创建secret kubectl create secret docker-registry secret名字 --d ...

  9. LUA解析json小demo

    需要修改的json数据gui-config.json { "configs": [{ "server": "JP3.ISS.TF", &qu ...

  10. ELK同步kafka带有key的Message

    需求 kafka中的message带有key,带有相同key值的message后入kafka的意味着更新message,message值为null则意味着删除message. 用logstash来同步 ...