0x01 引言
网上的大部分WAF文章都是关于如何绕WAF的,不在多说,今天给大家讲解一下WAF的原理和如何利用ModSecurity搭建自己的WAF环境
0x02 原理
WAF是Web应用防火墙(Web Application Firewall)的简称,对来自Web应用程序客户端的各类请求进行内容检测和验证,确保其安全性与合法性,对非法的请求予以实时阻断,为Web应用提供防护,也称作应用防火墙,是网络安全纵深防御体系里重要的一环。WAF属于检测型及纠正型防御控制措施。WAF分为硬件WAF、软件WAF(ModSecurity)和代码级WAF。
WAF对请求的内容进行规则匹配、行为分析等识别出恶意行为,并执行相关动作,这些动作包括阻断、记录、告警等。
WAF工作在web服务器之前,对基于HTTP协议的通信进行检测和识别。通俗的说,WAF类似于地铁站的安检,对于HTTP请求进行快速安全检查,通过解析HTTP数据,在不同的字段分别在特征、规则等维度进行判断,判断的结果作为是否拦截的依据从而决定是否放行。
不管是硬WAF,软WAF,云WAF,还是网站内置的WAF,都是有一个规则库
以硬WAF为例,大致工作流程如下
客户端发送http/s请求,然后waf将请求和规则库规则进行匹配,如果可以命中某条规则则对请求进行阻断,如果未命中规则则对请求放行到服务器
我们平常所说的绕WAF其实也就是绕WAF的规则引擎的规则
一般国内厂商的硬waf的规则引擎中的waf规则都是由正则进行编写的,据我所知只有长亭是针对sql注入和xss是采用的语义识别
ModSecurity是一个开源的WAF规则库,已经集成了libinjection语义识别
libinjection语义识别参考sql注入防御——libinjection语义识别分析
0x03 ModSecurity简介
ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。
0x04 安装ModSecurity
本文主要介绍Windows下为IIS安装ModSecurity 2.9.3以及对应的规则配置教程,IIS的安装过程在本文中不做阐述。
请注意,个人并不建议使用ModSecurity来对IIS下的网站进行防御,因为OWASP的规则虽然能够防御大部分的网站入侵行为,但是其毕竟是国外开源项目,规则内缺少针对国内开源程序的漏洞防护,如织梦、PHPCMS、ThinKPHP等,因此,除非是现有的安全软件无法进行有效防护,或是要提高自动化运维水平,否则仍然建议使用国内目前流行的第三方安全软件,如护卫神、安全狗等。
一、安装VCredist
在安装ModSecurity之前需要安装VCredist,点击https://visualstudio.microsoft.com/zh-hans/downloads/进入下载页进行下载。
下载完成后,直接安装即可。
二、安装ModSecurity
按照操作系统下载对应的ModSecurityIIS,
32位ModSecurityIIS:http://www.modsecurity.cn/download/modsecurity/ModSecurityIIS_2.9.3-32b.msi
64位ModSecurityIIS:http://www.modsecurity.cn/download/modsecurity/ModSecurityIIS_2.9.3-64b.msi
下载后复制到服务器内,直接安装即可。
注意:要先安装IIS,再安装ModSecurityIIS
安装成功后,applicationHost.config文件(位于C:WindowsSystem32inetsrvConfig目录下),会自动添加以下内容,表示IIS下所有网站都会默认使用ModSecurity进行防护:
<section name="ModSecurity" overrideModeDefault="Allow" allowDefinition="Everywhere" /></sectionGroup>
三、规则配置
虽然IIS版的ModSecurity安装后自动包含了规则文件,但由于自带的规则文件版本较老,因此需要手动将规则文件进行更新。
首先,访问https://github.com/coreruleset/coreruleset下载规则文件:
下载后上传到服务器,将解压后的"crs-setup.conf.example"重命名为"crs-setup.conf"后复制到ModSecurity安装目录下,即C:Program FilesModSecurity IIS。
修改modsecurity_iis.conf,将文件中的"Include crs-setup.conf.example"修改为"Include crs-setup.conf"。
修改modsecurity.conf,将"SecRuleEngine DetectionOnly"改为"SecRuleEngine On"。
将解压后的rules文件夹复制到C:Program FilesModSecurity IISowasp_crs下,同时修改REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example与RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example两个文件的文件名,将".example"删除,可将自己写的规则放置于此两个文件中。
将c:inetpubtemp文件夹与c:inetpublogs赋予IIS_IUSRS与IUSR完全控制权限。
重启IIS。
四、测试防御效果
访问http://服务器IP或域名/?param=%22%3E%3Cscript%3Ealert(1);%3C/script%3E,查看防御效果。
同时可在"控制面板-管理工具-事件查看器-Windows日志-应用程序"中查看拦截日志。
命中了C:/Program Files/ModSecurity IIS/owasp_crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf文件的第206行,规则id:949110
然后就可以去文档查看此规则是怎么匹配的,然后根据规则进行绕过
0x05 参考连接
http://www.modsecurity.cn/practice/post/20.html
https://zhuanlan.zhihu.com/p/364394336
https://blog.csdn.net/qq_37931597/article/details/88671888
本文最终解释权归本文作者所有!!!
本公众号发布的靶场、文章项目中涉及的任何脚本工具,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;
本文章、项目内场所有资源文件,杜绝任何靶本公众号、自媒体进行形式的擅自转载、发布
本公众号对任何脚本及工具问题概不负责,包括不限于由任何脚本错误导致的任何损失或损害及任何法律责任;
直接使用本或公众发布的技术、靶场、文章项目中涉及的脚本工具,但在某些行为不符合任何国家/地区或相关地区的情况下进行传播时,引发的隐私或其他任何法律问题的后果概不负责;
如果任何单位或个人认为项目或文章的内容可能侵犯其权利,则应及时通知并证明其身份,证明我们将在收到证明文件后删除相关内容;
以任何方式查看或使用此项目的人或直接或间接使用项目的任何脚本的使用者都应仔细阅读此声明;
本公众号保留更改或补充,免责随时声明的权利;
一旦您访问或使用访问本公众号任何项目,则视为您已接受此免责声明。
您在本声明未发出之时,使用或者访问了本公众号任何项目 ,则视为已接受此声明,请仔细阅读。
此致
由于、利用的信息而造成的任何或直接的此文传播后果,均由用户本人负责,作者不承担任何直接责任。
一切法律后果均由攻击者承担!!!
日站不规范,亲人两行泪!!!
日站不规范,亲人两行泪!!!
日站不规范,亲人两行泪!!!
专注于信息安全方面分享,非营利性组织,不接任何商业广告
关注不迷,点赞!关注!转向!评论!!
要投稿的请留言或者加微信,会第一时间回复,谢谢
原文始发于微信公众号(每天一个入狱小技巧):WAF篇--WAF原理讲解,使用ModSecurity搭建自己的WAF环境,简单规则分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论