小百科,大世界 |
---|
首页 / 计算机 / IT资讯 |
Nginx进行lua扩展实现简易的攻击拦截软WAF 繁體 |
|
写在前面 Nginx是一个主流的代理服务,之前记录过它的四层、七层代理。既然流量都经过Nginx了,那除了本身的Nginx日志,作为用户肯定也支持对请求信息进行操作。尤其是在安全领域,很多都是通过在代理服务器上挂载规则特征,实现软件层面的软WAF进行WEB安全防御。 这次主要就是记录一下Nginx+Lua实现一个简单的XSS攻击拦截。 关于更详细的内容,均可参考该网站文档进行学习:
Lua关于Lua,它是一个脚本语言,因为它极其轻量级,所以一般广泛应用于游戏脚本等高性能的领域。Nginx也有专门对Lua脚本支持的模块,后续的软WAF实现主要就是依赖于Nginx挂载Lua脚本,关于Lua的语法比较简单,可以参考上述文档,不过多赘述。 Nginx对Lua的支持Nginx本身就是模块化的,可以针对模块进行增加修改。那么对于lua的能力支持,主要就是 ngx_http_lua_module 模块来提供的。
如果发现不能成功执行,这里便用如下命令,手动安装一下扩展再试试
XSS检测lua脚本这里我写了一个简单XSS检测,直接上代码
可以看到,我写了一个xss的检测函数has_xss,当然规则比较简单。同时接下来,用了ngx.req.read_body()函数,当你需要处理HTTP请求时,必须优先调用该函数,随后才可以获取HTTP的请求数据。 这里调用过该函数后,我取到了uri的参数数据。当然也可以通过ngx.req.get_post_args()或者ngx.req.get_body_data()来分别获取post参数和请求数据。除此之外,更多的用法函数可以参考最上方的文档进行查询。 最后就是循环遍历参数并执行has_xss进行判断,如果发现命中匹配字符,则返回FORBIDDEN也就是403状态码。 挂载Lua这里我的lua脚本路径为:/home/ssremex/nginx_lua/xss_check.lua 打开nginx的配置文件 /etc/nginx/nginx.conf
通过access_by_lua_file来使lua脚本挂载到根路由下。 同时,因为咱们定义了拦截返回状态码403,所以希望拦截的时候能够返回这个页面,先简单写个403页面 attack_403.html,
在nginx.conf中配置上error_page,因为之前我已经设定了web的全局跟路径root,所以我直接将attack_403.html文件放到根路径下也就是home_demo下,路径为 /home/ssremex/home_demo/attack_403.html nginx相关配置如下
查看效果本次我们实现的是GET请求的xss检测
通过该命令,测试配置文件没啥问题。 随后,重启nginx服务
访问WEB服务 一切正常,添加xss参数:
可以看到直接跳转到403界面,完美实现攻击拦截。
END |
首页 / 计算机 / IT资讯 |
资源来自网络,仅供参考 |