作者 |林海文 上??匕部尚跑浖?chuàng)新研究院汽車網(wǎng)絡(luò)安全組
來源 |鑒源實驗室
01
前 言
當(dāng)談及安全測試時,邏輯漏洞挖掘一直是一個備受關(guān)注的話題,它與傳統(tǒng)的安全漏洞(如SQL注入、XSS、CSRF)不同,無法通過WAF、殺軟等安全系統(tǒng)的簡單掃描來檢測和解決。這類漏洞往往涉及到權(quán)限控制和校驗方面的設(shè)計問題,通常在系統(tǒng)開發(fā)階段未充分考慮相關(guān)功能的安全性。
舉例來說,攻擊者可以利用這些邏輯漏洞,通過利用程序員在設(shè)計中的疏忽,實施交易數(shù)據(jù)篡改、敏感信息盜取以及資產(chǎn)竊取等操作。這種類型的漏洞潛在危害極大,可能導(dǎo)致企業(yè)遭受資產(chǎn)損失和聲譽受損的風(fēng)險,而傳統(tǒng)的安全防御設(shè)備和措施往往無法有效應(yīng)對這些問題,顯得力不從心。
02
挖掘思路總結(jié)(部分)
當(dāng)提到邏輯漏洞時,有各種各樣的漏洞類型。其中,賬戶、驗證碼、越權(quán)這三個模塊是最常見且相對較容易被攻擊的部分。下面,我們可以看一下這三個模塊中常見的挖洞姿勢。
03
一些挖掘?qū)嵗?/p>
3.1 驗證碼
3.1.1修改返回包繞過
這種方法基于返回的狀態(tài)碼來驗證用戶憑證的正確性,通常情況下,正確的驗證碼返回狀態(tài)碼為1,錯誤則為0。因此,攻擊者可以通過抓取響應(yīng)包,并將錯誤的狀態(tài)碼修改為1,從而成功繞過驗證。
找到系統(tǒng)登錄界面修改賬戶密碼的地方,采用郵箱修改密碼;選擇發(fā)送驗證碼后,隨機(jī)輸入一串驗證碼,發(fā)送數(shù)據(jù),然后抓包。請求包如下:
再攔截一下響應(yīng)包。如下圖,可以直接看到“data:false”進(jìn)行了一個判斷。修改false為true后放包:
成功繞過,直接跳轉(zhuǎn)到修改密碼處:
填入新的密碼,點擊確認(rèn),修改成功。
3.1.2驗證碼傳遞特殊參數(shù)繞過
驗證碼安全控制的失效問題。通常,常見的系統(tǒng)安全措施包括設(shè)置6位數(shù)驗證碼,有效期為30分鐘或更短,驗證失敗6次后驗證碼會直接失效。然而,有些系統(tǒng)采用標(biāo)志位來控制驗證碼的狀態(tài)和生命周期。當(dāng)標(biāo)志位為1時,系統(tǒng)將驗證碼標(biāo)記為失效,用戶無法再使用該驗證碼來修改密碼;而當(dāng)標(biāo)志位為0時,系統(tǒng)將驗證碼標(biāo)記為有效,用戶可以繼續(xù)完成密碼修改流程。
同樣的,在個人中心處發(fā)現(xiàn)存在修改密碼的功能點,仍舊是通過郵箱重置密碼。點擊“獲取驗證碼”:
等待6分鐘后輸入正確的驗證碼并抓包(此處6分鐘為驗證碼過期時間),響應(yīng)報文提示驗證碼已經(jīng)失效。請求及響應(yīng)包如下:
將此處sourceFlag標(biāo)注為u從1修改為0,發(fā)送報文,看到右側(cè)響應(yīng),成功繞過時效性以及錯誤次數(shù)的限制:
3.2 賬戶
3.2.1遍歷猜解已有賬號
這種漏洞可能存在于用戶注冊、密碼重置或驗證碼驗證流程中。在注冊過程中,如果系統(tǒng)內(nèi)部已存在相同賬戶,通常無法成功注冊。對于密碼重置策略不夠安全的網(wǎng)站,比如允許用戶通過相對簡單的信息(如用戶名、電子郵件地址或手機(jī)號碼)來重置密碼,攻擊者可以通過遍歷或猜測這些信息來找到有效的用戶賬號。此外,如果網(wǎng)站在驗證碼驗證過程中沒有足夠的限制或防護(hù)機(jī)制,攻擊者可以嘗試多次提交驗證碼,通過遍歷可能的驗證碼值來找到有效的組合。
同樣的,在個人中心處發(fā)現(xiàn)存在修改密碼的功能點,仍舊是通過郵箱重置密碼。點擊“獲取驗證碼”:
等待6分鐘后輸入正確的驗證碼并抓包(此處6分鐘為驗證碼過期時間),響應(yīng)報文提示驗證碼已經(jīng)失效。請求及響應(yīng)包如下:
修改email為不存在的用戶郵箱,發(fā)送報文得到response,提示當(dāng)前用戶不存在。那么可以采用常見用戶遍歷的方式進(jìn)行猜解:
3.3 越權(quán)
3.3.1越權(quán)修改賬戶密碼
網(wǎng)站未能有效驗證和控制用戶在修改郵箱地址時的權(quán)限。攻擊者可以繞過身份驗證,訪問其他用戶的郵箱地址修改頁面,并進(jìn)行未經(jīng)授權(quán)的郵箱地址修改。這表明在系統(tǒng)設(shè)計階段可能沒有進(jìn)行全面的用戶身份驗證,或者存在身份驗證方面的漏洞,因此可能導(dǎo)致任意賬戶密碼的重置。
在個人中心修改賬戶密碼的地方,采用郵箱修改密碼;選擇發(fā)送驗證碼后,輸入正確的驗證碼,點擊下一步,成功驗證進(jìn)到修改新密碼這一步。
輸入新密碼,發(fā)送數(shù)據(jù),然后抓包。請求包如下:
修改email地址為admin@*.com(admin用戶的id),將攔截到的報文給發(fā)送出去:
成功修改admin賬戶的密碼:
使用admin用戶的新密碼登錄成功:
3.3.2越權(quán)修改其他用戶密碼
在正常情況下,當(dāng)用戶試圖修改他們自己的密碼時,系統(tǒng)應(yīng)該首先驗證用戶的身份,以確保他們有權(quán)訪問和修改他們自己的帳戶信息。身份驗證通常包括要求用戶提供當(dāng)前密碼或其他身份驗證憑證。然而,在某些情況下,系統(tǒng)未充分執(zhí)行身份驗證檢查,例如將 "id" 參數(shù)設(shè)置為目標(biāo)用戶的帳戶標(biāo)識。這使得攻擊者可以通過篡改請求中的 "id" 參數(shù)來偽裝成其他用戶的帳戶,而無需提供正確的身份驗證憑證。
利用已知賬戶登錄進(jìn)系統(tǒng),選擇更改登錄口令功能,修改新口令點擊確定,抓包如下:
burp攔截報文,可發(fā)現(xiàn)它的Id字段可控:
修改id為2,根據(jù)服務(wù)器回應(yīng)的報文,成功篡改id為2的用戶的密碼:
3.3.3越權(quán)登陸
通常情況下,登錄過程應(yīng)依賴于用戶提供的憑據(jù),例如用戶名和密碼。然而,在某些系統(tǒng)中,存在由客戶端提供的參數(shù),如certSn,用于標(biāo)識用戶會話。攻擊者可以修改certSn參數(shù)以繞過授權(quán)檢查,導(dǎo)致服務(wù)器未能正確驗證會話是否屬于請求的用戶。這種漏洞使得攻擊者能夠手動修改certSn的數(shù)值,從而進(jìn)行賬戶猜解攻擊。
插入一張key(非RA管理員),點擊登錄,抓包如下:
觀察到其存在Certsn參數(shù):
可增加或者減小當(dāng)前數(shù)值來修改該參數(shù),成功登錄RA管理員賬號:
審核編輯 黃宇
-
漏洞
+關(guān)注
關(guān)注
0文章
204瀏覽量
15375
發(fā)布評論請先 登錄
相關(guān)推薦
評論