Web安全與防護 (微課版) 課件 項目七 安全的文件包含_第1頁
Web安全與防護 (微課版) 課件 項目七 安全的文件包含_第2頁
Web安全與防護 (微課版) 課件 項目七 安全的文件包含_第3頁
Web安全與防護 (微課版) 課件 項目七 安全的文件包含_第4頁
Web安全與防護 (微課版) 課件 項目七 安全的文件包含_第5頁
已閱讀5頁,還剩57頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目七

安全的文件包含Web安全與防護本任務要點學習目標了解什么是文件包含構造簡單的文件包含分析文件包含的原理學習文件包含的原理和構造寫出簡單的文件包含任務一

構造簡單的文件包含目錄CONTENTS01/什么是文件包含02/簡單的文件包含03/文件包含的流程什么是文件包含01什么是文件包含?文件包含是指在一個程序文件中通過某種方式引入另一個文件的內容。在PHP中,文件包含是一種重要的特性,可以將多個腳本文件組合起來,以實現更大型、更復雜的應用程序。文件包含可以用于許多目的,比如:(1)代碼重用:可以將一些通用的代碼(如配置信息、函數庫等)封裝到一個文件中,并在其他腳本文件中進行包含,以達到代碼重用的效果,減少代碼冗余。(2)模塊化編程:可以將一個應用程序分解成多個模塊,每個模塊獨立編寫,然后通過文件包含將這些模塊組合成一個完整的程序。(3)代碼調試:可以將程序中的一些代碼段放到一個單獨的文件中,以便進行調試或測試。在PHP中,常見的文件包含方式有兩種:include和require。它們的作用是相同的,都可以將一個文件包含到另一個文件中。區別在于當被包含的文件不存在或出錯時,include會產生一個警告,并繼續執行程序;而require會產生一個致命錯誤,停止程序的執行。什么是文件包含01簡單的文件包含02在PHP中,可以使用include或require語句來實現文件包含。下面是一個簡單的示例,演示如何使用include或require函數在一個PHP腳本中引用其他PHP文件的內容:假設我們有一個名為"study_upload17.php"的文件,包含了一些HTML代碼和PHP代碼demonstration/study_upload17.php簡單的文件包含02現在,我們可以在另一個PHP文件中使用以下代碼來引用該文件:在上面的代碼中,我們使用include語句將"study_upload17.php"文件包含到我們的腳本中。這將在當前文件中插入"study_upload17.php"文件中的HTML代碼。之后我們可以在當前文件中添加其他HTML代碼和PHP代碼,最后輸出HTML頁面的結束標記。文件包含的流程03文件包含是指使用PHP的include或require函數來引入其他的文件,從而實現代碼的復用和模塊化。PHP解析器遇到include或require函數時,會根據參數指定的文件路徑,打開并讀取文件內容,將文件內容作為PHP代碼進行解析和執行,如果文件內容不是PHP代碼,會原樣輸出,直到遇到下一個include或require函數或者結束符。假設有一個網站的URL是這樣的:/index.php?page=home,其中page參數是用來包含不同的頁面文件的,例如home.php,about.php等。那么文件包含的具體流程是:(1)PHP解析器接收到用戶的請求,打開index.php文件(示例代碼路徑為:/demonstration/index.php)。文件包含的流程03(2)PHP解析器遇到include函數,根據page參數指定的文件路徑,打開并讀取home.php文件內容。(2)PHP解析器將home.php文件內容作為PHP代碼進行解析和執行,如果文件內容不是PHP代碼,會原樣輸出,那么當用戶訪問/index.php?page=home時,輸出結果如下:這樣就實現了文件包含的功能,可以讓index.php文件根據用戶的選擇,動態地顯示不同的頁面內容。課堂實踐一、任務名稱:文件包含功能實現二、任務內容:同PHP代碼進行實現文件上傳功能。三、工具需求:PHP開發環境四、任務要求:完成實踐練習后,由老師檢查完成情況。課堂思考一、文件包含功能的常見用途是什么?它在Web應用中如何被實現?二、在文件包含的過程中,哪些因素需要特別注意,以確保系統的穩健性和安全性?三、文件包含在Web應用架構設計中的作用是什么?有哪些替代方式可以實現相似的功能?課后拓展:文件包含漏洞的分析請同學們通過互聯網查找一個具體的案例,分析文件包含功能在實際應用中的典型場景及其影響。描述該功能是如何被實現和應用的,并探討它在項目中的作用和優勢。THANK

YOUToBeContinued項目七

安全的文件包含Web安全與防護本任務要點學習目標學習文件包含漏洞的基本原理分析文件包含漏洞的產生原因理解文件包含漏洞的原理及其表現形式。掌握文件包含漏洞的常見攻擊方式。提高識別和防范文件包含漏洞的能力。任務二

