米斯特白帽培訓講義 漏洞篇 弱口令、爆破、遍歷

米斯特白帽培訓講義 漏洞篇 弱口令、爆破、遍歷

講師:gh0stkey

整理:飛龍

協議:CC BY-NC-SA 4.0

成因

弱口令沒有嚴格和準確的定義,通常認為容易被別人(它們有可能對你很了解)猜測或被破解工具破解的口令均為弱口令。弱口令指的是僅包含簡單數字和字母的口令,例如"123"、"abc"等,因為這樣的口令很容易被別人破解。

通過爆破工具就可以很容易破解用戶的弱口令。

目前網絡上也有人特地整理了常用的弱口令(Top 100):

123456 a123456 123456a 5201314 111111 woaini1314 qq123456 123123 000000 1qaz2wsx 1q2w3e4r 
qwe123 7758521 123qwe a123123 123456aa woaini520 woaini 100200 1314520 woaini123 123321 
q123456 123456789 123456789a 5211314 asd123 a123456789 z123456 asd123456 a5201314 aa123456 
zhang123 aptx4869 123123a 1q2w3e4r5t 1qazxsw2 5201314a 1q2w3e aini1314 31415926 q1w2e3r4 
123456qq woaini521 1234qwer a111111 520520 iloveyou abc123 110110 111111a 123456abc w123456 
7758258 123qweasd 159753 qwer1234 a000000 qq123123 zxc123 123654 abc123456 123456q qq5201314 
12345678 000000a 456852 as123456 1314521 112233 521521 qazwsx123 zxc123456 abcd1234 asdasd 
666666 love1314 QAZ123 aaa123 q1w2e3 aaaaaa a123321 123000 11111111 12qwaszx 5845201314 
s123456 nihao123 caonima123 zxcvbnm123 wang123 159357 1A2B3C4D asdasd123 584520 753951 147258 
1123581321 110120 qq1314520

危害

中石油的多個加油站的視頻監控被入侵,我們可以通過它們看一些隱私。也可以通過它把監控器關掉,來進行一些非法活動。

實戰

比如說,我們使用這樣一段代碼來演示弱口令漏洞,它模擬了某個系統的后臺。(課件里沒有這個代碼,這是我還原出來的)

<form method="POST" action="./lesspass.php">
    <input type="text" name="un" />
    <input type="password" name="pw" />
    <input type="submit" value="登錄" />
</form>
<?php
$un = @$_POST['un'];
$pw = @$_POST['pw'];
if($un == '' && $pw == '') 
    return;
else if($un == 'admin' && $pw == 'admin888') 
    echo '登錄成功';
else
    echo '登錄失敗';

第一行到第六行組成了一個 HTTP 表單。我們可以看到,這個表單使用 POST 方法向這個頁面自己提交信息,un表單域對應 PHP 的un變量,pw表單域對應 PHP 的pw變量。

第七行和第八行從 HTTP 請求的主體中取出un參數和pw參數。

第九到第十四行對用戶名和密碼參數做判斷,如果都為空,那么我們認為它僅僅是顯示頁面的請求,直接返回。如果unadmin,且pwadmin888,因為這是我們預設的正確用戶名和密碼,所以顯示登陸成功,否則顯示登錄失敗。

真實代碼的用戶名和密碼是從數據庫里面取的,但是它仍然是確定的東西,而且如果存在弱口令,還是能破解出來,原理一致。

把它保存為lesspass.php,將其部署后訪問http://localhost/lesspass.php

接下來我們假裝不知道真實密碼,開始嘗試。對于管理員賬戶,用戶名一般是admin,密碼可能為adminadmin123admin888123456123abcadmin等等。

首先輸入adminadmin,嘗試失敗:

之后是adminadmin123,還是失敗。最后嘗試adminadmin888,成功。

可見,爆破破解的原理就是一個一個嘗試,破解效果完全取決于你所使用的字典。如果密碼碰巧在你的字典中,就一定能成功。

Burp Suite 爆破

首先我們需要把瀏覽器和 Burp 的代理配置好,打開 Burp 的攔截模式。之后我們在lesspass.php頁面中隨便輸入什么東西并提交,在 Burp 中就可以看到攔截的封包:

為了爆破密碼,我們需要使用它的 Intruder 功能,右鍵彈出菜單并選擇"Send to Intruder":

之后訪問 Intruder 標簽頁,在 Position 子標簽頁中我們可以看到封包。

我們需要點擊右邊的Clear按鈕把所有標記清除掉,由于我們需要破解密碼,我們選中密碼參數值點擊Add

之后我們切換到旁邊的 Payloads 標簽頁,點擊中間的load按鈕,加載字典。我們選擇之前的top100.txt

不要忘了要將admin888插入進去。在下面的輸入框中輸入admin888,并點擊旁邊的Add

點擊右上角的Start Attack來開始爆破,我們會看到結果列表。

我們點擊Length表頭,讓它按照長度來排序。可以發現有一個項目的長度與其它明顯不同,那么它就是正確的結果。

Burp Suite 遍歷

比如這段代碼,我們將其保存為info.php

<?php
$id = @$_GET['id'];
$arr = array('1', '2', '3', '4', '5');
if(in_array($id, $arr, true)) 
    echo "用戶名:$id 密碼:123456";
else
    echo "信息出錯";

這段代碼模擬了用戶信息的查詢頁面,一共有五條記錄。我們可以訪問這個頁面,并使用 Burp 來攔截。像之前一樣,發送到Intruder,然后清除掉所有標記,只保留 ID 的標記:

由于是純數字,我們把上面的Payload Type調成Numbers。下面,我們把From設為1To設為10Step設為1

之后點擊Start Attack。我們可以看到結果,其中ID 1 ~ 5 的長度都是 224,6 ~ 10 都是 211。我們之前的測試中,2 是有效的,所以 224 應該是有效內容的長度。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容