1. 程式人生 > 其它 >檔案下載及目錄遍歷

檔案下載及目錄遍歷

檔案下載 原理 檔案下載功能在很多web系統上都會出現,一般我們當點選下載連結,便會向後臺傳送一個下載請求,一般這個請求會包含一個需要下載的檔名稱,後臺在收到請求後 會開始執行下載程式碼,將該檔名對應的檔案response給瀏覽器,從而完成下載。 如果後臺在收到請求的檔名後,將其直接拼進下載檔案的路徑中而不對其進行安全判斷的話,則可能會引發不安全的檔案下載漏洞。此時如果 攻擊者提交的不是一個程式預期的的檔名,而是一個精心構造的路徑(比如../../../etc/passwd),則很有可能會直接將該指定的檔案下載下來。 從而導致後臺敏感資訊(密碼檔案、原始碼等)被下載。 防禦 在設計檔案下載功能時,如果下載的目標檔案是由前端傳進來的,則一定要對傳進來的檔案進行安全考慮。 切記:所有與前端互動的資料都是不安全的,不能掉以輕心
演示 1.開啟pikachu的Unsafe Filedownload,可以發現裡面的照片點名字就可以下載,檢查原始碼,找到圖片儲存的url execdownload.php?filename=kb.png 2.將filename改為自己想要獲取的檔案,如要下載本地的execdownload.php,儲存在WWW\pikachu\vul\unsafedownload\execdownload.php http://192.168.223.143/pikachu/vul/unsafedownload/execdownload.php?filename=../execdownload.php 目錄遍歷
原理 在web功能設計中,很多時候我們會要將需要訪問的檔案定義成變數,從而讓前端的功能便的更加靈活。 當用戶發起一個前端的請求時,便會將請求的這個檔案的值(比如檔名稱)傳遞到後臺,後臺再執行其對應的檔案。 在這個過程中,如果後臺沒有對前端傳進來的值進行嚴格的安全考慮,則攻擊者可能會通過“../”這樣的手段讓後臺開啟或者執行一些其他的檔案。 從而導致後臺伺服器上其他目錄的檔案結果被遍歷出來,形成目錄遍歷漏洞。 演示 ​1.進入../../的目錄遍歷例題,點開連結,出現文件,通過url判斷title指向檔案位置
2.檢視本地演示檔案的位置,通過../來跳轉到檔案的位置,獲取檔案內容 http://192.168.223.143/pikachu/vul/dir/dir_list.php?title=../../../../1.txt
PS:目錄遍歷是顯示檔案內容並輸出到頁面,也有可能出現亂碼的現象 總結 看到這裡,你可能會覺得目錄遍歷漏洞和不安全的檔案下載,甚至檔案包含漏洞有差不多的意思,是的,目錄遍歷漏洞形成的最主要的原因跟這兩者一樣,都是在功能設計中將要操作的檔案使用變數的方式傳遞給了後臺,而又沒有進行嚴格的安全考慮而造成的,只是出現的位置所展現的現象不一樣,一個是將檔案下載下來,另一個是將檔案內容顯示在頁面