文件包含漏洞原理目錄CONTENTS01/什么是文件包含漏洞02/文件包含漏洞類型什么是文件包含漏洞01什么是文件包含漏洞文件包含漏洞(FileInclusionVulnerability)是指在Web應用程序中,當應用程序將用戶提供的輸入作為文件名或路徑名的一部分時,攻擊者可以構造惡意輸入,通過利用文件包含漏洞,執行未經授權的代碼。如果攻擊者成功利用此漏洞,可以讀取、寫入、刪除、修改、執行任意文件,包括敏感系統文件、配置文件等,進而實現對目標系統的完全控制。可以把文件包含漏洞想象成一個烤箱,你可以用它來烤出美味的蛋糕,面包,或者披薩。如果有人把烤箱里的東西換成了一只老鼠,或者一塊肥皂,那么你就會遇到麻煩,你可能會嚇一跳,或者吐一口泡沫。這就是文件包含漏洞的原理,當服務器使用一個用戶可以控制的變量來包含一個文件,并執行它時,就可能導致任意代碼執行或敏感信息泄露。什么是文件包含漏洞01攻擊者思路上傳含有惡意代碼的文件獲取文件所在的物理地址成功執行惡意代碼攻擊者受害者Web服務器/test/?page=file://D:/phpstudy/WWW/webshell.txt文件包含漏洞的類型02例如應用程序中的代碼包含以下語句:

文件包含漏洞的是網站中使用了不安全的文件包含函數,攻擊者可以通過構造惡意的文件路徑或參數,將攻擊者所控制的文件加載到應用程序中,從而實現攻擊的目的。

具體來說,當應用程序中的文件包含函數(如include()、require()等)調用時,會將指定的文件內容加載到當前執行的腳本中,進行代碼復用、模塊化等功能。如果在使用文件包含函數時未能正確過濾用戶輸入的文件名或路徑,攻擊者可以通過構造惡意的文件名或路徑,將攻擊者所控制的文件加載到應用程序中。攻擊者可以通過向URL中傳遞如下參數,實現LFI攻擊:這樣,攻擊者就可以通過文件包含漏洞,將服務器上的敏感文件(如/etc/passwd文件)加載到應用程序中,從而實現攻擊目的。同時文件包含漏洞可以分為兩種類型:本地文件包含(LocalFileInclusion,LFI)和遠程文件包含(RemoteFileInclusion,RFI)。文件包含漏洞的類型021)本地文件包含(LFI):本地文件包含漏洞指的是攻擊者通過構造惡意的文件路徑,將服務器上的敏感文件(如配置文件、密碼文件等)加載到應用程序中,從而實現攻擊的一種漏洞。攻擊者通常通過向應用程序傳遞如“../”、“../../../”等特殊字符來構造惡意的文件路徑。2)遠程文件包含(RFI):遠程文件包含漏洞指的是攻擊者通過構造惡意的URL,將攻擊者所控制的遠程文件加載到應用程序中,從而實現攻擊的一種漏洞。攻擊者通常將惡意腳本上傳到自己的服務器上,并通過構造惡意的URL,將惡意腳本加載到受害者的應用程序中。/test.php?mod=phpinfo.php讀入同一目錄下的文件并執行test.phpwwwphpinfo.php$modname=$_GET[‘mod’];include($modname);課堂實踐一、任務名稱:文件包含漏洞的實現二、任務內容:同PHP代碼進行實現文件包含漏洞。三、工具需求:PHP開發環境四、任務要求:完成實踐練習后,由老師檢查完成情況。課堂思考一、文件包含漏洞的成因是什么?二、文件包含漏洞有哪些不同的類型,并且每種類型有什么特點?三、如何檢測Web應用程序中的文件包含漏洞?課后拓展:文件包含漏洞的構造請各位同學們自己構造一個文件包含漏洞,然后在下節課對自己的漏洞進行講解和說明。THANK

YOUToBeContinued項目七

安全的文件包含Web安全與防護本任務要點學習目標在博客系統中找到文件包含漏洞驗證博客系統中的文件包含漏洞學會驗證文件上傳漏洞。掌握文件上傳漏洞。任務三

