米斯特白帽培訓(xùn)講義(v2)漏洞篇 弱口令、爆破、遍歷

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

講師:gh0stkey

整理:飛龍

協(xié)議:CC BY-NC-SA 4.0

成因

弱口令沒有嚴(yán)格和準(zhǔn)確的定義,通常認(rèn)為容易被別人(它們有可能對(duì)你很了解)猜測(cè)或被破解工具破解的口令均為弱口令。弱口令指的是僅包含簡(jiǎn)單數(shù)字和字母的口令,例如"123"、"abc"等,因?yàn)檫@樣的口令很容易被別人破解。

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

危害

中石油的多個(gè)加油站的視頻監(jiān)控被入侵,我們可以通過它們看一些隱私。也可以通過它把監(jiān)控器關(guān)掉,來進(jìn)行一些非法活動(dòng)。

分類

普通型

普通型弱口令就是常見的密碼,比如,目前網(wǎng)絡(luò)上也有人特地整理了常用的弱口令(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

對(duì)于網(wǎng)站后臺(tái)而言,一般為:

  • admin
  • manager
  • admin123
  • admin888
  • admin666
  • ...

具體來說,不同的后臺(tái)類型擁有不同的弱密碼:

  • 數(shù)據(jù)庫(phpmyadmin)
    • 賬號(hào):root
    • 密碼:root、root123、123456
  • tomcat
    • 賬號(hào):admin、tomcat、manager
    • 密碼:admin、tomcat、admin123、123456、manager
  • jboss
    • 賬號(hào):admin、jboss、manager
    • 密碼:admin、jboss、manager、123456
  • weblogic
    • 賬號(hào):weblogic、admin、manager
    • 密碼:weblogic、admin、manager、123456

條件型

條件型弱口令就是和用戶信息相關(guān)的密碼,比如生日+手機(jī)號(hào)、姓名首字母+生日、愛人姓名首字母+生日+常用字母(520、1314 等)。

我們可以使用這個(gè)猜密碼的網(wǎng)站來生成條件弱口令字典。

比如我們知道一個(gè)人,他的信息如下:

  • 姓名:王小二
  • 郵箱:412391882@qq.com
  • 英文名:twowang
  • 手機(jī)號(hào):110

那我們就可以在這個(gè)網(wǎng)站上輸入這些信息,然后點(diǎn)擊下方的“提交”。

然后我們就得到了這個(gè)最有可能的密碼。

點(diǎn)擊“查看更多”之后還可以獲取更多弱口令。

實(shí)戰(zhàn)

比如說,我們使用這樣一段代碼來演示弱口令漏洞,它模擬了某個(gè)系統(tǒng)的后臺(tái)。

<?php
function showForm() { ?>
<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 == '') 
    showForm();
else if($un == 'admin' && $pw == 'admin888') 
    echo '登錄成功';
else {
    showForm();
    echo '登錄失敗';
}

第一行到第七行組成了一個(gè) HTTP 表單。我們可以看到,這個(gè)表單使用 POST 方法向這個(gè)頁面自己提交信息,un表單域?qū)?yīng) PHP 的un變量,pw表單域?qū)?yīng) PHP 的pw變量。

第九行和第十行從 HTTP 請(qǐng)求的主體中取出un參數(shù)和pw參數(shù)。

第十一到第十八行對(duì)用戶名和密碼參數(shù)做判斷,如果都為空,那么我們認(rèn)為它僅僅是顯示頁面的請(qǐng)求,直接返回。如果unadmin,且pwadmin888,因?yàn)檫@是我們預(yù)設(shè)的正確用戶名和密碼,所以顯示登陸成功,否則顯示登錄失敗。

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

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

接下來我們假裝不知道真實(shí)密碼,開始嘗試。對(duì)于管理員賬戶,用戶名一般是admin,密碼可能為admin、admin123、admin888123456、123abcadmin等等。

首先輸入adminadmin,嘗試失?。?/p>

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

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

Burp Suite 爆破

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

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

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

我們需要點(diǎn)擊右邊的Clear按鈕把所有標(biāo)記清除掉,由于我們需要破解密碼,我們選中密碼參數(shù)值點(diǎn)擊Add。

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

不要忘了要將admin888插入進(jìn)去。在下面的輸入框中輸入admin888,并點(diǎn)擊旁邊的Add

點(diǎn)擊右上角的Start Attack來開始爆破(老版本是Intruder -> Start Attack菜單欄),我們會(huì)看到結(jié)果列表。

我們點(diǎn)擊Length表頭,讓它按照長(zhǎng)度來排序??梢园l(fā)現(xiàn)有一個(gè)項(xiàng)目的長(zhǎng)度與其它明顯不同,那么它就是正確的結(jié)果。

PKAV Fuzzer

我們可以在這里下載工具。

我下載的版本的 1.5.6,我就可以雙擊Pkav HTTP Fuzzer 1.5.6.exe來打開它。另外目錄下還有一份使用手冊(cè),Pkav HTTP Fuzzer使用手冊(cè) Ver 1.0.pdf,大家可以參考這個(gè)手冊(cè)。這個(gè)教程只會(huì)講用到的功能。

它的主界面是這樣的:

左邊是“請(qǐng)求包”輸入框,我們需要填寫整個(gè) HTTP 封包(就是 Burp 中的Proxy -> Intercept選項(xiàng)卡中的內(nèi)容),我們將其復(fù)制過來。然后我們選中pw位置的admin,點(diǎn)擊下面的“添加標(biāo)記”:

我們?cè)賮砜纯从疫叺摹爸胤旁O(shè)置”,“重放模式”和“變體賦值”都不用改動(dòng),我們點(diǎn)擊下方的“導(dǎo)入”按鈕,選擇之前的top100.txt

之后再“添加”按鈕右邊的輸入框中輸入admin888,然后點(diǎn)擊“添加”。

然后我們點(diǎn)擊下方的“發(fā)包器”選項(xiàng)卡,在新的界面中直接點(diǎn)“啟動(dòng)”:

然后我們點(diǎn)擊“長(zhǎng)度”表頭,讓它按照長(zhǎng)度排序。

我們可以看到,僅當(dāng)密碼為admin888時(shí)長(zhǎng)度為 6,其它都是其它數(shù)值,那么它就是正確密碼。

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 "信息出錯(cuò)";

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

由于是純數(shù)字,我們把上面的Payload Type調(diào)成Numbers。下面,我們把From設(shè)為1To設(shè)為10,Step設(shè)為1。

之后點(diǎn)擊Start Attack。我們可以看到結(jié)果,其中ID 1 ~ 5 的長(zhǎng)度都是 224,6 ~ 10 都是 211。我們之前的測(cè)試中,2 是有效的,所以 224 應(yīng)該是有效內(nèi)容的長(zhǎng)度。

字典

更多字典請(qǐng)見 Kali 系統(tǒng)的/usr/share/wordlists目錄。

附錄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容