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