Burpsuite暴力破解攻擊及修復建議
阿新 • • 發佈:2020-09-21
暴力破解的產生是由於伺服器端沒有做限制,導致攻擊者可以通過暴力的手段破解所需資訊,如使用者名稱、密碼、驗證碼等。暴力破解需要一個龐大的字典, 如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 /> 密 碼:<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,則會造成其他使用者也不能登入。