文件读取漏洞路径与防御总结
文件读取漏洞路径与防御总结
文件读取漏洞允许攻击者通过路径遍历等手段访问未授权的文件。以下是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
)。
- 监控异常文件访问行为(如频繁读取
通过理解这些路径和攻击方式,开发者可以更有效地加固系统,避免敏感信息泄露。