原文連結:https://cloud.tencent.com/developer/article/1597942
原理
沒有對讀取下載的檔案做限制
漏洞利用方式
由於我們不知道敏感檔案的路徑,我們可以利用../../(返回上次目錄)依次猜解,讓漏洞利用變的猥瑣。
例如
漏洞的危害: 透過任意檔案下載,可以下載伺服器的任意檔案,web業務的程式碼,伺服器和系統的具體配置資訊,也可以下載資料庫的配置資訊,以及對內網的資訊探測等等。 總體來說,任意檔案下載漏洞的利用主要是為了資訊收集,我們透過對伺服器配置檔案的下載,獲取到大量的配置資訊、原始碼,從而根據獲取的資訊來進一步挖掘伺服器漏洞從而入侵。以下整理了一些下載利用檔案:
Windows: C:\boot.ini //檢視系統版本 C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置檔案 C:\Windows\repair\sam //儲存系統初次安裝的密碼 C:\Program Files\mysql\my.ini //Mysql配置 C:\Program Files\mysql\data\mysql\user.MYD //Mysql root C:\Windows\php.ini //php配置資訊 C:\Windows\my.ini //Mysql配置資訊 C:\Windows\win.ini //Windows系統的一個基本系統配置檔案 Linux: /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限定檔案訪問範圍