Web安全原理剖析(二十六)——暴力破解漏洞

  • Post author:
  • Post category:其他





九、暴力破解



9.1 介绍暴力破解漏洞

暴力破解的产生是由于服务端没有做限制,导致攻击者可以通过暴力破解的手段破解所需信息,如用户名、密码、验证码等。暴力破解需要一个庞大的字典,如4位数字的验证码,那么暴力破解的范围就是0000~9999,暴力破解的关键在于字典的大小。




9.2 暴力破漏洞攻击

暴力破解攻击的测试地址为http://127.0.0.1/bp.html。

一般情况下,系统中都存在管理账号:admin,下面我们就尝试破解admin的密码,首先在用户名处输入账号admin,接着随便输入一个密码,使用Burp Suite抓包,在Intruder中玄宗密码处爆破,导入密码字典并开始爆破,如图103所示。





图103 Burp的Intruder模块



可以看到,有一个数据包的Length值跟其他的都不一样,这个数据包中Payload就是爆破成功的密码,如图104所示。





图104 暴力破解的结果





9.3 暴力破解漏洞代码分析

服务端处理用登录的代码如下所示,程序获取POST参数username和参数password,然后在数据库中查询输入的用户名可密码是否存在,如果存在,则登录成功。但是这里没有对登录的次数做限制,所以只要用户一直尝试登陆,就可以进行暴力破解。

<?php
$con=mysqli_connect("localhost","root","root","test");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

$username = $_POST['username'];
$password = $_POST['password'];

$sql = "select * from users where username='$username' and password='$password'";

$result = mysqli_query($con,$sql);

$row = mysqli_fetch_array($result);

if ($row)
{
    exit("login success");
}
else
{
    exit("login failed");
}
?>



9.4 暴力破解漏洞修复建议

针对暴力破解漏洞的修复,笔者给出以下两点建议。

  • 如果用户登录次数超过设置的阈值,则锁定账号。

  • 如果某个IP登录次数超过设置的阈值,则锁定IP。

锁定IP存在一个问题是:如果多个用户使用同一个IP,则会造成其他用户也不能登录。




版权声明:本文为qq_25505167原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。