文件包含漏洞檢測與驗證目錄CONTENTS01/文件包含漏洞驗證流程02/文件包含漏洞檢測與驗證文件包含漏洞驗證流程01文件包含漏洞驗證流程01利用之前搭建的個人博客,在此之前我們已經成功的通過文件上傳漏洞將帶有phpinfo信息的圖片成功上傳到了博客中。文件包含漏洞檢測與驗證02對于文件包含漏洞的檢測驗證,我們需要使用kali自帶的錄爆破Dirbuster工具,該工具是一種用于探測web服務器上的目錄和隱藏文件的工具。它支持多種掃描方式,如網頁爬蟲、基于字典的暴力破解和純暴力破解,使用Java語言編寫,提供命令行和圖形界面兩種模式。什么是DirBuster?DirBuster是一個多線程的基于Java的應用程序設計蠻力Web/應用服務器上的目錄和文件名。DirBuster是Owasp(OpenWebApplicationSecurityProject)開發的一款專門用于探測網站目錄和文件(包括隱藏文件)的工具。由于使用Java編寫,電腦中要裝有JDK才能運行。文件包含漏洞檢測與驗證021)首先通過終端輸入dirbuster啟動程序。程序第一行輸入需要掃描的網站地址,目標ip地址或域名,默認80端口,特殊端口需要加到后面。文件包含漏洞檢測與驗證022)接下來選擇對網站的請求方式用get方式或者HEAD加GET自動切換,同時也可以根據電腦的性能考慮選擇GoFaster使用200線程完成更快的完成請求,一般用于執行暴力破解。文件包含漏洞檢測與驗證023)選擇字典的類型,kali內置有大量的字典目錄,位于在/usr/share/wordlists/路徑。我們也可以使用生成的字典來進行暴力破解文件包含漏洞檢測與驗證024)掃描方法和類型的選擇,可以選擇開始路徑以及目錄、遞歸、文件、延伸等拓展選項。文件包含漏洞檢測與驗證025)做好上述準備后,就可以等待掃描完成。我們可以在此過程中查看當前網站是否有一些開發人員無意間留下的配置文件信息。文件包含漏洞檢測與驗證02在網站的目錄結構中我們可以看到include.php,include語句用于在執行流中插入寫在其他文件中的有用的代碼。訪問include.php我們可以看到能夠利用的文件包含漏洞。文件包含漏洞檢測與驗證02過向URL中傳遞如下參數,加載之前制作的圖片木馬實現攻擊:當看到phpinfo信息的時候,就代表著我們已經成功的執行了圖片木馬,獲取了網站的控制權限了。:2333/book/admin/include.php?file=../assets/img/a36d38fe771a00959ded40985182827d.jpg課堂實踐一、任務名稱:針對博客系統的文件包含漏洞進行驗證二、任務內容:部署整個博客系統,再針對博客系統的文件包含漏洞進行入侵驗證。三、工具需求:PHP開發環境四、任務要求:完成實踐練習后,由老師檢查完成情況。課堂思考一、如何去快速驗證一個文件包含漏洞?二、還有那些可以探測文件包含漏洞的工具?三、本地文件包含漏洞和遠程文件包含漏洞的區別?課后拓展:文件包含漏洞的案例請各位同學通過網絡搜索一個真實的文件包含漏洞案例,分析該案例中文件包含漏洞是如何被利用的,攻擊者通過哪些手段繞過了原有的安全措施,以及該漏洞對受影響系統造成了哪些具體影響。THANK

YOUToBeContinued項目七

安全的文件包含Web安全與防護本任務要點學習目標修復在博客系統中找到文件包含漏洞防范文件包含漏洞學會針對文件包含漏洞的修復防范文件包含漏洞任務四

文件包含漏洞修復與防范目錄CONTENTS01/文件包含漏洞修復與防范文件包含漏洞修復與防范01當我們掌握如何利用漏洞后,我們也需要學會如何去修補漏洞防止被黑客利用和入侵,我們查看源代碼可以發現,雖然對文件做了各種信息的檢查和限制,但是并沒有對文件的內容進行檢測,我們可以將圖片進行二次的壓縮和解析,同時也可以對文件的數據進行檢測探查是否有代碼的關鍵字。針對博客的漏洞我們可以采用:(1)PHP配置php.ini關閉遠程文件包含功能(allow.urljnclude=Off),這是為了防止攻擊者利用PHP的文件包含函數來加載遠程服務器上的惡意文件。(2)嚴格檢查變量是否已經初始化,避免使用未定義或空值的變量作為文件包含函數的參數,例如include($file),如果$file沒有被賦值或者為空,那么就可能被攻擊者控制。文件包含漏洞修復與防范01(3)建議假定所有輸入都是可疑的,嘗試對所有輸入提交可能可能包含的文件地址,包括服務器本地文件及遠程文件,進行嚴格的檢查,參數中不允許出現.../之類的目錄跳轉符。文件包含漏洞修復與防范01(4)假定所有輸入都是可疑的,嘗試對所有輸入提交可能可能包含的文件地址,包括服務器本地文件及遠程文件,進行嚴格的檢查,參數中不允許出現.../之類的目錄跳轉符:這是為了防止攻擊者利用目錄跳轉符來訪問服務器上敏感的目錄和文件,例如include(.../.../etc/passwd)。文件包含漏洞修復與防范01(5)嚴格檢查include類的文件包含函數中的參數是否外界可控:這是為了防止攻擊者通過修改URL或者表單等方式來傳遞惡意的參數給文件包含函數,例如include($_GET[‘file

溫馨提示

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

評論

0/150

提交評論