任意檔案讀取與下載的原理及修復

yinghualeihenmei發表於2024-08-17

原文連結: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限定檔案訪問範圍

相關文章