米斯特白帽培訓(xùn)講義 漏洞篇 弱口令戒幔、爆破吠谢、遍歷
講師:gh0stkey
整理:飛龍
協(xié)議:CC BY-NC-SA 4.0
成因
弱口令沒有嚴(yán)格和準(zhǔn)確的定義,通常認(rèn)為容易被別人(它們有可能對你很了解)猜測或被破解工具破解的口令均為弱口令诗茎。弱口令指的是僅包含簡單數(shù)字和字母的口令工坊,例如"123"、"abc"等敢订,因為這樣的口令很容易被別人破解王污。
通過爆破工具就可以很容易破解用戶的弱口令。
目前網(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
危害
中石油的多個加油站的視頻監(jiān)控被入侵楚午,我們可以通過它們看一些隱私昭齐。也可以通過它把監(jiān)控器關(guān)掉,來進(jìn)行一些非法活動矾柜。
實戰(zhàn)
比如說阱驾,我們使用這樣一段代碼來演示弱口令漏洞,它模擬了某個系統(tǒng)的后臺把沼。(課件里沒有這個代碼啊易,這是我還原出來的)
<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
表單域?qū)?yīng) PHP 的un
變量,pw
表單域?qū)?yīng) PHP 的pw
變量捆愁。
第七行和第八行從 HTTP 請求的主體中取出un
參數(shù)和pw
參數(shù)割去。
第九到第十四行對用戶名和密碼參數(shù)做判斷,如果都為空昼丑,那么我們認(rèn)為它僅僅是顯示頁面的請求呻逆,直接返回。如果un
為admin
菩帝,且pw
為admin888
咖城,因為這是我們預(yù)設(shè)的正確用戶名和密碼,所以顯示登陸成功呼奢,否則顯示登錄失敗宜雀。
真實代碼的用戶名和密碼是從數(shù)據(jù)庫里面取的,但是它仍然是確定的東西握础,而且如果存在弱口令辐董,還是能破解出來,原理一致禀综。
把它保存為lesspass.php
简烘,將其部署后訪問http://localhost/lesspass.php
苔严。
接下來我們假裝不知道真實密碼,開始嘗試孤澎。對于管理員賬戶届氢,用戶名一般是admin
,密碼可能為admin
亥至、admin123
悼沈、admin888
贱迟、123456
姐扮、123abcadmin
等等。
首先輸入admin
和admin
衣吠,嘗試失敳杳簟:
之后是admin
和admin123
,還是失敗缚俏。最后嘗試admin
和admin888
惊搏,成功。
可見忧换,爆破破解的原理就是一個一個嘗試恬惯,破解效果完全取決于你所使用的字典。如果密碼碰巧在你的字典中亚茬,就一定能成功酪耳。
Burp Suite 爆破
首先我們需要把瀏覽器和 Burp 的代理配置好,打開 Burp 的攔截模式刹缝。之后我們在lesspass.php
頁面中隨便輸入什么東西并提交碗暗,在 Burp 中就可以看到攔截的封包:
為了爆破密碼,我們需要使用它的 Intruder 功能梢夯,右鍵彈出菜單并選擇"Send to Intruder":
之后訪問 Intruder 標(biāo)簽頁言疗,在 Position 子標(biāo)簽頁中我們可以看到封包。
我們需要點擊右邊的Clear
按鈕把所有標(biāo)記清除掉颂砸,由于我們需要破解密碼噪奄,我們選中密碼參數(shù)值點擊Add
。
之后我們切換到旁邊的 Payloads 標(biāo)簽頁人乓,點擊中間的load
按鈕勤篮,加載字典。我們選擇之前的top100.txt
撒蟀。
不要忘了要將admin888
插入進(jìn)去叙谨。在下面的輸入框中輸入admin888
,并點擊旁邊的Add
保屯。
點擊右上角的Start Attack
來開始爆破手负,我們會看到結(jié)果列表涤垫。
我們點擊Length
表頭,讓它按照長度來排序竟终◎疴可以發(fā)現(xiàn)有一個項目的長度與其它明顯不同,那么它就是正確的結(jié)果统捶。
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 來攔截。像之前一樣什黑,發(fā)送到Intruder
崎淳,然后清除掉所有標(biāo)記,只保留 ID 的標(biāo)記:
由于是純數(shù)字愕把,我們把上面的Payload Type
調(diào)成Numbers
拣凹。下面,我們把From
設(shè)為1
恨豁,To
設(shè)為10
嚣镜,Step
設(shè)為1
。
之后點擊Start Attack
橘蜜。我們可以看到結(jié)果菊匿,其中ID 1 ~ 5 的長度都是 224,6 ~ 10 都是 211扮匠。我們之前的測試中捧请,2 是有效的,所以 224 應(yīng)該是有效內(nèi)容的長度棒搜。