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

微軟Outlook曝高危安全漏洞
華為榮獲BSI全球首批漏洞管理體系認證
Web安全之滲透測試基礎與實踐
華為數字能源獲BSI全球首批漏洞管理體系認證
常見的漏洞分享

評論