- 找出服务器端请求伪造。
- 验证HTTP拆分。
- 验证referrer/origin问题。
- 验证是否正确通过add_header指令重新定义Response Headers。
- 验证请求的主机头是否伪造。
- 验证valid_referers是否为空。
- 验证是否存在多行主机头。
Gixy是一个Python开发的应用,目前支持的Python版本是2.7和3.5+。
安装步骤非常简单,直接使用pip安装即可:
$pipinstallgixy
如果你的系统比较老,自带Python版本比较低。可参考「使用pyenv搭建python虚拟环境」或者「如何在 上启用软件集Software Collections(SCL)」升级Python版本。
Gixy使用Gixy默认会检查/etc/nginx/nginx.conf配置文件。
$gixy
也可以指定NGINX配置文件所在的位置。
$gixy/usr/local/nginx/conf/nginx.conf ====================Results=================== Noissuesfound. ====================Summary=================== Totalissues: Unspecified:0 Low:0Medium:0 High:0
来看一个http折分配置有问题的示例,修改Nginx配置:
server{ … location~/v1/((?<action>[^.]*)/.json)?${ add_headerX-Action$action; } … }
再次运行Gixy检查配置。
$gixy/usr/local/nginx/conf/nginx.conf ====================Results=================== >>Problem:[http_splitting]PossibleHTTP-Splittingvulnerability. Description:Usingvariablesthatcancontain“/n”mayleadtohttpinjection. Additionalinfo: Reason:Atleastvariable“$action”cancontain“/n” Pseudoconfig: server{ server_namelocalhostmike.hi-linux.com; location~/v1/((?<action>[^.]*)/.json)?${ add_headerX-Action$action; } } ====================Summary=================== Totalissues: Unspecified:0 Low:0 Medium:0 High:1
从结果可以看出检测到了一个问题,指出问题类型为http_splitting。原因是$action变量中可以含有换行符。这就是HTTP响应头拆分漏洞,通过CRLFZ注入实现攻击。
如果你要暂时忽略某类错误检查,可以使用--skips参数:
$gixy–skipshttp_splitting/usr/local/nginx/conf/nginx.conf ====================Results=================== Noissuesfound. ====================Summary=================== Totalissues: Unspecified:0 Low:0 Medium:0 High:0
更多使用方法可以参考gixy --help 。
原文来自: http://www.zzvips.com/uploads/allimg/