欢迎您光临本站,如有问题请及时联系我们。

Nginx配置文件安全分析工具:Gixy

  Gixy是一款用来分析Nginx配置文件的工具。 Gixy的主要目标是防止安全配置错误,并自动进行缺陷检测。

  Gixy特性

  找出服务器端请求伪造。

  验证HTTP拆分。

  验证referrer/origin问题。

  验证是否正确通过add_header指令重新定义Response Headers。

  验证请求的主机头是否伪造。

  验证valid_referers是否为空。

  验证是否存在多行主机头。

  项目地址:https://github.com/yandex/gixy

  Gixy安装

  Gixy是一个Python开发的应用,目前支持的Python版本是2.7和3.5+。

  安装步骤非常简单,直接使用pip安装即可:

  $ pip install gixy

  如果你的系统比较老,自带Python版本比较低。可参考「使用pyenv搭建python虚拟环境」或者「如何在CentOS上启用软件集Software Collections(SCL)」升级Python版本。

  Gixy使用

  Gixy默认会检查/etc/nginx/nginx.conf配置文件。

  $ gixy

  也可以指定NGINX配置文件所在的位置。

  $ gixy /usr/local/nginx/conf/nginx.conf

  ==================== Results ===================

  No issues found.

  ==================== Summary ===================

  Total issues:

  Unspecified: 0

  Low: 0 Medium: 0

  High: 0

  来看一个http折分配置有问题的示例,修改Nginx配置:

  server {

  …

  location ~ /v1/((?<action>[^.]*)\.json)?$ {

  add_header X-Action $action;

  }

  …

  }

  再次运行Gixy检查配置。

  $ gixy /usr/local/nginx/conf/nginx.conf

  ==================== Results ===================

  >> Problem: [http_splitting] Possible HTTP-Splitting vulnerability.

  Description: Using variables that can contain “\n” may lead to http injection.

  Additional info: https://github.com/yandex/gixy/blob/master/docs/en/plugins/httpsplitting.md

  Reason: At least variable “$action” can contain “\n”

  Pseudo config:

  server {

  server_name localhost mike.hi-linux.com;

  location ~ /v1/((?<action>[^.]*)\.json)?$ {

  add_header X-Action $action;

  }

  }

  ==================== Summary ===================

  Total issues:

  Unspecified: 0

  Low: 0

  Medium: 0

  High: 1

  从结果可以看出检测到了一个问题,指出问题类型为http_splitting。原因是$action变量中可以含有换行符。这就是HTTP响应头拆分漏洞,通过CRLFZ注入实现攻击。

  如果你要暂时忽略某类错误检查,可以使用--skips参数:

  $ gixy –skips http_splitting /usr/local/nginx/conf/nginx.conf

  ==================== Results ===================

  No issues found.

  ==================== Summary ===================

  Total issues:

  Unspecified: 0

  Low: 0

  Medium: 0

  High: 0

  更多使用方法可以参考gixy --help命令。


来源:本文由E8运维原创撰写,欢迎分享本文,转载请保留出处和链接!