標題:弱口令漏洞詳解

taibeihacker

Moderator

###弱口令的定义​

弱口令(weak password) 沒有嚴格和準確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。弱口令指的是僅包含簡單數字和字母的口令,例如“123”、“abc”等,因為這樣的口令很容易被別人破解,從而使用戶的互聯網賬號受到他人控制,因此不推薦用戶使用

###弱口令产生原因​

這個應該是與個人習慣相關與意識相關,為了避免忘記密碼,使用一個非常容易記住的密碼,或者是直接採用系統的默認密碼等。相關的安全意識不夠,總認為不會有人會猜到我這個弱口令的,相關的安全意識不夠,總認為不會有人會猜到我這個弱口令的。

###弱口令的危害​

通過系統弱口令,可被黑客直接獲得系統控制權限。

###弱口令解决办法​

強制對所有的管理系統賬號密碼強度必須達到一定的級別。不可在使用簡單的admin、123456等弱密碼了,修改密碼為複雜密碼並加密保存,建議密碼包含大小寫字母,數據和特殊符號,密碼長度不低於八位,如果網站存在數據洩漏漏洞(如sql注入漏洞),務必修復漏洞。
設置密碼通常遵循以下原則:
(1)不使用空口令或系統缺省的口令,這些口令眾所周之,為典型的弱口令。
(2)口令長度不小於8 個字符。
(3)口令不應該為連續的某個字符(例如:AAAAAAAA)或重複某些字符的組合(例如:tzf.tzf.)。
(4)口令應該為以下四類字符的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字符。每類字符至少包含一個。如果某類字符只包含一個,那麼該字符不應為首字符或尾字符。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail 地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90 天內更換一次口令,防止未被發現的入侵者繼續使用該口令。

###弱口令分类​

公共弱口令​

公共弱口令就是常見的密碼,公共弱口令也就是根據大量的密碼數據統計得出的出現頻率較高弱口令,關於這方面的弱口令統計結果有很多,在此我就列舉一些出現頻率比較高的公共弱口令:
(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
對於網站後台而言,一般為:
admin
manager
admin123
admin888
admin666
具體來說,不同的後台類型擁有不同的弱密碼:
數據庫(phpmyadmin):賬號:root,密碼:root、root123、123456
tomcat:賬號:admin、tomcat、manager,密碼:admin、tomcat、admin123、123456、manager
jboss:賬號:admin、jboss、manager,密碼:admin、jboss、manager、123456
weblogic:賬號:weblogic、admin、manager,密碼:weblogic、admin、manager、123456

条件型​

個人弱口令往往與這個人的個人信息(姓名,生日,手機號,特殊暱稱,愛好,社交軟件賬號,常用username,郵箱.),關係成員(家庭成員,男女朋友.),所處環境(車牌號,公司信息比如公司名稱,公司成立時間或地點,公司domain等.),還有特殊的指定字符(數字,單詞.),在這裡我也列舉一些經常出現的組合:我們可以使用這個猜密碼的網站來生成條件弱口令字典。
echye0rldbd23870.jpg

比如我們知道一個人,他的信息如下:
姓名:王小二郵箱:[email protected]
英文名:twowang 手機號:110
那我們就可以在這個網站上輸入這些信息,然後點擊下方的“提交”
2ssnc33seft23871.jpg

然後我們就得到了這個最有可能的密碼:
ycjovatishy23872.jpg

另提示一點:當系統要求密碼組合必須包含大寫字母時候,根據中國人密碼設定習慣,會有83%的人將大寫字母,且是唯一存在的大寫字母放在第一位

###弱口令实列​

普通的弱口令猜测​

比如說,我們使用這樣一段代碼來演示弱口令漏洞,它模擬了某個系統的後台。
?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 '登錄失敗';
}
把它保存為lesspass.php,將其部署後訪問http://localhost/lesspass.php。
接下來我們假裝不知道真實密碼,開始嘗試。對於管理員賬戶,用戶名一般是admin,密碼可能為admin、admin123、admin888、123456、123abcadmin等等。首先輸入admin和admin,嘗試失敗:
zop4k2ciako23873.jpg

之後是admin和admin123,還是失敗。最後嘗試admin和admin888,成功。
y45pehsne2023874.jpg

Burp Suite 爆破​

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

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

之後訪問Intruder 標籤頁,在Position 子標籤頁中我們可以看到封包。
14pmqwsdtol23877.jpg

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

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

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

點擊右上角的Start Attack來開始爆破(老版本是Intruder - Start Attack菜單欄),我們會看到結果列表。
3zjwb5ppfhw23881.jpg

kbhzfezdlz423882.jpg

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

PKAV Fuzze爆破​

雙擊Pkav HTTP Fuzzer 1.5.6.exe來打開它。另外目錄下還有一份使用手冊,Pkav HTTP Fuzzer使用手冊Ver 1.0.pdf,大家可以參考這個手冊。這個教程只會講用到的功能
它的主界面是這樣的:
waal4kgzoca23884.jpg

