概述

一个有效的字典可以大大提高暴力破解的效率

  • 比如常用的用户名/密码TOP500
  • 脱裤后的账号密码(社工库)
  • 根据特定的对象(比如手机、生日和银行卡号等)按照指定的规则来生成密码

暴力破解流程

  • 确认登录接口的脆弱性

    • 尝试登录——抓包——观察验证元素和response信息,判断是否存在暴力破解的可能
  • 对字典进行优化
    • 根据实际情况对字典进行优化,提高暴力破解的效率
  • 工具自动化操作

字典优化技巧

  • 根据注册提示进行优化,比如注册时要求密码8位以上,我们就去掉少于8位的密码
  • 爆破管理后台,账号是  admin / administrator / root  的可能是比较高,可以使用这3个账号进行爆破

一、基于表单的暴力破解

输入错误时,有以下提示

这里没有验证码等其他验证机制,抓包看看

发送到Intruder进行暴力破解

设置好Payload

然后把“ username or password is not exists~ ”复制到Grep Match中。后面可以利用Grep Match区分哪些请求里面有这个字符串

然后就可以开始攻击了,匹配到 username or password is not exists 都是攻击失败的,另外,从响应长度也可以看出攻击成功与否

二、验证码绕过(on server)

验证码可以用来防止恶意注册、防止暴力破解。服务端验证码常见问题:

  • 验证码在后台不过期,导致长期可以使用
  • 验证码校验不严格,逻辑出现问题
  • 验证码设计的太过简单和有规律,容易被猜解

我们先简单的测试一下,不输入验证码的情况下会提示验证码为空,输入错误验证码的情况下会提示验证码错误,只有验证码正确的前提下才会提示账号或密码不存在

下面通过抓包判断一下服务器端有没有对验证码进行验证,发现是有的

说明后端对验证码是有验证的,我们来了解一下验证码生成的逻辑:

当我们刷新页面的时候,我们会向后台发送一个请求,后台收到请求会生成一个验证码并在session中把验证码保存下来。

我们先生成一个新的验证码,然后在BurpSuite中输入正确的验证码

提示账号密码不存在

我们换个密码再发送一次

发现依然是提示账号密码不存在,正常来说应该提示验证码错误,这说明验证码长期有效,我们发送到Intruder中直接暴力破解

三、验证码绕过(on client)

这里我们需要输入验证码,我们不能对验证码暴力破解,通过抓包发现请求里面只是多了验证码

通过查看源码,发现验证码的验证逻辑是在客户端实现的

这个JavaScript会从0-9和26个大写字母中随机挑选5个作为验证码,然后用 validate() 去验证

另外,通过源码也可以看到,我们每点一次验证码,就会调用 createCode() 改变验证码

通过BurpSuite发现后台不会对输入错误的验证码进行验证,在浏览器中,输入错误的验证码是有提示的

正常来说会有这个弹窗

说明前端设置的验证码如同虚设,后端不会对验证码进行验证。那么我们不用理会验证码,直接进行暴力破解就可以了

四、token防爆破

利用开发者工具可以发现这里有一个隐藏的标签

里面的数字就是我们的token,我的每次提交的请求都会有一个token值,后端会验证这个token值

但是这个token已经写到了html页面中,攻击者只需要写个工具,提交认证前都加上这个token就好了

用一个简单的python脚本测试,代码如下:

import requests
import re url = "http://192.168.171.133/pikachu/vul/burteforce/bf_token.php" def get_token_and_cookie(url):
response = requests.get(url)
content = response.text
pattern = '(?<=value=")\w+(?=")'
token = re.search(pattern, content).group()
cookies = response.cookies
return token, cookies users = ["admin", "root"]
passwds = ["admin", "password", ""] data = {"submit": "Login"}
for user in users:
for passwd in passwds:
data["username"] = user
data["password"] = passwd
data["token"], cookies = get_token_and_cookie(url) cookies = cookies.get_dict()
headers = {"Cookie": ""}
headers["Cookie"] = "PHPSESSID=" + cookies["PHPSESSID"] response = requests.post(url, data=data, headers=headers)
content = response.text
if "login success" in content:
print("usernmae: ", user, "password: ", passwd)

