DVWA_Brute_Force(暴力破解)_WP

发布时间 2023-06-29 14:33:24作者: 夜梓月

Brute Force

概述:利用暴力破解(跑字典)去获得登录权限

low

漏洞描述:通过get请求获取usename和passwd,可以使用burp的暴力破解或者使用万能密码 'or '1'='1

暴力破解

漏洞利用

  1. 首先随便输入账号密码点击login打开拦截抓包
    image

  2. 抓包后可以发现该登录使用get传参,发送到intruder模块(攻击模块)
    image

  3. 选择好攻击类型,在账号密码出添加payload

  4. 开始配置payload,字典自行查找top100
    image
    image

  5. 开始攻击,根据长度判断是否登录成功,可以发现密码为password是该登录框的正确密码
    image
    image

验证使用admin,password登录发现成功登录
image

漏洞危害

get传参,账号密码均为加密所以容易被抓到登录流量从而查看账号密码
未在登录出设置任何限制导致存在暴力破解

万能账号

万能账号简介

sql注入漏洞定义:
SQL 注入漏洞是指攻击者通过把恶意的 SQL 语句插入到网站的输入参数中,来绕过网站的安全措施,获取敏感信息或控制网站的行为。
万能账户属于sql注入的一种
使用场景
当不知道用户的账号并且不知道用户的密码时,可以使用万能账号。
万能账号并不是一个真正意义上的账号,它是一种【拥有不同变体的格式】
需要注意的是,以下所有万能账号中的 a 可以是自定义的数字或字母,比如 1,2,3,b,c,d
数值型万能账号
a or true #
a or 1 #
a or 1=1 #
a or true — a
a or 1 — a
a or 1=1 — a
单引号字符型万能密码
a‘ or true #
a’ or 1 #
a‘ or 1=1 #
a’ or true –a
a‘ or 1 — a
a’ or 1=1 — a
双引号字符型万能密码
a” or true #
a” or 1 #
a” or 1=1 #
a” or true — a
a” or 1 — a
a” or 1=1 — a

万能账号的使用

账号使用上述其中之一
密码无所谓随便填写即可
这里使用 账号:admin'# 密码:123
image
image

我们发现同样可以实现登录,这里其实是因为后台语言php写查询数据库时候未做任何防护所导致的。

漏洞点

查看源码
image

可以发现这里存在漏洞点这是sql查询语句。#在语句中代表注释也就是说这句查询语句变成了
SELECT * FROM users WHERE user = '$user' # AND password = '$pass';
后面的and以及验证密码并不生效,只要账号存在即可,admin是网站中管理员的常用用户名

medium

代码分析

image

通过比较可以看出相比Low级别的代码,Medium级别的代码主要增加了mysql_real_escape_string函数,这个函数会对字符串中的特殊符号(x00,n,r,,’,”,x1a)进行转义,基本上能够抵御sql注入攻击, 同时增加了sleep(2) 破解失败 会停止运行两秒 但是仍然可以通过暴力破解 只不过相较于low级别慢一点

high

漏洞描述

登录界面添加token校验,在每次登陆前会先校验token值是否一致,但这里的token以type='hide’的方式显示可以在前端源码中被获取到,所以依然存在问题,利用脚本或者工具直接获取到token值进行暴力破解
image

token

基于Token的身份验证的过程如下:
1.用户通过用户名和密码发送请求。
2.服务器端程序验证。
3.服务器端程序返回一个带签名的token 给客户端。
4.客户端储存token,并且每次访问API都携带Token到服务器端的。
5.服务端验证token,校验成功则返回请求数据,校验失败则返回错误码。
image

请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。
token是有时效的,一段时间之后用户需要重新验证。
因为token是随机的 所以破解时候token这一项也需要破解

漏洞利用

首先抓包 可以看到有token
image

将token和password两项设置为变量 攻击模式使用Pitchfork
image

选择options将线程数设置为1(递归查找,将上一个请求的相应token作为下一个请求的payload的token,所以就不并发)
Grep-Extract模块进行相应设置,获取相应的token,截取相应token的前后标识,用于下次截取
Redirections模块设置允许重定向,选择always
image
image

添加字典 开始爆破
image

impossible

防范措施

添加惩罚机制,登陆失败次数大于3就锁定了账号。这样子暴力破解就会非常缓慢,15分钟只能跑3个。所以就相当于没用了。但这种防护机制可能会非常影响用户体验,攻击者会恶意的去将大量的账号进行锁定。只能是面对不同场景使用不同的防御机制
image