前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx 配置文件安全分析

Nginx 配置文件安全分析

作者头像
dys
发布2018-04-04 13:48:38
1.2K0
发布2018-04-04 13:48:38
举报
文章被收录于专栏:性能与架构

简介

Gixy 是一个 Nginx 配置文件的分析工具,主要目标是防止由于不当的配置带来的安全问题

Gixy 是进行静态分析,只需要指定配置文件的路径,不需要启动任何环境

使用示例

配置文件 t.conf 的内容:

代码语言:javascript
复制
server {
    listen 80 default;

    location ~ /v1/((?<action>[^.]*)\.json)?$ {
        add_header X-Action $action;
        return 200 "OK";
    }
}

使用 gixy 进行分析:

代码语言:javascript
复制
gixy t.conf

结果:

检测到了一个问题,指出问题类型为 http_splitting,原因是 $action 变量中可以含有回车符

这就是HTTP响应头拆分漏洞,通过CRLFZ注入实现攻击,例如请求为:

代码语言:javascript
复制
/v1/see%20below%0d%0ax-crlf-header:injected.json

这个请求可以匹配上面的 location,响应信息为:

代码语言:javascript
复制
HTTP/1.1 200 OK
Server: nginx/1.11.10
Date: Mon, 13 Mar 2017 21:21:29 GMT
Content-Type: application/octet-stream
Content-Length: 2
Connection: close
X-Action: see below
x-crlf-header:injected

可以看到,成功的在最后一行添加了一个响应头 x-crlf-header:injected

因为请求中是包含回车符的,上面的请求 urldecode 后是这样的:

代码语言:javascript
复制
/v1/see below
x-crlf-header:injected.json

这就需要在 location 的匹配时进行严格的验证,改为:

代码语言:javascript
复制
location ~ /v1/((?<action>[^/\s]+)\.json)?$ {
    ...
}

再次使用 gixy 进行分析后通过了验证

Gixy 可以对配置文件中 include 的其他文件也一起进行分析,例如主配置文件 nginx.conf 引入了其他的配置:

代码语言:javascript
复制
include servers/*;

使用 gixy 分析 nginx.conf 时会自动把 servers 下的配置文件一起检查了,非常方便

可以分析出哪些问题

(1)ssrf 服务端请求伪造

(2)HTTP Splitting 响应拆分

(3)错误的 referrer/origin 验证

(4)错误使用 add_header 指令

(5)Host 头信息伪造

(6)Referer 验证中允许为空

(7)响应头中使用多行形式

安装

Gixy 发布在 PyPI 上,安装非常简单:

代码语言:javascript
复制
pip install gixy

安装后就可以执行 gixy 命令

小结

Gixy 简单实用,我对安全方面了解不多,用 gixy 检查一遍会感觉踏实很多,建议使用 Nginx 的朋友都试一下

Gixy 发布时间不长,但已经有了4千多个星,项目地址:

https://github.com/yandex/gixy

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 使用示例
  • 可以分析出哪些问题
  • 安装
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档