升级nginx应对nginx的URI处理安全限制绕过漏洞安全漏洞(CVE-2013-4547)

11月20日,nginx官方更新邮件列表,对外通报Nginx 0.8.41 - 1.5.6 版本存在两类高危漏洞: 

  1. 通过Nginx规则限制后台地址访问IP、数据库等敏感地址访问的网站如果使用受影响版本,可能会造成限制失效。
  2. 网站存在上传功能,攻击者可以上传存在恶意代码的图片、txt、html文件即可向网站植入后门。 

bug的中文译文如下:

Nginx 的安全限制可能会被某些请求给忽略,(cve-2013-4547)。

当我们通过例如下列方式进行 URL 访问限制的时候,如果攻击者使用一些没经过转义的空格字符(无效的 HTTP 协议,但从 Nginx 0.8.41 开始因为考虑兼容性的问题予以支持)那么这个限制可能无效:

location /protected/ {

  deny all;

}

当请求的是 "/foo /../protected/file" 这样的 URL (静态文件,但 foo 后面有一个空格结尾) 或如下的配置:

location ~ \.php$ {

  fastcgi_pass ...

  }

当我们请求 "/file \0.php" 时就会绕过限制。

该问题影响 nginx 0.8.41 - 1.5.6,该问题已经在 Nginx 1.5.7 和 1.4.4 版本中修复。

补丁程序在:http://nginx.org/download/patch.2013.space.txt 

针对以上漏洞信息,附上3种解决方案:

1、升级nginx,如果使用的是lnmp一键安装包则可以非常方便升级:

  • wget soft.vpser.net/lnmp/upgrade_nginx.sh
  • sh upgrade_nginx.sh

然后输入1.4.4版本号后回车等待升级完成即可。

注:不建议升级到目前nginx官方的1.5.7测试版(mainline version),1.4.4为稳定版(stable version),legacy versions为历史稳定版。 

2、临时解决方案 

if ($request_uri ~ " ") {

  return 444;

} 

3、使用百度加速乐(呵呵)

Tags: nginx, bug, cve-2013-4547, mainline version, stable version, legacy versions

上一篇: CentOS ping: unknown host 解决方法
下一篇: IWMS系统之Unable to load DLL 'rasapi32.dll': 动态链接库(DLL)初始化例程失败。

相关文章

发表评论