漏洞描述:

任意文件下载,此漏洞不仅仅可遍历系统下web中的文件,而且可以浏览或者下载到系统中的文件,攻击人员通过目录遍历攻击可以获取系统文件及服务器的配置文件等等。一般来说,他们利用服务器API、文件标准权限进行攻击。严格来说,目录遍历攻击并不是一种web漏洞,而是网站设计人员的设计“漏洞”。

测试方法:

1、通过web漏洞扫描工具对网站实施扫描,如御剑、dirsearch等。
2、也可通过判断网站语言,并根据其url中部分提供的参数,进行构造相关的路径信息,如收集到网站中间件版本为apache,则想办法构造../../../ WEB-INF/web.xml等,然后查看其是否可被下载出来。随后可构造下载系统文件。

**漏洞分析:

**如果web设计者设计的web内容没有恰当的访问控制,允许目录遍历,攻击者就可以访问受限的目录,并可以在web根目录以外执行命令。

漏洞等级:

【高危】:实际工作中需要根据漏洞的影响大小进行定级。

修复方案:

1、净化数据:
对用户传过来的文件名参数进行硬编码或统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
2、web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,时使其即使越权也在访问目录之内。www目录就是一个chroot应用. 由chroot创造出的那个根目录,叫做“chroot监狱”(所谓"监狱"就是指通过chroot机制来更改某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全,详细具体chroot的用法,可参考:http://blog.csdn.net/frozen_fish/article/details/2244870
3、任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
4、要下载的文件地址保存至数据库中。
5、文件路径保存至数据库,让用户提交文件对应ID下载文件。
6、用户下载文件之前需要进行权限判断。
7、文件放在web无法直接访问的目录下。
8、不允许提供目录遍历服务。