任意文件下载
目錄
一. 漏洞描述
二. 漏洞挖掘
三. pikachu靶場
四. 漏洞原因
五. 漏洞修復
六. 任意文件下載和文件包含漏洞的區別
一. 漏洞描述
? ? ? ? 文件下載功能在很多web系統上都會出現,一般當我們點擊下載鏈接,便會向后臺發送一個下載請求,一般這個請求會包含一個需要下載的文件名稱,后臺在收到請求后 會開始執行下載代碼,將該文件名對應的文件response給瀏覽器,從而完成下載。 如果后臺在收到請求的文件名后,將其直接拼進下載文件的路徑中而不對其進行安全判斷的話,則可能會引發不安全的文件下載漏洞。
? ? ? ?此時如果攻擊者提交的不是一個程序預期的的文件名,而是一個精心構造的路徑(比如../../../etc/passwd),則很有可能會直接將該指定的文件下載下來。 從而導致后臺敏感信息(密碼文件、源代碼等)被下載。
二. 漏洞挖掘
? ? ??找到文件下載的地方,通過路徑遍歷的方式嘗試是否可以下載其他文件。
三. pikachu靶場
? ? ? ?以皮卡丘漏洞靶場中的任意文件下載為例,點擊圖片下面的鏈接就會自行進行下載圖片,我們右擊在新的標簽中打開鏈接
? ? ? ? 既然可以下載圖片,那我們是不是可以修改這里的文件名,來下載其他的文件呢。我們通過路徑遍歷的方式下載數據庫配置文件。文件被下載下來了,所以我們可以通過路徑遍歷的方式繼續下載其他的配置文件。
如在linux下我們可以嘗試下載/etc/passwd文件
四. 漏洞原因
- 存在讀文件的函數
- 讀取文件的路徑用戶可控且未校驗或校驗不嚴格
如我們查看pikachu任意文件下載的源碼,后端接收用戶傳過來的下載的文件名沒有做任何的過濾直接拼接到路徑中。導致了任意文件下載漏洞的發生。
五. 漏洞修復
1.過濾(../)使用戶在url中不能回溯上級目錄
2.配置不能訪問WEB根目錄之外的項目
3.對可以訪問的文件放在一個資源文件夾下
六. 任意文件下載和文件包含漏洞的區別
1. 他們擁有相似之處,通過路徑遍歷的方式都能夠獲取任意文件。
2. 文件包含有一個很強大的功能,就是能無視文件擴展名讀取文件(如直接以二進制方式打開圖片)以及無條件解析PHP代碼(如直接執行圖片木馬中的php代碼,直接讀取txt中的php文件并執行),而任意文件下載做不到。傳送門 ->?文件包含漏洞
——心,若沒有棲息的地方,到哪都是流浪
總結
- 上一篇: php读取excel 报错_php读取e
- 下一篇: 图示离散函数周期