小记文件服务器的漏洞修复
2017-03-19 17:58
453 查看
前一段时间用node.js写了一个简单的文件服务器,用于做项目时本地架设服务器满足客户端下载文件的需求(链接在这里)。
因为是用于本地的测试服务器,所以也没有怎么考虑安全性,直接根据url的路径去读取本地的目录和文件。今天想把文件服务器放到外网测试服务器上提供测试服务,部署之前对文件服务器做了下检查,结果发现,即使是文件服务器这么简单的逻辑,如果不考虑安全,也会导致以下2个漏洞:
url指向绝对路径,如http://localhost/C:/。这种情况,通过path.isAbsolute判断直接阻止就行。
url里面包含/../,如果http://localhost/..%2f。这种情况,可以通过正则表达式判断路径中存在类似/../的部分就直接阻止(express的serve-static就是这样做的)。我的做法是通过path.normalize规范化文件路径后,与根目录的路径进行比较,不是以根目录起始的直接阻止。
除了上面说的判断恶意输入进行阻止这种对症下药的做法外,还有一些其他方法:
限制服务器程序的权限,只具有根目录的读取权限。传统的服务器特别是linux下的服务器,大多都是采用这种方法。
不直接操作文件系统。例如可以在服务器启动时递归遍历根目录,把所有路径保存起来,接到请求时直接查表获得对应的文件路径(或内容),查表不存在就可以直接返回404。这种比较适合服务器运行时文件不会修改的情况,或者运行时动态生成文件。
因为是用于本地的测试服务器,所以也没有怎么考虑安全性,直接根据url的路径去读取本地的目录和文件。今天想把文件服务器放到外网测试服务器上提供测试服务,部署之前对文件服务器做了下检查,结果发现,即使是文件服务器这么简单的逻辑,如果不考虑安全,也会导致以下2个漏洞:
url指向绝对路径,如http://localhost/C:/。这种情况,通过path.isAbsolute判断直接阻止就行。
url里面包含/../,如果http://localhost/..%2f。这种情况,可以通过正则表达式判断路径中存在类似/../的部分就直接阻止(express的serve-static就是这样做的)。我的做法是通过path.normalize规范化文件路径后,与根目录的路径进行比较,不是以根目录起始的直接阻止。
除了上面说的判断恶意输入进行阻止这种对症下药的做法外,还有一些其他方法:
限制服务器程序的权限,只具有根目录的读取权限。传统的服务器特别是linux下的服务器,大多都是采用这种方法。
不直接操作文件系统。例如可以在服务器启动时递归遍历根目录,把所有路径保存起来,接到请求时直接查表获得对应的文件路径(或内容),查表不存在就可以直接返回404。这种比较适合服务器运行时文件不会修改的情况,或者运行时动态生成文件。
相关文章推荐
- struts2之高危远程代码执行漏洞,可造成服务器被入侵,下载最新版本进行修复
- [小记]将windows下的文件拷贝到多台linux服务器下
- 蚂蚁分类信息系统 文件上传漏洞及修复办法
- 服务器Linux系统下的ext文件系统修复方案
- 服务器Linux系统下的ext文件系统修复的完美方案
- Discuz X2.5 漏洞修复失败,发现您的目录及文件无修改权限
- 漏洞修复八个月后,仍有超过七万台 memcached 服务器面临危险
- Web服务器.svn隐藏文件夹漏洞利用、修复和杜绝
- 文件上传漏洞和修复方案
- Web服务器 .svn隐藏文件夹漏洞修复和杜绝
- 上传服务器高级别漏洞:任意文件上传导致服务器可被操控漏洞
- Java写文件时文件名00截断BUG导致的文件上传漏洞及修复
- [转载20131024]Nginx服务器漏洞的利用和修复方法
- HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)
- 服务器SSL不安全漏洞修复方案
- PHP 'ext/soap/php_xml.c'不完整修复多个任意文件泄露漏洞
- IIS短文件漏洞修复
- 【渗透测试】PHPCMS9.6.0 任意文件上传漏洞+修复方案
- 漏洞修复八个月后,仍有超过七万台 memcached 服务器面临危险