输出结果

Pikachu漏洞练习平台实验——暴力破解(一)的更多相关文章

  1. Pikachu漏洞练习平台实验——SQL注入(四)

    1.概述 1.1发生原因 SQL注入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄 ...

  2. Pikachu漏洞练习平台实验——CSRF(三)

    概述 CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造 在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接) 然后欺骗目标用户进行点击,用户 ...

  3. Pikachu漏洞练习平台实验——XSS(二)

    概述 简介 XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户 XSS漏洞可以用来进行钓鱼攻击.前端js挖矿.盗取用户cookie,甚至对主机进行远程控制 攻击流程 假设存在漏洞的是 ...

  4. Pikachu漏洞练习平台实验——php反序列化、XXE、SSRF(九)

    1.序列化和反序列化 1.1.概述 在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize()序列化说通俗点就是把一个对象变成 ...

  5. Pikachu漏洞练习平台实验——不安全的文件下载和上传(七)

    1.不安全的文件下载 1.1.概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下 ...

  6. Pikachu漏洞练习平台实验——文件包含(File Inclusion)(六)

    1.概述 1.1简介 在 Web 后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用 “包含” 函数功能.比如把一系列功能函数都写进 function.php 中,之后当某个文件需要调 ...

  7. Pikachu漏洞练习平台实验——越权漏洞(八)

    1.概述 由于没有对用户权限进行严格的判断 导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作 水行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息.A用户如 ...

  8. Pikachu漏洞练习平台实验——RCE(五)

    1.概述 RCE(Remote Command/Code Execute) 给攻击者向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行一般出现这种漏洞,是因为应用系统从设计 ...

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

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

随机推荐

  1. 关于php中trim、ltrim和rtrim

    以ltrim为例 先看手册说明先 定义和用法 ltrim() 函数从字符串左侧删除空格或其他预定义字符. 语法 ltrim(string,charlist) 参数 描述 string 必需.规定要转换 ...

  2. 2019 Multi-University Training Contest 1 - 1009 - String - 贪心

    不知道错在哪里. 是要把atop改成stop!两个弄混了.感谢自造样例. #include<bits/stdc++.h> using namespace std; typedef long ...

  3. 工作流引擎 springmvc SSM 流程审批 Java Activiti 后台框架源码

    工作流模块  1.模型管理    :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理    :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中 ...

  4. JS中 [] == ![]结果为true,而 {} == !{}却为false

     为什么? 先转换再比较      (==) 仅比较而不转换  (===) ==转换规则?   ==比较运算符会先转换操作数(强制转换),然后再进行比较 ①如果有一个操作数是布尔值,则在比较相等性之前 ...

  5. vue,一路走来(17)--底部tabbar切换

    <router-link></router-link>存在router-link-active属性,那么底部tabbar切换就简单多了.不会再出现刷新回到第一个的bug. &l ...

  6. vue,一路走来(16)--本地及手机调试

    闲暇时间记录一下如何绑定域名,实现本地及手机调试的过程.我的是微信开发项目,很多功能及操作都是基于微信来开发的,理所当然的就用到微信开发者工具了. 1.首先打开目录C:\Windows\System3 ...

  7. MySQL--18 报错总结

    报错1: 报错原因:MySQL的socket文件目录不存在. 解决方法: 创建MySQL的socket文件目录 mkdir /application/mysql-5.6.38/tmp 报错2: 报错原 ...

  8. C# 事务的创建,提交和回滚

    在C#中开启事务的步骤 01.调用SqlConnection对象的BeginTransaction()方法,创建一个SqlTransaction对象,标志事务开始. 02.将创建的SqlTransac ...

  9. SDOI前的小计划

    upd:19.4.5 放出来了.如果明天考了我没复习到的认了.考到了复习了的还没拿到理想分的就回来谢罪(bushi www SDOI一轮倒计时4天啦w 所以得有个小计划吧QwQ 4.2 目标:BZOJ ...

  10. Python爬虫之抓图

    从"百度图片(http://image.baidu.com/)"的首页下载图片 # -*- coding: utf-8 -*- import urllib import re im ...