暴力破解(Pikachu)
暴力破解(Pikachu靶场)
Burpsuite4种攻击类型
- Sinper(狙击手): 可以理解为一个一个爆破,也就是字典只能设置一个,然后用字典替换选择的参数,爆破完一个参数后再爆破另一个参数。
- Battering ram(攻城槌) 字典只能设置一个,同时将所有参数都替换为字典内容遍历一遍。
- Pitchfork(干草叉) 多参数同时爆破,但使用的是不同字典。
- Cluster bomb(集束炸弹) 多参数做笛卡尔乘积模式爆破。多个密码本对应多个位置,交叉组合,每一个密码本里的密码都对应于另一密码本所有密码。常用于爆破账号密码。
概述
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
第一关 基于表单的暴力破解
Burpsuite抓包
在intruder模块选择选Cluster bomb攻击方式进行爆破
第二关 验证码绕过(on server)
思路:
判断验证码在输入错误时是否显示:是
判断验证码是否有非空错误:是
判断验证码刷新后是否还能重复利用:
抓包之后输入正确的验证码 ----> 发送 ----> 提示密码错误
此时验证码更新 ---- 继续发送 ---- 没有提示验证码错误,说明验证码存在不过期,可以重复利用。

使用intruder暴力破解
第三关 验证码绕过(on client)
同第二关一样:
判断验证码在输入错误时是否显示:是
判断验证码是否有非空错误:是
but.......
当我准备抓包时,在代理模式下发现依旧有弹窗出现,怀疑为前端有验证,将验证码输入正确再抓包
将验证码改为空或者改错都直接绕过了验证码。

查看源代码确定是前端验证,直接禁用js或者输入正确的验证码之后再选择bp暴力破解

第四关 token防爆破?
把proxy模块抓到的两次登录的报文send to comparer对比一下,确实两次的token不一样
尝试删除token,response中什么返回结果都没有
尝试不改动token,直接重放,response中提示 csrf token error,无法直接爆破。

发现response中网页源代码有一个type为hidden,name为token的input标签,value和request报文的token不一样,应该是下一个报文的token。

