ngx_lua_waf
ngx_lua_waf是一个基于lua-nginx-module(openresty)的web应用防火墙
源码:https://github.com/loveshell/ngx_lua_waf
安装部署
系统版本:Centos6.5 x86_64
1、openresty的配置
yum -y install pcre pcre-devel
wget https://openresty.org/download/openresty-1.9.15.1.tar.gz
tar -zxvf openresty-1.9.15.1.tar.gz
cd openresty-1.9.15.1
./configure
gmake && gmake install
2、配置ngx_lua_waf
git clone https://github.com/loveshell/ngx_lua_waf.git
在nginx.conf的http段添加
lua_package_path "/usr/local/openresty/nginx/conf/ngx_lua_waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/openresty/nginx/conf/ngx_lua_waf/init.lua;
access_by_lua_file /usr/local/openresty/nginx/conf/ngx_lua_waf/waf.lua;
配置config.lua里的waf规则目录(一般在ngx_lua_waf/wafconf/目录下)
RulePath = "/usr/local/openresty/nginx/conf/ngx_lua_waf/wafconf"
attacklog = "on"
logdir = "/usr/local/nginx/logs/waf"
3、waf日志配置
#将nginx.conf首行的”# user nobody;”的”#”注释去掉,重新启动nginx服务
user nobody
#将防护日志目录所属user和group修改为nobody,目录权限可设为700也可以写入
cd /usr/local/nginx/conf
chown -R nobay.nobady waf //chmod 700 waf
Bypass WAF
1、GET+POST+COOKIE绕过
这种姿势是有限定条件的,目前只在ASPX环境测试成功
条件:使用Request.Params["id"]来获取参数, 三种方式可以进行参数传递:(1). Form (2). ?id= (3).cookie
获取到参数拼接起来,通过HPP可成功Bypass