本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
一、什么是目录穿越
目录穿越(目录遍历)是一个Web安全漏洞,攻击者可以利用该漏洞读取运行应用程序的服务器上的任意文件。 这可能包括应用程序代码和数据,后端系统的登录信息以及敏感的操作系统文件。
在某些情况下,攻击者可能能够在服务器上写入任意文件,(如,FFFTP是一款小型的FTP客户端软件。FFFTP客户端没有正确地验证FTP服务器所返回的LIST命令响应中包含有目录遍历序列(斜线)的文件名,如果用户受骗从恶意的FTP服务器下载的目录包含有带有恶意文件名的文件的话,就可能导致向用户系统的任意位置写入文件)从而允许他们修改应用程序数据或行为,并最终完全控制服务器。
二、漏洞原理
若web要显示一个商品的图像,有时候开发者会用通过HTML加载,如:
<img src="/loadImage?filename=214.png">
使用filename参数加载图像文件,图片文件位置可能映射在 /var/www/images/ 上,所以真实的路径是 /var/www/images/214.png
这就导致了攻击者可以读取服务器上的任意文件:
https://www.*****.com/loadImage?filename=../../../etc/passwd
filename的参数值与真实路径组合起来就是:
/var/www/images/../../../etc/passwd
其等价于:
/etc/passwd
在Unix操作系统上,../ 是一个标准的返回上一级路径的语法;
在Windows操作系统上, ../ 和 ..\ 都是返回上一级的语句。
三、目录遍历的危害
1.利用漏洞,攻击者能够走出服务器的根目录,从而访问到文件系统的其他部分。
2.可以执行一些能够造成系统崩溃的命令。
3.依赖于web站点的访问设置,攻击者能够仿冒成站点的其他用户来执行操作。
4.攻击者可以直接访问想要的敏感数据,包括配置文件、日志、源代码等。
5.配合其他漏洞的综合利用,攻击者可以轻易获取更高的权限。
四、目录穿越的利用
查看商品的图片,可以看到是通过filename参数来确定图片的:

右键打开图片,同时抓包,可以修改filename参数值,利用 ../ 返回上一级来遍历任意文件:
filename=../../../etc/passwd