柚子快報(bào)邀請碼778899分享:web安全學(xué)習(xí)筆記(15)
柚子快報(bào)邀請碼778899分享:web安全學(xué)習(xí)筆記(15)
記一下第25-26課的內(nèi)容。弱口令爆破的四種模式與判斷成功失敗的三種方案;爆破中的驗(yàn)證碼攔截+錯(cuò)誤次數(shù)+IP限制+密碼加密繞過 + IP獲取的原理以及繞過CDN獲取客戶真實(shí)IP
一、弱口令的分類
1.常規(guī)弱口令:如123456,666666,888888等
2.默認(rèn)弱口令:如防火墻、路由器出廠時(shí)的默認(rèn)密碼。
例,天融信防火墻的默認(rèn)密碼:
又例如,深信服防火墻默認(rèn)密碼Sangfor888
二、使用burp進(jìn)行弱口令爆破
打開我們的靶場,找到admin登錄頁面后臺登錄
1.隨便在后臺輸入登錄信息,抓一個(gè)登錄數(shù)據(jù)包,并選擇“發(fā)送到Intruder”
2.通過文件加載字典,進(jìn)行爆破
然后選擇攻擊類型為sniper,在密碼處添加payload位置,設(shè)置好后,點(diǎn)擊開始攻擊:
通常而言,爆破成功所返回的“長度”字段的值要么會很大,要么會很小,會和正常返回的值不一樣,不過此處登錄成功和登錄失敗都有715的長度,這里的原因是,登錄成功里面,url是非空的,登錄失敗里面,url是空的,然而登錄成功的msg字段為“登錄成功”,登錄失敗的msg字段為“用戶名或密碼錯(cuò)誤”,正好抵消了字段長度差,因此具體情況要具體分析。
另外,我們在已知這里登錄成功會出現(xiàn)"code":1字段的情況下,我們可以在攻擊的結(jié)果頁面,點(diǎn)擊“設(shè)置”,找到“檢索-提取”,選擇“從相應(yīng)包中獲取以下項(xiàng)目”,點(diǎn)擊“添加”,并拉選"1"的相應(yīng)位置,點(diǎn)擊“確認(rèn)”。
然后我們回到結(jié)果頁面,就會有相應(yīng)的顯示:
除了sniper類型的攻擊外,burp共支持四種類型的攻擊,如下圖所示:
①Sniper,單向模式,就是我們剛才演示的,爆破用戶名或密碼
②Battering ram,可以同時(shí)爆破用戶名和密碼(或者其他多個(gè)變量),通常用于尋找用戶名和密碼相同的賬戶,這時(shí)就要將用戶名的變量位置和密碼的變量位置都添加payload位置
③Pitchfork,這里要導(dǎo)入多個(gè)字典。攻擊同時(shí)遍歷所有payload集,因此它使用每個(gè)集中的第一個(gè)payload,然后使用每個(gè)集中的第二個(gè)payload,依此類推。對于哪一個(gè)變量使用哪一個(gè)字典,遵循“從上至下,從左至右”的原則。而對于字典的設(shè)置,在payload->payload集中進(jìn)行設(shè)置
④Clusterbomb,集束炸彈,類似于交集,取第一個(gè)字典中的第i個(gè)元素,與第二個(gè)字典的所有元素進(jìn)行遍歷。
然而在實(shí)際應(yīng)用中,我們往往面臨各種各樣的問題,下面對幾個(gè)常見的問題進(jìn)行講解:
三、實(shí)踐中的問題
1.驗(yàn)證碼校驗(yàn)無法爆破
我們打開有驗(yàn)證碼登錄的靶場:
隨便輸入用戶名密碼,輸入對應(yīng)的驗(yàn)證碼,在burp中開啟攔截,點(diǎn)擊登錄
如果我們不去請求驗(yàn)證碼接口,驗(yàn)證碼就不會改變,所以我們先把它send to Intruder,然后直接丟棄這個(gè)數(shù)據(jù)包。這時(shí)候頁面會提示有未知錯(cuò)誤:
如何驗(yàn)證網(wǎng)頁是否存在驗(yàn)證碼漏洞呢?我們可以在intruder里面,連續(xù)兩次提交,如果都提示“用戶名或密碼錯(cuò)誤”,說明存在驗(yàn)證碼漏洞,如果第一次提示“用戶名或密碼錯(cuò)誤”,但第二次提交就提示“驗(yàn)證碼錯(cuò)誤”,說明這里的驗(yàn)證碼不能這么辦他。
至此總結(jié)驗(yàn)證碼校驗(yàn)的繞過思路:
①在提交信息之后是否及時(shí)銷毀掉了SESSION中的驗(yàn)證碼,如果沒有銷毀,那么我們就可以無限調(diào)用。
②通過驗(yàn)證碼識別軟件或者某些burp插件去繞過。
③關(guān)于點(diǎn)觸驗(yàn)證碼(給一張圖片讓你依次點(diǎn)擊文字)和滑動驗(yàn)證碼的知識暫時(shí)不講。
2.密碼錯(cuò)誤次數(shù)限制
實(shí)現(xiàn)過程:
①使用數(shù)據(jù)庫進(jìn)行驗(yàn)證,這個(gè)就很難進(jìn)行爆破
②使用SESSION,就可以刪除SESSION進(jìn)行爆破
3.密碼進(jìn)行了某種加密
例如該網(wǎng)站的內(nèi)容,我們隨便輸入用戶名密碼然后登陸,直接在網(wǎng)頁中找到數(shù)據(jù)包,發(fā)現(xiàn)用戶名和密碼都被加密。
下面講述嘗試查看其如何加密的三種方法
在網(wǎng)頁中找到用戶名的位置,右鍵檢查,發(fā)現(xiàn)其位置,并得知其name屬性為username,id屬性為u01。
然后進(jìn)行查找,先查找其id在網(wǎng)頁中出現(xiàn)的地方,發(fā)現(xiàn)并沒有給我們提供有用的信息:
于是我們查找username,發(fā)現(xiàn)有相關(guān)內(nèi)容,其加密可能是在此處進(jìn)行的:
var publicKeyString = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUmOXyQmYYSnZacp0btvAZCOvCNPtzixAp7eJmzmAG4mgy/VgrY/s1BDLh9qTNHIRWXepUtwMrf1kYul/A45qE/2oxIbeeq4238YDWQ7ModOVXR9ytEHsT0jpCFvoYfYXYZnnoWRrLIBylQeXzqxbLDxxBxGCs4AjoRKh5S7nNQIDAQAB';
function rsa_encrypt(data) {
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKeyString);
return encrypt.encrypt(data);
}
function submitForm() {
time(document.getElementById("myform"));
var theForm = document.forms[0];
if (theForm.username.value != '' && theForm.password.value != '') {
if(theForm.username.value == 'sysadmin') {
theForm.username.value = 'admin'
}
theForm.password.value = rsa_encrypt(theForm.password.value);
theForm.username.value = rsa_encrypt(theForm.username.value);
theForm.submit();
}
}
// 提醒后連續(xù)三次登錄失敗鎖定賬號后,出現(xiàn)按鈕登錄倒計(jì)時(shí)
var wait = -2;
function time(object) { //如果沒有緩存或者是登錄鎖定前,不進(jìn)行按鈕禁用
if (wait == 0 || (true)) {
object.removeAttribute("disabled");
} else {
object.setAttribute("disabled", true);
wait--;
if (wait == 0) {
object.value = "登錄";
} else {
object.value = "請?jiān)? + wait + "秒后重新嘗試";
}
setTimeout(function () {
time(object)
}, 1000);
}
}
通過查看代碼,我們可以判斷出這里使用了rsa加密,并且可以找到其公鑰publicKeyString = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUmOXyQmYYSnZacp0btvAZCOvCNPtzixAp7eJmzmAG4mgy/VgrY/s1BDLh9qTNHIRWXepUtwMrf1kYul/A45qE/2oxIbeeq4238YDWQ7ModOVXR9ytEHsT0jpCFvoYfYXYZnnoWRrLIBylQeXzqxbLDxxBxGCs4AjoRKh5S7nNQIDAQAB'
這樣,我們就可以通過他的代碼,對我們的輸入進(jìn)行加密,然后放到數(shù)據(jù)包里面,實(shí)現(xiàn)爆破。
或者也可以在burp里面實(shí)現(xiàn)簡單的編碼,要記得將最下面的框去掉勾選,此外我們可以多次編碼,只需要多次add即可:
四、PHP中獲取IP的原理以及繞過CDN獲取客戶真實(shí)IP
function getClientIP(){
//getenv()函數(shù)定義:取得系統(tǒng)的環(huán)境變量
if (getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif (getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("REMOTE_ADDR")) {
$ip = getenv("REMOTE_ADDR");
} else {
$ip = "Unknow";
}
if ($ip == '::1'){
//本地
$ip = '127.0.0.1';
}
return $ip;
}
繞過CDN尋找網(wǎng)站真實(shí)IP的方法匯總_如何查找到網(wǎng)站真實(shí)ip-CSDN博客
柚子快報(bào)邀請碼778899分享:web安全學(xué)習(xí)筆記(15)
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。