任意文件下載


任意文件下載

 

一、漏洞介紹

一些網站由於業務需求,往往需要提供文件查看或文件下載功能,但若對用戶查看或下載的文件不做限制,則惡意用戶就能夠查看或下載任意敏感文件,這就是文件查看與下載漏洞。


二、利用方式

一般鏈接形式:
download.php?path=
down.php?file=
data.php?file=
download.php?filename=

或者包含參數:
&Src=
&Inputfile=
&Filepath=
&Path=
&Data=

當遇到一個任意文件下載時,我們的一般利用思路:

(1)下載常規的配置文件,例如: ssh,weblogic,ftp,mysql等相關配置

(2)下載各種.log文件,從中尋找一些后台地址,文件上傳點之類的地方,如果運氣好的話會獲得一些前輩們的后門。

(3)下載web業務文件進行白盒審計,利用漏洞進一步攻入服務器。
嘗試讀取/root/.bash_history看自己是否具有root權限。如果沒有的話。我們只能按部就班的利用../來回跳轉讀取一些.ssh下的配置信息文件,讀取mysql下的.bash_history文件。來查看是否記錄了一些可以利用的相關信息。然后逐個下載我們需要審計的代碼文件,但是下載的時候變得很繁瑣,我們只能嘗試去猜解目錄,然后下載一些中間件的記錄日志進行分析。

如果我們遇到的是java+oracle環境

可以先下載/WEB-INF/classes/applicationContext.xml 文件,這里面記載的是web服務器的相應配置,然后下載/WEB-INF/classes/xxx/xxx/ccc.class對文件進行反編譯,然后搜索文件中的upload關鍵字看是否存在一些api接口,如果存在的話我們可以本地構造上傳頁面用api接口將我們的文件傳輸進服務器

如果具有root權限

在linux中有這樣一個命令 locate 是用來查找文件或目錄的,它不搜索具體目錄,而是搜索一個數據庫/var/lib/mlocate/mlocate.db。這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,並且每天自動更新一次。當我們不知道路徑是什么的情況下,這個可以說是一個核武器了,我們利用任意文件下載漏洞mlocate.db文件下載下來,利用locate命令將數據輸出成文件,這里面包含了全部的文件路徑信息。

locate 讀取方法: locate mlocate.db admin //可以將mlocate.db中包含admin文件名的內容全部輸出來

(4)常見利用文件
/root/.ssh/authorized_keys
/root/.ssh/id_rsa
/root/.ssh/id_ras.keystore
/root/.ssh/known_hosts //記錄每個訪問計算機用戶的公鑰
/etc/passwd
/etc/shadow
/etc/my.cnf //mysql配置文件
/etc/httpd/conf/httpd.conf //apache配置文件
/root/.bash_history //用戶歷史命令記錄文件
/root/.mysql_history //mysql歷史命令記錄文件
/proc/mounts //記錄系統掛載設備
/porc/config.gz //內核配置文件
/var/lib/mlocate/mlocate.db //全文件路徑
/porc/self/cmdline //當前進程的cmdline參數


三、漏洞修復
(1)過濾".",使用戶在url中不能回溯上級目錄

(2)正則嚴格判斷用戶輸入參數的格式

(3)php.ini配置open_basedir限定文件訪問范圍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM