Web目录遍历
目录遍历(也称为文件路径遍历)是一个 Web 安全漏洞,允许攻击者读取运行应用程序的服务器上的任意文件。这可能包括应用程序代码和数据、后端系统的凭据以及敏感的操作系统文件。在某些情况下,攻击者可能能够写入服务器上的任意文件,从而允许他们修改应用程序数据或行为,并最终完全控制服务器。
看个例子
URL1 http://192.168.1.115:8099/js/
![image-20230411130151716](https://i-blog.csdnimg.cn/blog_migrate/a341dce2d495d12b10a402f1901805f9.png)
URL2: http://192.168.1.115:8099/js/video/
![image-20230411125937248](https://i-blog.csdnimg.cn/blog_migrate/39c75f6d23e7d09f003061a25946bee6.png)
URL3: http://192.168.1.115:8099/js/video/…/storageMamager
![image-20230411130422173](https://i-blog.csdnimg.cn/blog_migrate/0a26a62076ef657051dbe9a5d0b4066e.png)
常见系统文件路径
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配置信息
Linux
/etc/passwd #查看用户文件
/etc/shadow #查看密码文件,如果能读取该文件说明是root权限
/etc/httpd/conf/httpd.conf #查看apache的配置文件
/root/.bash_history #查看历史命令
/var/lib/mlocate/mlocate.db #本地所有文件信息
/etc/ssh/sshd_config #ssh配置文件,如果对外开放可看到端口
/proc/self/fd/fd[0-9]*(文件标识符)
/proc/mounts
/root/.ssh/known_hosts
如何防御目录遍历攻击
- 确保web服务器软件版本最新,并且已经安装所有补丁
- 有效过滤任何用户输入,防范参数中的转义字符,通过utf8编码后只要发现参数包含可能引发目录遍历攻击的非法字符,直接拒绝请求,如果合法再将用户输入提交到服务器。
- 确保权限控制到位,谨慎处理传向文件系统API的参数【与第二点差不多】
- 对文件类型进行白名单控制【只允许请求html文件、css文件、js文件等这些】,对包含恶意字符或者空字符的参数进行拒绝。【windows现在已知的文件名非法字符有 \ / : * ? " < > | 】【 linux文件名非法字符 "/ " 】
- 当然,如有需要,使用全面的web漏洞扫描,把网站安全可能涉及的各种漏洞都进行检查。
总结为一句话:不要信任任何用户的任何输入。对任何输入都要规范化检查与处理