文件讀取漏洞路徑與防御總結
文件讀取漏洞允許攻擊者通過路徑遍歷等手段訪問未授權的文件。以下是Linux和Windows系統中常見敏感路徑的歸納及防御建議:
Linux 系統常見敏感路徑
-
系統關鍵文件:
/etc/passwd
:用戶賬戶信息(可被用來枚舉用戶)。/etc/shadow
:用戶密碼哈希(需root權限)。/etc/group
:用戶組信息。/etc/hosts
:網絡主機配置。/etc/sudoers
:sudo權限配置。
-
敏感配置文件:
- Web應用配置:
/etc/apache2/apache2.conf
、/etc/nginx/nginx.conf
。 - 數據庫配置:
/etc/mysql/my.cnf
、/var/lib/mysql
(數據文件)。 - SSH密鑰:
~/.ssh/id_rsa
(私鑰)、~/.ssh/known_hosts
。 - 環境變量文件:
~/.bashrc
、~/.profile
、/proc/self/environ
(進程環境變量)。
- Web應用配置:
-
日志文件:
- 系統日志:
/var/log/auth.log
(認證日志)、/var/log/syslog
。 - Web日志:
/var/log/apache2/access.log
、/var/log/nginx/access.log
。
- 系統日志:
-
進程與內存:
/proc/self/cmdline
:當前進程的命令行參數。/proc/self/maps
:進程內存映射。/proc/self/fd/
:進程打開的文件描述符。
-
用戶數據與歷史:
- Shell歷史:
~/.bash_history
、~/.zsh_history
。 - 臨時文件:
/tmp
目錄下的敏感臨時文件。
- Shell歷史:
-
特殊設備與虛擬文件:
/dev/null
、/dev/zero
(通常無害,但可能用于測試)。/sys/class/net/
(網絡接口信息)。
Windows 系統常見敏感路徑
-
系統關鍵文件:
C:\Windows\System32\drivers\etc\hosts
:網絡主機配置。C:\Windows\win.ini
、C:\Windows\system.ini
:遺留系統配置。- SAM數據庫(需卷影副本):
C:\Windows\System32\config\SAM
(通常被鎖定)。 - 注冊表文件:
C:\Windows\System32\config\SYSTEM
、SOFTWARE
、SECURITY
。
-
用戶數據與配置文件:
- 用戶目錄:
C:\Users\<用戶名>\Documents
、Desktop
、Downloads
。 - Web應用配置:
C:\inetpub\wwwroot\web.config
(IIS)、appsettings.json
。 - SSH密鑰:
C:\Users\<用戶名>\.ssh\id_rsa
。
- 用戶目錄:
-
日志文件:
- IIS日志:
C:\inetpub\logs\LogFiles\W3SVC1
。 - 系統事件日志:
C:\Windows\System32\winevt\Logs\Security.evtx
。
- IIS日志:
-
服務與數據庫文件:
- SQL Server數據文件:
C:\Program Files\Microsoft SQL Server\MSSQL\DATA\*.mdf
。 - 第三方應用配置:如
C:\xampp\php\php.ini
。
- SQL Server數據文件:
-
特殊路徑與UNC路徑:
- 短文件名:利用
C:\Progra~1\
繞過路徑過濾。 - 長路徑語法:
\\?\C:\Windows\...
。 - 網絡共享:
\\127.0.0.1\C$\Windows\...
(需權限)。
- 短文件名:利用
-
備份與臨時文件:
- 備份文件:
*.bak
、*.old
、*.tmp
。 - 頁面文件:
C:\pagefile.sys
(需系統權限)。
- 備份文件:
常見利用手法
- 路徑遍歷:使用
../
(Linux)或..\
(Windows)跳出限制目錄。 - 編碼繞過:URL編碼(如
%2e%2e%2f
)、UTF-8編碼、雙寫(....//
)。 - 絕對路徑讀取:直接指定完整路徑(如
C:\Windows\system32\cmd.exe
)。
防御建議
-
輸入過濾:
- 規范化路徑后檢查是否在允許范圍內。
- 過濾
../
、..\
、空字節(%00
)等字符。
-
最小權限原則:
- 應用程序以低權限用戶運行(如Linux的
www-data
,Windows的IUSR
)。 - 使用沙盒或容器隔離敏感操作。
- 應用程序以低權限用戶運行(如Linux的
-
安全API:
- 使用語言內置的安全路徑解析函數(如Python的
os.path.realpath
)。
- 使用語言內置的安全路徑解析函數(如Python的
-
文件系統權限:
- 限制敏感文件的讀權限(如
chmod 600 /etc/shadow
)。
- 限制敏感文件的讀權限(如
-
日志監控:
- 監控異常文件訪問行為(如頻繁讀取
/etc/passwd
)。
- 監控異常文件訪問行為(如頻繁讀取
通過理解這些路徑和攻擊方式,開發者可以更有效地加固系統,避免敏感信息泄露。