漏洞之目录遍历漏洞

目录遍历漏洞

目录遍历, 也叫路径遍历, 由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件 (可以是web根目录以外的文件),甚至可以执行系统命令。

 

原理

程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

比如:http://www.***.com/index.php?file=image.jpg

当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,将读取的内容返回给访问者。

如果程序对文件名称的安全性验证不足, 攻击者会采用../../../ect/passwd的文件名, 导致访问非法文件。

 

漏洞产生环境(原因)

网站应用提供文件下载, 其中文件储存在服务器, 网站脚本利用代码获取本网站的目录文件并将其显示在网站界面上, 如果对代码没有相关的安全验证, 将导致文件目录泄露漏洞。

 

分类

1. 加密型传递的参数

在web程序中, 对于传递的数据进行加密后再提交, 比如:

http://www.***.com/downfile.jsp?file=ZmfdWq==

其中参数file的数据采用Base64加密, 而攻击中只需要将数据进行相应的解密即可入侵

也就是, 采用一些规律性的加密方式也是不安全的

 

2. 编码绕过

采用不同的编码进行过滤型绕过, 比如通过对参数进行url编码提交来绕过:

http://www.***.com/downfile.jsp?file=%66%1E%23%16%5A

 

3. 目录限定绕过

有些web软件通过限定目录权限来分离, 当然这样也是不可取的, 攻击者可以通过某些特定的符号来绕过

比如, 根目录/被限定了权限, 但是可以通过~来进入根目录下的目录 (假设~家目录有权限):

~/../boot   等价于  /boot

 

4. 绕过文件后缀过滤 (截断上传原理)

当web程序设置了后缀名检测(黑名单或白名单)的时候, 可以通过%00截断来绕过:

../../../boot.ini%00.jpg   ==>  ../../../boot.ini

 

5. 绕过来路验证

来路验证, 也可以理解为跳转验证,  即当前页面的打开是由于哪里的操作生成的, 确保用户在自己的网站上下载, 防止盗链(接)

比如,  直接打开baidu.com, 这时候的来路是null;

如果从baidu.com的网页中打开hao123.com, 那么hao123.com的来路就是baidu.com

很多网站都有来路验证, 就像我们经常在下载文件的时候遇到:  

点击下载链接之后, 由于需要跳转到新的下载页面, 浏览器或者web程序处于安全考虑, 会提示是否确认跳转到未知链接。

 Http Refer:  是header的一部分, 当游览器向web服务器发送请求的时候, 一般会带上Refer, 告诉服务器是从那个页面跳转过来的

如在php中, 通过$_SERVER['SERVER_REDERER']获取当前页面的来路。

 

 

修复以及预防

1. 对传来的参数做过滤

2. 文件ID使用随机数命名

3. 文件路径保存至数据库,用户提交文件对应ID下载文件,路径识别拼接都在后端,黑客无法操作

4. 下载文件之前做权限判断,设置好目录权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值