本篇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. git 其它补充(版本)

    1.给源码贡献力量(当自己比较牛逼时) pull request 2..gitignore文件 在创建仓库的时候可以进行设置 3.版本 git tag -a v1.0 -m '版本介绍' 本地创建Ta ...

  2. rabbitmq 实现延迟队列的两种方式

    原文地址:https://blog.csdn.net/u014308482/article/details/53036770 ps: 文章里面延迟队列=延时队列 什么是延迟队列 延迟队列存储的对象肯定 ...

  3. 电脑开机后多了OneKey Ghost启动选项怎么解决

    原文地址:http://www.xitongcheng.com/jiaocheng/dnrj_article_18745.html 大多数用户在使用OneKey Ghost安装电脑系统后,会在开机启动 ...

  4. 13、python的路径处理

    前言:本文主要介绍python中路径的处理,包括os模块和有关的2个魔法变量. 一.os模块 python里面的os模块有许多方法可以让我们通过代码实现创建,删除和更改目录,具体如下: os.getc ...

  5. 【转载】Notepad++源码分析

    在网上发现了一个哥们写了关于Notepad++源码的文章,不过就写了一就没有了,我就接着他的工作再说说吧! 大三了,也写了一点儿程序了,但是如果只是按照自己的思路写下去恐怕难以提高,于是准备开始阅读一 ...

  6. 每天翻译一点点: WPF Application Framework (WAF)

    ps:http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&referringTitle=Document ...

  7. Linux程序守护脚本

    不废话,直接上脚本,[]注释的下发语句需要按需替换: #!/usr/bin/env bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/us ...

  8. Spring(四)核心容器 - BeanDefinition 解析

    前言 在上篇文章中,我们讨论了 refresh 的前四个方法,主要是对 ApplicationContext 上下文启动做一些准备工作.原计划是对接下来的 invokeBeanFactoryPostP ...

  9. spring源码系列(二):IOC接口设计分析

    这里主要对springIOC接口体系进行简单的概述和分析,具体每个接口详细分析在下面目录: 参考内容: <Spring技术内幕:深入解析 Spring架构与设计原理> 和 <Spri ...

  10. CUDA学习(四)之使用全局内存进行归约求和(一个包含N个线程的线程块)

    问题:使用CUDA进行数组元素归约求和,归约求和的思想是每次循环取半. 详细过程如下: 假设有一个包含8个元素的数组,索引下标从0到7,现通过3次循环相加得到这8个元素的和,使用一个间隔变量,该间隔变 ...