天天看點

檔案下載下傳檔案讀取

一些網站提供檔案檢視或檔案下載下傳功能,若對使用者檢視或下載下傳的檔案不做限制,則惡意使用者就能夠檢視或下載下傳任意敏感檔案,這就造成了檔案檢視與下載下傳漏洞。

任意檔案讀取是屬于檔案操作漏洞的一種,一般任意檔案讀取漏洞可以讀取配置資訊甚至系統重要檔案。嚴重的話,就可能導緻ssrf,進而漫遊至内網。

有存讀取檔案的函數

讀取檔案的路徑使用者可控,且未校驗或校驗不嚴

輸出了檔案内容

file_get_contents()

使用file_get_contents()函數能在編譯器編譯後能顯示出檔案源代碼,而在浏覽器中打開時不能顯示源代碼。

readfile()

使用readfile()函數能在編譯器編譯後能顯示出檔案源代碼,而在浏覽器中打開時不能顯示源代碼。

highlight_file()

使用highlight()函數能在編譯器編譯後能顯示出檔案源代碼,并且在浏覽器中打開時也能顯示源代碼。

fopen()

對檔案進行資料存取的第一步操作就是要打開檔案。在php中使用fopen()函數打開檔案,fopen()函數的文法為:

filename:必選。打開包含路徑的檔案名,路徑可是相對路徑,也可是絕對路徑。無字首則表示打開的是本地檔案。 mode:必選。打開檔案的方式(檔案/流的通路類型)。

include_path:可選。該參數在配置檔案php.ini中指定一個路徑,若需要在 include_path 中檢索檔案的話,可以将該參數設為 1 或 true。

context:檔案句柄的環境。

mode參數的可取值:

使用執行個體:

對檔案的操作結束後記得要關閉該檔案,以免引起錯誤。關閉檔案可用fclose()函數。

有讀取檔案的函數

讀取檔案的路徑使用者可控,且沒有經過校驗,或者校驗不嚴格

輸出檔案内容

網站存在下載下傳檔案的功能,還會從浏覽器接收檔案名字

直接下載下傳:

增加header頭

資訊收集資訊、猜路徑、下載下傳配置檔案/代碼檔案、利用伺服器軟體漏洞、shell、提權

首先收集系統資訊,包括系統版本,中間件,cms版本,伺服器用途,伺服器使用者資訊,端口,web路徑等,然後根據收集到的資訊,下載下傳配置檔案,如weblogic,ftp,ssh、mysql等, 根據下載下傳到的配置檔案進行滲透。

從連結上看,形如:

從參數名看,形如:

界面顯示

檔案下載下傳檔案讀取

點選任意圖檔,出現下載下傳,檢視下載下傳位址:

嘗試下載下傳execdownload.php檔案,

檔案下載下傳檔案讀取

報錯,說明可能路勁不對,../上一級測試

可下載下傳

檔案下載下傳檔案讀取

打開檢視源碼

檔案下載下傳檔案讀取

預設圖檔存放在download目錄下

嘗試下載下傳敏感檔案

通過目錄掃描得到配置檔案config.inc.php

檔案下載下傳檔案讀取

pikachu/vul/unsafedownload/download/xxx.xxx

與vul相差3個父目錄,是以加3個…/

完整url:

檔案下載下傳檔案讀取

可得到資料庫使用者名及密碼

檔案下載下傳檔案讀取
檔案下載下傳檔案讀取
檔案下載下傳檔案讀取

點選help,出現一串字元

檔案下載下傳檔案讀取

是檔案無法找到的異常資訊。

通過觀察url,猜測是檔案下載下傳

此題是javaweb,可以聯想到web-inf/web.xml洩露問題。

web-inf是java的web應用的安全目錄。如果想在頁面中直接通路其中的檔案,必須通過web.xml檔案對要通路的檔案進行相應映射才能通路。web-inf主要包含一下檔案或目錄:

/web-inf/web.xml:web應用程式配置檔案,描述了 servlet 和其他的應用元件配置及命名規則。

/web-inf/classes/:含了站點所有用的 class 檔案,包括 servlet class 和非servlet class,他們不能包含在 .jar檔案中

/web-inf/lib/:存放web應用需要的各種jar檔案,放置僅在這個應用中要求使用的jar檔案,如資料庫驅動jar檔案

/web-inf/src/:源碼目錄,按照包名結構放置各個java檔案。

/web-inf/database.properties:資料庫配置檔案

找一下web-inf/web.xml,post傳值

檔案下載下傳檔案讀取

下載下傳檢視檔案

找到flag資訊

檔案下載下傳檔案讀取

servlet-class裡面的.代表的是路徑/

然後下載下傳flagcontroller.class

檔案下載下傳檔案讀取

發現一串base64,解碼

檔案下載下傳檔案讀取

得到flag。