Web安全實踐-課件 第9章 邏輯漏洞(下)_第1頁
Web安全實踐-課件 第9章 邏輯漏洞(下)_第2頁
Web安全實踐-課件 第9章 邏輯漏洞(下)_第3頁
Web安全實踐-課件 第9章 邏輯漏洞(下)_第4頁
Web安全實踐-課件 第9章 邏輯漏洞(下)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Web安全基礎第9章邏輯漏洞(下)目錄CONTENTS9.1驗證碼漏洞9.3密碼重置漏洞9.4密碼重置漏洞防御9.5習題9.6本章小結9.2驗證碼漏洞防御9.1驗證碼漏洞9.1.4短信驗證碼轟炸9.1.5圖形驗證碼不強制刷新9.1.6其他驗證碼繞過問9.1.1暴力破解驗證碼

9.1.2服務端返回驗證碼文本9.1.3短信驗證碼未綁定手機號9.1驗證碼漏洞驗證碼(CAPTCHA)是一種用于區(qū)分人類用戶和自動化程序的圖靈測試機制。作為現代網絡應用中廣泛應用的安全措施,驗證碼在各類系統(tǒng)中發(fā)揮著關鍵的防護作用。驗證碼不僅能夠提供安全認證,還能有效區(qū)分人類與機器操作,有效阻止批量注冊、批量登錄、批量表單提交等自動化操作,同時也能有效防范惡意撞庫、垃圾信息傳播、短信轟炸等多種攻擊行為。驗證碼具有多種實現形式,主要包括圖形驗證碼、短信驗證碼等類型。圖形驗證碼主要通過視覺感知,要求用戶識別、輸入或操作圖像中的字符、數字或特定圖形,其主要目的是區(qū)分人類與機器,防止自動化程序的惡意攻擊;短信驗證碼則通過向用戶發(fā)送包含隨機數字的短信,要求用戶在規(guī)定時間內準確輸入該數字,其主要目的是區(qū)分人與人,確保用戶身份的真實性。圖形驗證碼的失效將導致系統(tǒng)喪失抵御自動化程序攻擊的能力;短信驗證碼的失效會使身份認證機制遭到破壞,致使攻擊者能夠通過冒充合法用戶實施各種惡意操作,對系統(tǒng)安全和用戶利益造成嚴重損害。9.1驗證碼漏洞驗證碼存在被暴力破解的可能性,這種情況通常發(fā)生在服務端未對驗證碼的最大錯誤次數和有效時間進行合理限制時,攻擊者能夠利用自動化程序,通過持續(xù)性的窮舉嘗試破解驗證碼。驗證碼通常由4位或6位的純數字組成,也存在字母與數字組合的形式。對于4位純數字驗證碼,其組合空間為1萬種,使用普通計算機能在2-3分鐘內完成遍歷;6位純數字驗證碼雖然擴展至100萬種可能的組合,但普通計算機仍能在1小時內完成遍歷。由此可見,如果系統(tǒng)未對驗證碼實施有效的防護措施和使用限制,攻擊者極有可能通過暴力破解方式獲取有效驗證碼。為防范暴力破解驗證碼,服務端應當實施最大錯誤次數限制,并在錯誤次數達到閾值后強制刷新驗證碼。另一種有效的防護措施是增加驗證碼的復雜性,例如使用更長的字符組合或其他類型的驗證碼。9.1.1暴力破解驗證碼9.1驗證碼漏洞攻擊者可以利用BurpSuite的Intruder模塊暴力破解驗證碼,并通過分析響應數據包的長度判斷是否成功破解,如圖所示。9.1.1暴力破解驗證碼9.1驗證碼漏洞服務端返回驗證碼文本是指在用戶請求驗證碼后,服務端會將驗證碼文本寫入響應數據包并返回給客戶端。攻擊者通過抓包工具(例如BurpSuite)即可截取響應數據包中的驗證碼文本。在這種情況下,驗證碼實際上已經失去了防護作用,攻擊者無需進行驗證碼識別就能獲得有效驗證碼。如圖所示,在響應數據包中能夠獲取返回的驗證碼文本。9.1.2服務端返回驗證碼文本9.1驗證碼漏洞除此之外,部分系統(tǒng)還會將驗證碼文本存儲在Cookie中,如圖所示。攻擊者可以通過瀏覽器中的開發(fā)者工具查看Cookie信息,從而判斷系統(tǒng)是否會將驗證碼文本存儲在Cookie中。實際上,這種方式是讓客戶端承擔了驗證碼的校驗工作。為確保驗證碼的可用性和安全性,驗證碼的校驗工作必須在服務端完成,這樣才能有效防止攻擊者通過攔截響應數據包獲取驗證碼而繞過安全驗證。9.1.2服務端返回驗證碼文本9.1驗證碼漏洞短信驗證碼未綁定手機號是指系統(tǒng)在處理短信驗證碼時,未能建立短信驗證碼與手機號之間的唯一綁定關系,這導致在用戶注冊、密碼找回和綁定手機等需要校驗短信驗證碼的功能中,攻擊者能夠利用未綁定手機號的短信驗證碼對任意手機號進行驗證。例如在用戶注冊功能中,用戶A首先向自己的手機號發(fā)送短信驗證碼,然后在提交表單完成注冊時,使用BurpSuite攔截請求數據包,將手機號修改為用戶B的手機號,而短信驗證碼處仍填寫用戶A獲取的短信驗證碼。由于系統(tǒng)未將短信驗證碼與手機號建立綁定關系,導致攻擊者可以使用用戶A獲取的短信驗證碼完成用戶B手機號的注冊。為防范短信驗證碼未綁定手機號的安全風險,系統(tǒng)應在服務端實現短信驗證碼與手機號的唯一綁定關系,從而確保短信驗證碼只能用于驗證與之綁定的特定手機號。9.1.3短信驗證碼未綁定手機號9.1驗證碼漏洞短信驗證碼轟炸是一種針對系統(tǒng)短信服務的惡意攻擊行為,攻擊者通過自動化腳本或工具,持續(xù)觸發(fā)系統(tǒng)的短信發(fā)送功能,導致特定手機號在短時間內接收大量短信驗證碼。短信驗證碼轟炸通常源于系統(tǒng)短信服務設計存在邏輯缺陷,主要表現為未對短信發(fā)送頻率和總量進行有效控制,導致攻擊者能夠突破正常業(yè)務限制,重復發(fā)送短信驗證碼。此類攻擊不僅會對用戶造成嚴重的騷擾,影響手機正常使用,而且由于發(fā)送短信需要購買短信資源,持續(xù)的短信驗證碼轟炸還將導致短信資源的過度消耗,進而造成經濟損失。短信驗證碼轟炸的效果如圖所示,受害用戶會在短時間內收到大量短信驗證碼。為防范短信驗證碼轟炸,系統(tǒng)應對短信驗證碼接口實施嚴格的發(fā)送次數和發(fā)送間隔限制。例如,限制每日至多向單個手機號發(fā)送5條驗證碼,且發(fā)送間隔不少于1分鐘。注意:這些限制不應只在客戶端進行設置,更重要的是在服務端進行設置。9.1.4短信驗證碼轟炸9.1驗證碼漏洞通常情況下,圖形驗證碼在生成后會存儲在用戶會話(Session)中,并在完成一次校驗后立即從Session中刪除以防止重復使用。然而,部分系統(tǒng)在圖形驗證碼校驗后并未及時清除Session中的驗證碼信息,而是當用戶重新請求圖形驗證碼接口時才生成新的圖形驗證碼以覆蓋舊的圖形驗證碼,這種實現方式導致圖形驗證碼的更新完全依賴于用戶主動請求新的圖形驗證碼,而非系統(tǒng)強制刷新圖形驗證碼。如果攻擊者在后續(xù)操作中刻意避免請求新的圖形驗證碼,舊的圖形驗證碼便會持續(xù)保留在Session中,從而被重復使用。圖形驗證碼不強制刷新的問題十分普遍,攻擊者通過不再請求圖形驗證碼接口,可以針對同一Session重復使用相同的圖形驗證碼,進而繞過圖形驗證碼的安全校驗機制,導致系統(tǒng)容易遭受針對用戶登錄等關鍵功能的暴力破解攻擊。9.1.5圖形驗證碼不強制刷新9.1驗證碼漏洞此處以Windows7靶機中大米CMS的用戶登錄功能為例,PHP版本選擇5.6.9,使用Chrome瀏覽器訪問“01/practice8/damicms/index.php?s=/Member/login.html”。在填寫用戶登錄表單后,通過BurpSuite工具攔截登錄請求數據包,隨后右擊,點擊“SendtoRepeater”選項以將捕獲的請求數據包轉發(fā)至Repeater模塊,如圖所示。9.1.5圖形驗證碼不強制刷新9.1驗證碼漏洞隨后,攻擊者可以在Repeater模塊中重復發(fā)送包含相同驗證碼的登錄請求,如圖所示。若系統(tǒng)返回“用戶名或密碼錯誤”而非“驗證碼錯誤”的提示信息,表明系統(tǒng)存在圖形驗證碼不強制刷新的漏洞,攻擊者可以利用這一漏洞對用戶登錄功能實施暴力破解攻擊。為防范圖形驗證碼不強制刷新,系統(tǒng)必須在圖形驗證碼被使用后立即將其從Session中刪除,并在用戶再次操作時強制獲取新的圖形驗證碼。9.1.5圖形驗證碼不強制刷新9.1驗證碼漏洞1.驗證碼由客戶端生成及校驗部分系統(tǒng)將驗證碼的生成和校驗完全置于客戶端的JavaScript中實現并執(zhí)行,這種設計的典型特征是驗證碼始終不與服務端進行交互,校驗過程僅在客戶端完成。這種實現存在嚴重的安全風險,攻擊者可以通過分析客戶端的JavaScript代碼了解驗證碼生成算法和校驗邏輯,從而繞過客戶端驗證。更直接地,攻擊者可以禁用客戶端的JavaScript,這將導致校驗失效。盡管這種實現方式較為少見,但它強調了關鍵的安全校驗邏輯必須在服務端實現,而客戶端應只負責驗證碼的展示和用戶輸入的采集。2.達到錯誤次數閾值后才啟用驗證碼部分系統(tǒng)采用動態(tài)啟用驗證碼的策略:系統(tǒng)默認不啟用驗證碼,僅在用戶連續(xù)輸入錯誤次數達到錯誤閾值后才啟用。例如,設定用戶登錄失敗超過三次后才啟用圖形驗證碼。Web開發(fā)者可能在Session中設置一個變量用于記錄錯誤次數,然而,當攻擊者每次都清除Cookie中的SessionID并重新發(fā)起登錄請求時,系統(tǒng)會分配新的SessionID,導致無法連續(xù)地統(tǒng)計錯誤次數,最終繞過驗證碼機制。此外,部分Web開發(fā)者將錯誤次數記錄在Cookie的某個變量中,此時,攻擊者可以直接修改Cookie中的錯誤次數使其始終小于錯誤閾值,從而始終避免啟用驗證碼。9.1.6其他驗證碼繞過問題9.1驗證碼漏洞3.驗證碼自動化識別風險簡單的驗證碼生成算法可能導致生成的驗證碼能夠被自動化識別工具破解,特別是基礎的圖形驗證碼,能夠直接被光學字符識別(OpticalCharacterRecognition,OCR)工具識別。OCR工具能夠直接識別簡單驗證碼,或者在經過簡單的預處理和切片后進行識別,從而破解驗證碼。對于簡單的數字或字母組成的驗證碼,OCR工具的識別效果尤其顯著。若驗證碼中添加了噪點或動態(tài)模糊,則會增加OCR工具識別的難度。以Python中的EasyOCR庫識別驗證碼為例,示例代碼如下:9.1.6其他驗證碼繞過問題importeasyocr#創(chuàng)建OCR對象,指定識別的語言為英文reader=easyocr.Reader(['en'])#識別圖片中的文字,返回的結果包括邊界框、文字內容和置信度result=reader.readtext('image.png')9.1驗證碼漏洞上述示例代碼中的image.png如圖所示,是一個簡單且沒有過多視覺干擾元素的驗證碼。9.1.6其他驗證碼繞過問題#處理識別結果,輸出文字內容及其置信度for(bbox,text,confidence)inresult:#“f”表示格式化字符串,將變量text和confidence嵌入字符串中print(f'Text:{text},Confidence:{confidence}')執(zhí)行結果如下。正確識別出驗證碼為“petu”,置信度約為75.05%。>pythonsimple_ocr.pyText:petu,Confidence:0.75057184696197519.1驗證碼漏洞將上述示例代碼中的image.png替換為包含視覺干擾元素的驗證碼,如右圖所示。9.1.6其他驗證碼繞過問題執(zhí)行結果如下。此時EasyOCR庫錯誤地將驗證碼“4316”識別為“4Lr6”,且置信度僅為24.67%,這一結果表明適當的視覺干擾元素能夠影響OCR工具的識別效果。>pythonsimple_ocr.pyText:4Lr6,Confidence:0.246742025017738349.1驗證碼漏洞除了EasyOCR庫,市面上還存在其他更為先進的驗證碼識別工具。例如,如圖所示的次世代驗證碼識別系統(tǒng)能夠有效識別具有字符扭曲、粘連、重疊特征的驗證碼,并支持分割識別、混合識別、整體識別和快速識別四大類模式。9.1.6其他驗證碼繞過問題9.2驗證碼漏洞防御針對邏輯漏洞中的驗證碼安全問題,可以參考以下防御措施:(1)驗證碼的生成與校驗必須嚴格在服務端進行:驗證碼的核心邏輯,包括隨機生成、安全存儲和有效性驗證等過程必須完全由服務端控制,而客戶端應只負責驗證碼的展示和用戶輸入的采集。(2)建立完善的驗證碼生命周期管理體系:每個驗證碼必須遵循單次使用原則和具備明確的有效期限制,系統(tǒng)應在驗證碼被成功校驗后立即使其失效,并強制生成新的驗證碼。同時,應當為每個驗證碼設置合理的有效期限,超時后自動失效,以防止驗證碼被重復使用。(3)增加圖形驗證碼的復雜度:圖形驗證碼的生成應當采用高熵值的隨機算法,并綜合運用多層次的視覺處理技術,例如字符變形、動態(tài)干擾元素、隨機噪點、背景漸變等技術手段增加圖形驗證碼的復雜度。9.2驗證碼漏洞防御(4)實施多樣化的驗證碼策略:可以根據不同業(yè)務場景的安全需求,組合使用不同類型的驗證碼,例如圖形驗證碼、滑塊驗證碼、點選驗證碼、智能問答驗證碼、語音驗證碼等。在實際應用中,需要注意驗證碼安全性與可用性之間的權衡。過于復雜的驗證碼雖然提供了更高的安全性,但可能顯著降低用戶體驗,而過于簡單的驗證碼容易被自動化識別工具破解,無法達到預期的防護效果。因此,應當根據具體業(yè)務場景而采取適當的驗證碼策略,以達到平衡用戶體驗和系統(tǒng)安全性的目的。9.3密碼重置漏洞密碼重置是現代Web應用程序中不可或缺的功能,旨在幫助用戶在忘記密碼時找回密碼。在密碼重置漏洞中,攻擊者能夠繞過正常的身份驗證流程,非法重置其他用戶的密碼。一旦攻擊者成功利用此漏洞,則可能導致用戶賬戶被接管、用戶數據被篡改、敏感信息被竊取以及其他更嚴重的安全事件。密碼重置漏洞的成因復雜多樣,本節(jié)將通過具體場景詳細介紹其中的典型案例。1.重置憑證缺乏一致性驗證重置憑證缺乏一致性驗證是指系統(tǒng)在密碼重置流程中未能嚴格驗證重置憑證(例如短信驗證碼、郵箱校驗碼或郵箱鏈接)與待重置密碼的用戶賬戶的一致性。換言之,系統(tǒng)只驗證了重置憑證(例如短信驗證碼、郵箱校驗碼或郵箱鏈接)與接收終端(手機號或郵箱地址)的對應關系,卻未驗證接收終端是否屬于待重置密碼的用戶賬戶。例如,攻擊者在密碼重置流程中首先提交受害者的用戶名,隨后使用BurpSuite等工具攔截和修改請求數據包,將接收驗證碼的手機號替換為攻擊者自己的手機號,最終利用接收到的短信驗證碼完成對受害者賬戶的密碼重置。9.3密碼重置漏洞此處以Windows7靶機中的PHPCMS9.5.8版本為例,PHP版本選擇5.6.9,使用Chrome瀏覽器訪問“01/practice9/phpcms/index.php?m=member&c=index&a=public_forget_password&siteid=1”,該頁面展示了PHPCMS“通過用戶名找回密碼”功能,該功能包含三個步驟:用戶名確認、郵箱地址確認和重置密碼成功,如圖所示。注意:在進行測試前,需以管理員身份登錄系統(tǒng)后臺“01/practice9/phpcms/index.php?m=admin&c=index&a=login”以配置系統(tǒng)發(fā)送郵件的相關信息,管理員的用戶名/密碼為:phpcms/123456。9.3密碼重置漏洞首先,攻擊者注冊一個用戶名為“foo”的賬戶,并綁定攻擊者所控制的郵箱。如圖所示,攻擊者以foo用戶身份請求找回密碼,獲取的郵箱校驗碼為“hmd26mcc”。9.3密碼重置漏洞獲取郵箱校驗碼后,攻擊者返回“通過用戶名找回密碼”功能的第一步,輸入受害者bar的用戶名(假設bar用戶已存在)。在進入郵箱地址確認步驟后,攻擊者在“郵箱校驗碼”中輸入之前以foo用戶身份獲取的郵箱校驗碼“hmd26mcc”,此時頁面提示郵箱校驗碼輸入正確,如圖所示。9.3密碼重置漏洞最后,點擊“提交”按鈕即可成功重置bar用戶的密碼,如圖所示。在本例中,系統(tǒng)未將驗證碼接收郵箱與待重置密碼的用戶進行嚴格的一致性校驗,導致攻擊者可以利用foo用戶獲取的驗證碼重置bar用戶的密碼。9.3密碼重置漏洞2.越權導致的密碼重置在用戶成功登錄后,系統(tǒng)通常會提供修改密碼的功能。根據安全策略的不同,部分系統(tǒng)要求用戶提供原密碼進行二次身份驗證,而部分系統(tǒng)則未作此要求。越權導致的密碼重置主要出現在后一類系統(tǒng)中,其本質是一種越權漏洞。攻擊者使用BurpSuite等工具攔截并修改請求數據包中的用戶標識符(例如用戶ID),可能實現對系統(tǒng)中任意用戶密碼的重置。此處以Windows7靶機中的WeBug靶場為例,PHP版本選擇5.6.9,使用Chrome瀏覽器訪問“01/practice9/webug/control/login.php”,輸入用戶名/密碼(admin/admin)以登錄該靶場。9.3密碼重置漏洞登錄靶場后,在漏洞類型列表中進入“邏輯漏洞”選項卡,然后點擊標題為“越權修改密碼”的“打開靶場”按鈕,如圖所示。9.3密碼重置漏洞漏洞環(huán)境界面如圖所示,在該網站后臺管理系統(tǒng)中,登錄用戶無需驗證原密碼即可進行密碼修改。系統(tǒng)中存在兩個用戶:攻擊者控制的foo用戶(ID為2)和受害者控制的bar用戶(ID為3),假設攻擊者知曉系統(tǒng)中存在ID為3的用戶。9.3密碼重置漏洞攻擊者首先輸入foo用戶的用戶名/密碼(foo/foo)以登錄網站后臺管理系統(tǒng),登錄成功后頁面重定向到密碼修改界面,如圖所示。9.3密碼重置漏洞攻擊者在“新密碼”和“再次確認”文本框中輸入“123456”,并點擊“提交”按鈕。在提交修改請求時,攻擊者使用BurpSuite攔截請求數據包,將請求URL中的參數“id”從2(foo用戶的ID)修改為3(bar用戶的ID),然后發(fā)送修改后的請求數據包,響應結果如圖所示。9.3密碼重置漏洞系統(tǒng)未對密碼重置操作進行適當的權限驗證,導致bar用戶的密碼被重置為123456。攻擊者可以使用修改后的新密碼成功登錄bar用戶的賬戶,如圖所示。針對此類漏洞,系統(tǒng)應在密碼修改功能中強制要求用戶提供原密碼進行身份校驗,防止攻擊者通過越權操作修改他人密碼。此外,系統(tǒng)也可以考慮結合其他安全機制,例如雙因素認證、短信/郵件確認等,構建縱深防御體系,進一步提升密碼修改操作的安全性。9.3密碼重置漏洞3.密碼重置鏈接中的關鍵參數可被預測或遍歷向用戶的綁定郵箱發(fā)送密碼重置鏈接是一種常見的密碼重置方式,系統(tǒng)生成包含身份驗證參數的密碼重置鏈接并發(fā)送至用戶注冊郵箱,用戶通過訪問該鏈接即可跳轉至密碼重置頁面。然而,如果密碼重置鏈接中存在易被預測或遍歷的參數,攻擊者可能通過分析這些參數推導出密碼重置鏈接的生成規(guī)則,進而偽造有效的密碼重置鏈接。一旦攻擊者構造出有效的密碼重置鏈接,就能越過正常的密碼重置流程,實現對密碼的未授權重置,具體示例如下:攻擊者首先使用自己的賬戶獲取一個密碼重置鏈接樣本:/myprofile/reset-password?user=foo&token=acbd18db4cc2f85cedef654fccc4a4d8通過分析,攻擊者發(fā)現token參數值“acbd18db4cc2f85cedef654fccc4a4d8”實際上是用戶名“foo”的MD5值。據此,攻擊者推斷出系統(tǒng)生成密碼重置鏈接的算法模式為:/myprofile/reset-password?user=username&token=md5(username)9.3密碼重置漏洞掌握這一規(guī)律后,攻擊者可以針對任意用戶構造有效的密碼重置鏈接。攻擊者通過正常的密碼找回流程申請找回admin用戶的密碼(密碼重置鏈接會發(fā)送至admin用戶的注冊郵箱,攻擊者無法直接訪問該郵箱),然后攻擊者按照上述推斷構造以下密碼重置鏈接:/myprofile/reset-password?user=admin&token=21232f297a57a5a743894a0e4a801fc3其中token參數值“21232f297a57a5a743894a0e4a801fc3”是用戶名“admin”的MD5值。由于系統(tǒng)的驗證邏輯存在缺陷,訪問該密碼重置鏈接即可跳轉至admin用戶的密碼重置頁面,從而實現對admin用戶密碼的重置。一旦攻擊者獲取到系統(tǒng)用戶列表,就可以批量重置密碼。9.4密碼重置漏洞防御針對密碼重置漏洞,可以參考以下防御措施:(1)確保重置憑證的隨機性與復雜性:密碼重置鏈接中關鍵參數(例如token)的生成不應只依賴于用戶可知的信息(例如用戶名

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論