左邊是“請求包”輸入框,我們需要填寫整個
HTTP 封包(就是Burp 中的Proxy -
Intercept選項卡中的內容),我們將其複製過來。然後我們選中pw位置的admin,點擊下面的“添加標記”:
okmbmhsaczr23885.jpg

我們再來看看右邊的“重放設置”,“重放模式”和“變體賦值”都不用改動,我們點擊下方的“導入”按鈕,選擇之前的top100.txt。
n50r3jzcsyi23886.jpg

之後再“添加”按鈕右邊的輸入框中輸入admin888,然後點擊“添加”。
p5s3ry4bgdg23887.jpg

然後我們點擊下方的“發包器”選項卡,在新的界面中直接點“啟動”:
3fmixnalqlu23888.jpg

然後我們點擊“長度”表頭,讓它按照長度排序。
2wfv2kr24li23889.jpg

我們可以看到,僅當密碼為admin888時長度為6,其它都是其它數值,那麼它就是正確密碼

###弱口令漏洞描述​

通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令,常見弱口令有:
1、數字或字母連排或混排,鍵盤字母連排(如:123456,abcdef,123abc,qwerty,1qaz2wsx等)
2、生日,姓名+生日(利用社工非常容易被破解)
3、短語密碼(如:5201314,woaini1314等)

###弱口令生成​

關於弱口令生成可以利用相關工具或者腳本,工具的話網上有很多,可以自行搜索下載,在這裡我提供自己寫的python小腳本,如果有需要請自行修改,僅作參考:
# -*- coding: utf-8 -*-
weak_password=['000000','0000000','111111','11111111','112233','123123','123321','123456','12345678','87654321','123456789','987654321','1234567890','0123456789','654321','666666','888888','666888','6 6668888','abcdef','147258369','abcabc','abc123','a1b2c3','aaa111','123qwe','qweasd','admin','root','pass123','p@ssword','password','passwd','iloveyou','woaini','5201314','qq123456','taobao','wang1234']
foreign_weak_password=['password','123456','12345678','qwerty','abc123','monkey','1234567','letmein','trustno1','dragon','baseball','111111','iloveyou','master','sunshine','ashley','bailey','passw0rd ','shadow','123123','654321','superman','qazwsx','michael','football','qwerty','welcome','ninja','hello','happy','anything','abcabcabc','qwert123','system','command','adminstrator','mouse','harddisk']
name=['xiaoming','Xiaoming','xiaoMing','xiao_ming','xiaoM','XMing','Xming','xl','XM']
birth=['1995','_1995','09','9','23','199509','_950923','_199509','9509','0923','19950925']
specialnum=['1314','520','000','111','123','168','1234','123456','5201314','888','666','123123']
id=['mingxiaozi','xiaolifeidao']
companyinfo=['jingdong','JongDong','jd','JD']
#自行添加更多信息
f=open('weakpasswords.txt','w')
for a in weak_password:
f.write(a+'\n')
for b in foreign_weak_password:
f.write(b+'\n')
for c in name:
for d in birth:
f.write(c+d+'\n')
f.write(d+c+'\n')
for e in name:
for f in specialnum:
f.write(e+f+'\n')
f.write(f+e+'\n')
for i1 in id:
for b1 in birth:
f.write(i1+b1+'\n')
f.write(b1+i1+'\n')
for i2 in id:
for s1 in specialnum:
f.write(i2+s1+'\n')
f.write(s1+i2+'\n')
for n1 in name:
for b1 in birth:
for s2 in
specialnum:
f.write(n1+s2+b1+'\n')
f.write(s2+n1+b1+'\n')
f.write(s2+b1+n1+'\n')
#自行添加更多組合

###弱口令的tips​

1.遵循某种规律,读起来朗朗上口,或者是我们小时候最先接触的一些数字或者字母。123456,123abc,abc123,123456abcdef!@#這些弱口令也有人戲稱是滾鍵盤,例如admin!@#看起來並不簡單,但它確實是滾鍵盤,屬於弱密碼,我在實際滲透中,曾許多次碰到這個弱口令admin!@#防御策略:對企業員工進行安全培訓,提高安全意識,安全中沒有僥倖,只有萬一。滾鍵盤類的密碼還是少用,盡量使用難以猜解的密碼。
2.无意间的信息泄漏,导致密码泄漏或者可能易于被猜测永遠都不要質疑白帽子們的腦洞,他們做CTF的時候,腦洞大著呢。中國網某子網站後台弱口令:lujiaji(漏洞作者:blast)https://www.secpulse.com/archives/1...://cb.drops.wiki/bugs/wooyun-2014-076453.html
应对策略:(1).登錄名和用戶名應進行區分
(2).實行有效的密碼策略,杜絕密碼中包含用戶名,甚至是完全相同的情況存在
(3)記住GitHub是安全隱含一大來源
(4).不要使用易於從企業名稱或者域名中得到密碼信息的口令。
3.雖然密碼強度可靠,但大量系統使用同一密碼
 
返回
上方