# 1.2 目录遍历漏洞

## 漏洞描述

目录遍历漏洞在国内外有许多不同的叫法，也可以叫做信息泄露漏洞、非授权文件包含漏洞等。目录遍历是针对Windows IIS和Apache的一种常见攻击方法，它可能让攻击者访问受限制的目录，通过执行cmd.exe /c命令来提取目录信息，或者在Web服务器的根目录以外执行命令。

![](http://ww1.sinaimg.cn/large/007F8GgBly1g1e861i8vbj30i30cjact.jpg)

目录遍历漏洞可能存在于Web服务器软件本身，也可能存在于Web应用程序之中。目录遍历攻击比较容易掌握，要执行一个目录遍历攻击，攻击者所需要的只是一个web浏览器，并且掌握一些关于系统的缺省文件和目录所存在的位置的知识即可。

## 漏洞等级

中危

## 漏洞危害

可以使攻击者任意读取、下载、查看服务器的文件

## 漏洞检测方法

手工检测

## 漏洞攻击方式

直接访问想要访问的文件

![](http://ww1.sinaimg.cn/large/007F8GgBly1g1e8amjyq6j30rb0nsq4d.jpg)

## 漏洞修复方案

1、系统开发阶段的防御 在系统开发阶段应充分考虑系统的安全性，对目录遍历漏洞来说，需对用户提交的内容进行严格的过滤，这里主要指过滤目录跳转符，字符截断符，dir命令等。

2、系统运行阶段的防御 系统运维人员需有强烈的安全意识，他们的一举一动都会影响用户的个人隐私信息安全。对系统运维人员来说，部署新的业务系统或者安装新的软件或应用后应通过web扫描工具积极查找系统是否存在目录遍历漏洞，尽可能不要在服务器上安装与业务不相关的第三方软件以避免引入目录遍历漏洞。除此之外，还应该合理配置web服务器（禁止目录浏览，分配好目录权限等）并积极关注所使用的各种软件和应用的版本发布情况，及时升级新的软件版本。

不同web服务器禁止目录浏览方法有所不同。对IIS而言，如果不需要可执行的CGI，可以删除可执行虚拟目录或直接关闭目录浏览；如果确实需要可执行的虚拟目录，建议将可执行的虚拟目录单独放在一个分区。

对于Apache而言，管理员需要修改配置文件，禁止浏览列出目录和文件列表，如可通过修改conf目录下的httpd.conf文件来禁止使用目录索引。以Apache 2.2.25版本为例，打开httpd.conf文件将“Options Indexes FollowSymLinks”中的“Indexes”删除，这样web目录下的所有目录都不再生成索引。

为更好的保护系统安全，实际生产环境和测试开发环境应该隔离。在生产环境中的任何改动，都需要严格遵循变更管理流程，做到执行人、执行时间、执行对象和具体改动均记录在案，并有企业信息安全部门进行事前审核和事后审计。技术人员一般不要直接调试生产系统，可以在测试环境中调试完成后再更新生产系统，以避免调试过程中开启某些接口、更改某些配置或者保存某些调试信息造成安全隐患。如果非要在线调试生产系统，而且需要保存调试信息时，应避免将调试信息直接保存到服务器本地，同时调试完成后应第一时间删除相关调试信息并恢复系统配置。

3、安全设备的防御 进行目录遍历攻击时，攻击者基本都会使用目录跳转符，同时可能配合使用字符截断符，dir命令等。对专业的安全设备来说通过检测特定语法下的目录跳转符，字符截断符，以及与查看目录相关的命令即可识别各种目录遍历攻击。部署专业的安全设备不仅可以很好的保护业务系统自身的目录遍历漏洞，同时还能防御web服务器和服务器上其他非业务相关的第三方应用漏洞引发的目录遍历攻击。目前华三通信发布的SecPath IPS系列产品采用特有技术，能够智能有效的识别各种编码方式的目录遍历攻击。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ninjia.gitbook.io/secskill/web/dir.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
