一想邦、攻擊模塊1:Brute Force(暴力破解)
暴力破解一般指窮舉法,窮舉法的基本思想是根據(jù)題目的部分條件確定答案的大致范圍委刘,并在此范圍內(nèi)對(duì)所有可能的情況逐一驗(yàn)證丧没,直到全部情況驗(yàn)證完畢。若某個(gè)情況驗(yàn)證符合題目的全部條件锡移,則為本問(wèn)題的一個(gè)解呕童;若全部情況驗(yàn)證后都不符合題目的全部條件,則本題無(wú)解淆珊。窮舉法也稱為枚舉法夺饲。
二、源碼分析(文件地址:./DVWA/vulnerabilities/brute/source/low.PHP)
[html]view plaincopy
if(?isset(?$_GET[?'Login'?]?)?)?{
//?Get?username
$user=?$_GET[?'username'?];
//?Get?password
$pass=?$_GET[?'password'?];
$pass=md5(?$pass?);
//?Check?the?database
$query="SELECT?*?FROM?`users`?WHERE?user?=?'$user'?AND?password?=?'$pass';";
$result=mysqli_query($GLOBALS["___mysqli_ston"],??$query?)?or?die(?'
'?.?((is_object($GLOBALS["___mysqli_ston"]))???mysqli_error($GLOBALS["___mysqli_ston"])?:?(($___mysqli_res=mysqli_connect_error())???$___mysqli_res?:?false))?.?'
'?);
if(?$result?&&?mysqli_num_rows(?$result?)?==?1?)?{
//?Get?users?details
$row=mysqli_fetch_assoc(?$result?);
$avatar=?$row["avatar"];
//?Login?successful
echo?"
Welcome?to?the?password?protected?area?{$user}
";
echo?"";
}
else?{
//?Login?failed
echo?"
Username?and/or?password?incorrect.
";
}
((is_null($___mysqli_res=mysqli_close($GLOBALS["___mysqli_ston"])))???false?:?$___mysqli_res);
}
?>
通過(guò)觀察這個(gè)模塊的源代碼,可以看到往声,這是一個(gè)典型的萬(wàn)能密碼茫蛹。
三、實(shí)戰(zhàn)爆破
1.我們首先配置好burpsuite的本地代理烁挟。
在Login中輸入用戶名與密碼
然后用burpsuite進(jìn)行攔截
2.將表單進(jìn)行提交到intruder模塊,并將password設(shè)置為我們破解的payload
然后在Position選項(xiàng)中設(shè)置需要破解的變量骨坑。Burpsuite會(huì)自動(dòng)設(shè)置許多變量撼嗓,單擊“Clear”按鈕,把默認(rèn)變量全部清除欢唾,然后選中密碼123且警,單擊“Add”按鈕將之設(shè)為需要破解的變量。
3.設(shè)置字典文件礁遣。
3.1.使用自帶的字典
3.2.加載外部字典
點(diǎn)擊Load,選擇字典文件路徑
4.開(kāi)始枚舉斑芜,得到密碼。
Burp suite攻擊類型:
第一種:
Sniper標(biāo)簽 這個(gè)是我們最常用的祟霍,Sniper是狙擊手的意思杏头。這個(gè)模式會(huì)使用單一的payload【就是導(dǎo)入字典的payload】組。它會(huì)針對(duì)每個(gè)position中$$位置設(shè)置payload沸呐。這種攻擊類型適合對(duì)常見(jiàn)漏洞中的請(qǐng)求參數(shù)單獨(dú)地進(jìn)行測(cè)試醇王。攻擊中的請(qǐng)求總數(shù)應(yīng)該是position數(shù)量和payload數(shù)量的乘積。
第二種:
Battering ram – 這一模式是使用單一的payload組崭添。它會(huì)重復(fù)payload并且一次把所有相同的payload放入指定的位置中寓娩。這種攻擊適合那種需要在請(qǐng)求中把相同的輸入放到多個(gè)位置的情況。請(qǐng)求的總數(shù)是payload組中payload的總數(shù)呼渣。簡(jiǎn)單說(shuō)就是一個(gè)playload字典同時(shí)應(yīng)用到多個(gè)position中
第三種:
Pitchfork – 這一模式是使用多個(gè)payload組棘伴。對(duì)于定義的位置可以使用不同的payload組。攻擊會(huì)同步迭代所有的payload組屁置,把payload放入每個(gè)定義的位置中焊夸。比如:position中A處有a字典,B處有b字典缰犁,則a【1】將會(huì)對(duì)應(yīng)b【1】進(jìn)行attack處理淳地,這種攻擊類型非常適合那種不同位置中需要插入不同但相關(guān)的輸入的情況。請(qǐng)求的數(shù)量應(yīng)該是最小的payload組中的payload數(shù)量
第四種:
Cluster bomb – 這種模式會(huì)使用多個(gè)payload組帅容。每個(gè)定義的位置中有不同的payload組颇象。攻擊會(huì)迭代每個(gè)payload組,每種payload組合都會(huì)被測(cè)試一遍并徘。比如:position中A處有a字典遣钳,B處有b字典,則兩個(gè)字典將會(huì)循環(huán)搭配組合進(jìn)行attack處理這種攻擊適用于那種位置中需要不同且不相關(guān)或者未知的輸入的攻擊麦乞。攻擊請(qǐng)求的總數(shù)是各payload組中payload數(shù)量的乘積蕴茴。
1.第一種Sniper
破解時(shí)間的長(zhǎng)短就取決于密碼字典的大小和CPU的計(jì)算能力苇羡,破解完成后,可以通過(guò)length的不同找到正確的密碼潘拨。
4.第四種
輸入任意用戶名和密碼看返回的錯(cuò)誤提示,記著錯(cuò)誤的提示
記下 Username and/or password incorrect.后面配置burpsuite時(shí)要用卒暂,burpsuite代理設(shè)置好,再次任意輸入用戶名和密碼撞叽,burpsuite攔截后把數(shù)據(jù)發(fā)到intruder功能下姻成。然后在positions下選擇攻擊類型 Cluster bomb
在payload sets中,分別設(shè)置Payload set 1 和 Payload set 2 對(duì)應(yīng)用戶名與密碼字典
然后options下,Grep-Match中添加 Username and/or password incorrect
點(diǎn)擊intruder下拉欄的start attack即可