那试一下把request中的token值改为response中的token值,再次send,返回了提示用户名或密码不存在,并且返回了下一次的token值。
根据以上结果,下一次request需要携带的token就是上一次response中html代码中的隐藏字段值,也就是说request中的token是可以从上一个response中提取的
那么还是可以暴力破解,只不过配置稍微复杂一点:
首先position除了username和password再增加token,此外要注意Attack type选Pitchfork(payload一一对应,数量为最少的payload的数量)。这里为啥要选Pitchfork而不能选Cluster bomb,尝试一下就知道了`(>﹏<)′(剧透:因为Cluster bomb是三组payload排列组合,一个token用好几次显然不行)
由于前面使用的用户名和密码payload列表都是适用于Cluster bomb的,而Pitchfork对payload的要求可能更高一些(需要提前整理好对应关系),第一和第二个payload按照前几关那样设置,第三个payload type设置为Recursive grep



还有一个需要注意的地方是线程要设置为1,因为每次都要用上次response中返回的token,多线程就会乱套了。

开始爆破。
Token是什么?
作为计算机术语时,是“令牌”的意思。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
前端登陆的时候向服务器发送请求,服务器验证成功,会生成一个token
前端会存储这个token,放在session或cookie中,用于之后的业务请求身份验证
拿着这个token,可以在当前登录的账号下进行请求业务,发送请求时,token会放在请求头里,服务器收到这个业务请求,验证token,成功就允许这个请求获取数据
token可以设置失效期
Token 有什么作用?
`防止表单重复提交;
Anti CSRF 攻击(跨站点请求伪造)。`
两者在原理上都是通过 session token 来实现的。当客户端请求页面时,服务器会生成一个随机数 Token,并且将 Token 放置到 session 当中,然后将 Token 发给客户端(一般通过构造 hidden 表单)。下次客户端提交请求时,Token 会随着表单一起提交到服务器端。
然后,如果应用于“Anti CSRF攻击”,则服务器端会对 Token 值进行验证,判断是否和session中的Token值相等,若相等,则可以证明请求有效,不是伪造的。不过,如果应用于“防止表单重复提交”,服务器端第一次验证相同过后,会将 session 中的 Token 值更新下,若用户重复提交,第二次的验证判断将失败,因为用户提交的表单中的 Token 没变,但服务器端 session 中 Token 已经改变了。
上面的 session 应用相对安全,但也较繁琐,同时当多页面多请求时,必须采用多 Token 同时生成的方法,这样占用更多资源,执行效率会降低。因此,也可用 cookie 存储验证信息的方法来代替 session Token。比如,应对“重复提交”时,当第一次提交后便把已经提交的信息写到 cookie 中,当第二次提交时,由于 cookie 已经有提交记录,因此第二次提交会失败。不过,cookie 存储有个致命弱点,如果 cookie 被劫持(XSS 攻击很容易得到用户 cookie),那么又一次 game over,黑客将直接实现 CSRF 攻击。所以,安全和高效相对的,具体问题具体分析吧!
此外,要避免“加 token 但不进行校验”的情况,在 session 中增加了 token,但服务端没有对 token 进行验证,这样根本起不到防范的作用。还需注意的是,对数据库有改动的增、删、改操作,需要加 token 验证,对于查询操作,一定不要加 token,防止攻击者通过查询操作获取 token 进行 CSRF攻击。但并不是这样攻击者就无法获得 token,只是增大攻击成本而已。
暴力破解(Pikachu)的更多相关文章
- 搭建pikachu平台及暴力破解
一.先将Pikachu文件放在网站根目录下 二.修改pikachu网站的配置文件 inc/config.inc.php define('DBUSER', 'user'); define('DBPW' ...
- Pikachu漏洞练习平台实验——暴力破解(一)
概述 一个有效的字典可以大大提高暴力破解的效率 比如常用的用户名/密码TOP500 脱裤后的账号密码(社工库) 根据特定的对象(比如手机.生日和银行卡号等)按照指定的规则来生成密码 暴力破解流程 确认 ...
- Pikachu练习平台(暴力破解)
Pikachu练习平台(暴力破解) 因为下面要用到burp suite,这里先简单介绍一下intruder模块的东西 Target选项: 设置攻击目标,可以通过proxy发送 Pasit ...
- pikachu——暴力破解
前述: 前面学习了sqli-labs 和 DVWA,也算是初步涉足了web漏洞,了解了一些web漏洞的知识.所以在pikachu上面,会更加仔细认真,把前面没有介绍到的知识点和我一边学习到的新知识再补 ...
- pikachu学习-暴力破解模块
安装好XAMPP,burpsuite,配置好pikachu我们就可以进行pikachu平台的漏洞学习 我这篇博客主要写暴力破解模块讲解,它分为4个小模块,分别是“基于表单的暴力破解”,“验证码绕过(o ...
- 关于暴力破解的一些学习笔记(pikachu)
这几天的笔记都懒得发博客都写在本地了,随缘搬上来 什么是暴力破解 就是在攻击者不知道目标账号密码情况下的,对目标系统的常识性登陆 一般会采用一些工具+特定的字典 来实现高效的连续的尝试性登陆 一个有效 ...
- WEB攻击与防御技术 pikachu——关于暴力破解
首先打开XAMPP 然后在网上下载pikachu平台压缩包 解压缩即可.之后进入到XAMPP的文件夹 将pikachu文件夹放到htdoces内就完成了pikachu平台的搭建~ 之后在xampp中点 ...
- pikachu 暴力破解
一 暴力破解 1.基于表单的暴力破解 先随意测试root/root登录,用Burp抓包,丢进Intruder 添加username和password两个参数变量,攻击类型选择Clusterbomb 有 ...
- Web安全之暴力破解
暴力破解,顾名思义简单粗暴直接,我理解为将所有的“答案”都进行尝试直到找到正确的“答案", 当然我们不可能将所有的“答案”都进行尝试,所以我们只能将所有最有可能是正确的“答案”进行尝试即可 ...
- 使用C#winform编写渗透测试工具--暴力破解
使用C#winform编写渗透测试工具--暴力破解 这篇文章主要介绍使用C#winform编写渗透测试工具--暴力破解.暴力破解是指通过利用大量猜测和穷举的方式来尝试获取用户口令的攻击方式.简单来说就 ...
随机推荐
- 关于JDK21控制台字符集编码问题
关于JDK21控制台字符集编码问题 前言: 某日尝试JDK21,idea控制台字符集编码一直乱码,后将idea所有能配置UTF-8的配置都配了一遍,无果,后搜索JDK21字符集编码相关后解决 1.配置 ...
- MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用
限制结果 您可以通过使用"LIMIT"语句来限制查询返回的记录数量.以下是一个示例,获取您自己的Python服务器中"customers"表中的前5条记录: i ...
- Matplotlib绘图设置--- 图例设置
plt.legend()和ax.legend()参数设置 自动会将每条线的标签与其风格.颜色进行匹配. plt.legend(*args, **kwargs) Place a legend on th ...
- 动态库 DLL 封装四:对dll二次封装,开放回调函数,并减少回调函数中参数个数
背景: 我需要对一个dll进行二次封装,其中有一个接口,里面的参数需要传回调函数. 需求: 这个回调函数,我需要开放出去,并且减少回调函数参数的个数 示例: // 回调原型 VOID __stdcal ...
- Push failed idea将项目发布到gitHub失败
此时需要点击VCS --> inport into version..-->create git ...重新生成仓库
- UJCMS 9.1.0 发布,国内开源 java cms
许可协议从GPL-2改为Apache-2.0,更宽松的协议,方便用户将系统集成到自身的应用中. 修复了已知bug,系统更加稳定. 升级日志(9.1.0) 修复前台全文搜索没有结果 web.xml se ...
- 插入排序的基本实现【数据结构与算法—TypeScript 实现】
笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程 概念 本质:将数列分为已排序和未排序,将未排序中的元素插入到已排序中的合适位置 特性 复杂度分析 时间复杂度: 最好情况 ...
- BZOJ 4403序列统计
假设存在一个满足条件的长度为i的不下降序列(显然是一定存在的)那么只需要从中选出i个数即可 (不必在意选出具体数的大小,可以把满足条件的序列写下来,选几个数感受一下). 但是$n \choose m ...
- C#的窗体假关闭操作例子 - 开源研究系列文章
晚上编码的时候,想到了以前编写的窗体关闭的事情,就是带托盘图标的应用,有一个主显示操作窗体,但是主窗体点击关闭按钮的时候,实际上是窗体隐藏而非真正关闭,这个在其它的一些应用程序里有这个效果.于是就想到 ...
- .NET Emit 入门教程:第六部分:IL 指令:9:详解 ILGenerator 指令方法:运算操作指令(指令篇结束)
前言: 经过前面几篇的学习,我们了解到指令的大概分类,如: 参数加载指令,该加载指令以 Ld 开头,将参数加载到栈中,以便于后续执行操作命令. 参数存储指令,其指令以 St 开头,将栈中的数据,存储到 ...