目录遍历

1、漏洞简介


当web服务器目录浏览的功能被开启时,若客户端浏览器在请求未指定文档名称且web服务器无法返回默认文档时便会启用目录浏览,显示一个列出目录内容的网页,或者当网站的代码存在缺陷,导致可以获取到服务器目录内容、结构,进而影响网站的敏感信息,威胁系统安全。

2、漏洞成因及利用


该漏洞的成因主要包括两类:

  • web服务器的配置引起的目录遍历
  • 网站代码缺陷引起的目录遍历

IIS和Nginx默认不开启目录遍历的功能,而Apached默认开启了目录遍历的功能。

当web服务器目录遍历的功能被开启时,若客户端浏览器在请求未指定文档名称且web服务器无法返回默认文档时,便会启用目录浏览,显示一个列出目录内容的网页。

网站代码的缺陷也会引起目录遍历,常见的是一些开源的编辑器的页面未授权访问,以及一些限制被绕过。参见:PHP绕过open_basedir列目录的研究

因各种原因导致的目录遍历,将对系统安全形成巨大的威胁。其将造成网站上非可执行文件的泄露,进而可能导致网站的数据库连接信息等泄露。

3、实际案例

4、漏洞修复


网站代码缺陷引起的目录遍历

对网站代码进行更新,升级。

web服务器配置引起的目录遍历

Apached禁止目录浏览:

配置httpd.conf

将Options Indexes FollowSymLinks改为Options -Indexes FollowSymLinks

Nginx禁止目录浏览:

配置nginx.conf,找到WebServer配置处,删除类似内容:

location /soft/ {
root /var/www/;  此处为soft的上一级目录
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

保存退出,重启nginx服务即可。

[root@localhost Soft]#ps aux | grep -v grep | grep nginx | awk ‘{print $2}’ | xargs kill -9    #结束进程
[root@localhost Soft]#nginx  #启动进程

IIS禁止列目录

appcmd set config /section:directoryBrowse /enabled:false

5、相关资源