1. 程式人生 > 實用技巧 >Burpsuite暴力破解攻擊及修復建議

Burpsuite暴力破解攻擊及修復建議

暴力破解的產生是由於伺服器端沒有做限制,導致攻擊者可以通過暴力的手段破解所需資訊,如使用者名稱、密碼、驗證碼等。暴力破解需要一個龐大的字典, 如4位數字的驗證碼,那麼暴力破解的範圍就是0000 ~ 9999,暴力破解的關鍵在於字典小。

Burp Suite進行暴力破解攻擊

暴力破解攻擊的測試地址為http://192.168.43.45/bp.html。一般情況下,系統中都存在管理賬號: admin,下面我們就嘗試破解admin的密碼,首先使用者名稱處輸入賬號admin,接著隨便輸入一個密碼

使用Burp Suite抓包,在Intruder中選中密碼處爆破,匯入密碼字典並開始爆破,如圖所示。





可以看到,有一個數據包的Length值跟其他的都不一樣, 這個資料包中的Payload就是爆破成功的密碼,如圖所示。

程式碼展示

前端程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>爆破-使用者名稱+密碼</title>
</head>
<body>

    <form action="index.php" method="post">
        使用者名稱:<input type="text" name="username" /><br />
        密&nbsp;&nbsp;&nbsp;&nbsp;碼:<input type="password" name="password" /><br />
        <input type="submit" value="submit" />
    </form>

</body>
</html>

後臺程式碼

服務端處理使用者登入的程式碼如下所示,程式獲取POST引數username和引數password,然後在資料庫中查詢輸入的使用者名稱和密碼是否存在,如果存在,則登入成功。但是這裡沒有對登入的次數做限制,所以只要使用者一直嘗試登入,就可以進行暴力破解。

<?php
$con=mysqli_connect("localhost","root","qwer","security");
// 檢測連線
if (mysqli_connect_errno())
{
	echo "連線失敗: " . mysqli_connect_error();
}

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

$result = mysqli_query($con,"select * from users where `username`='".addslashes($username)."' and `password`='".($password)."'");

$row = mysqli_fetch_array($result);

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

資料庫展示

暴力破解漏洞修復建議

  • 如果使用者登入次數超過設定的閾值,則鎖定賬號。
  • 如果某個IP登入次數超過設定的閾值,則鎖定IP。鎖定IP存在的一個問題是:如果多個使用者使用的是同一個公網IP,則會造成其他使用者也不能登入。