转自:http://danqingdani.blog.163.com/blog/static/186094195201472304841643/
ModSecurity的规则因为奇怪的正则(可读性差?正则都很天书地说!)及被绕过案例(哪个WAF没有被绕过的经历呢?),还有性能啥的,被不少的安全人员围攻,但从架构层面来说,是款非常优秀的WAF,对构造我们自己的WAF非常具有借鉴性。
 
 
一、ModSecurity CRS笔记

对安全人员而言,WAF貌似最有价值的是规则,我们来看看ModSecurity CRS规则集的组织结构。ModSecurity  CRS 规则集包括一个配置文件与四个部分(基础规则集、SLR规则集、可选规则集、实验性质规则集)

配置文件

modsecurity_crs_10_setup.conf

第一部分:基础规则集

modsecurity_crs_20_protocol_violations.conf HTTP协议规范相关规则
modsecurity_crs_21_protocol_anomalies.conf HTTP协议规范相关规则
modsecurity_crs_23_request_limits.conf HTTP协议大小长度限制相关规则
modsecurity_crs_30_http_policy.conf HTTP协议白名单相关规则
modsecurity_crs_35_bad_robots.conf 恶意扫描器与爬虫规则
modsecurity_crs_40_generic_attacks.conf 常见的攻击例如命令执行,代码执行,注入,文件包含、敏感信息泄露、会话固定、HTTP响应拆分等相关规则
modsecurity_crs_41_sql_injection_attacks.conf SQL注入相关规则(竟然有一条MongoDB注入的规则,很全)
modsecurity_crs_41_xss_attacks.conf XSS相关规则
modsecurity_crs_42_tight_security.conf 目录遍历相关规则
modsecurity_crs_45_trojans.conf webshell相关规则
modsecurity_crs_47_common_exceptions.conf Apache异常相关规则
modsecurity_crs_49_inbound_blocking.conf 协同防御相关规则
modsecurity_crs_50_outbound.conf 检测response_body中的错误信息,警告信息,列目录信息

modsecurity_crs_59_outbound_blocking.conf 协同防御相关规则
modsecurity_crs_60_correlation.conf 协同防御相关规则

第二部分:SLR规则集

来自确定APP的PoC,不会误报,检测方法是先检查当前请求的文件路径是否出现在data文件中,若出现再进行下一步测试,否则跳过该规则集的检测

modsecurity_crs_46_slr_et_joomla_attacks.conf JOOMLA应用的各种漏洞规则
modsecurity_crs_46_slr_et_lfi_attacks.conf 各种APP的本地文件包含相关规则
modsecurity_crs_46_slr_et_phpbb_attacks.conf PHPBB应用的各种漏洞规则
modsecurity_crs_46_slr_et_rfi_attacks.conf 各种APP的远程文件包含相关规则
modsecurity_crs_46_slr_et_sqli_attacks.conf 各种APP的SQL注入相关规则
modsecurity_crs_46_slr_et_wordpress_attacks.conf WORDPRESS应用的各种漏洞规则
modsecurity_crs_46_slr_et_xss_attacks.conf 各种APP的XSS相关规则

第三部分:可选规则集

modsecurity_crs_10_ignore_static.conf 静态文件不过WAF检测的相关规则
modsecurity_crs_11_avs_traffic.conf AVS(授权的漏洞扫描器)的IP白名单规则
modsecurity_crs_13_xml_enabler.conf 请求体启用XML解析处理
modsecurity_crs_16_authentication_tracking.conf 记录登陆成功与失败的请求

modsecurity_crs_16_session_hijacking.conf 会话劫持检测
modsecurity_crs_16_username_tracking.conf 密码复杂度检测

modsecurity_crs_25_cc_known.conf CreditCard验证

modsecurity_crs_42_comment_spam.conf 垃圾评论检测
modsecurity_crs_43_csrf_protection.conf 与modsecurity_crs_16_session_hijacking.conf联合检测,使用内容注入动作append注入CSRF Token

modsecurity_crs_46_av_scanning.conf 使用外部脚本扫描病毒
modsecurity_crs_47_skip_outbound_checks.conf modsecurity_crs_10_ignore_static.conf的补充

modsecurity_crs_49_header_tagging.conf 将WAF规则命中情况配合Apache RequestHeader指令注入到请求头中,以供后续应用进一步处理
modsecurity_crs_55_application_defects.conf 安全头(X-XSS-Protection,X-FRAME-OPTIONS,X-Content-Type-Options)设置,安全Cookie设置(Domain,httponly,secure),字符集设置等规则
modsecurity_crs_55_marketing.conf记录MSN/Google/Yahoo robot情况

第四部分:实验性规则集

modsecurity_crs_11_brute_force.conf 防御暴力破解相关规则
modsecurity_crs_11_dos_protection.conf 防DoS攻击相关规则
modsecurity_crs_11_proxy_abuse.conf 检测X-Forwarded-For是否是恶意代理IP,IP黑名单

modsecurity_crs_11_slow_dos_protection.conf Slow HTTP DoS攻击规则

modsecurity_crs_25_cc_track_pan.conf 检测响应体credit card信息

modsecurity_crs_40_http_parameter_pollution.conf 检测参数污染
modsecurity_crs_42_csp_enforcement.conf CSP安全策略设置

modsecurity_crs_48_bayes_analysis.conf 使用外部脚本采取贝叶斯分析方法分析HTTP请求,区分正常与恶意请求
modsecurity_crs_55_response_profiling.conf 使用外部脚本将响应体中的恶意内容替换为空
modsecurity_crs_56_pvi_checks.conf使用外部脚本检测 REQUEST_FILENAME是否在osvdb漏洞库中

modsecurity_crs_61_ip_forensics.conf 使用外部脚本收集IP的域名、GEO等信息

modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf APPSENSOR检测设置文件

modsecurity_crs_40_appsensor_detection_point_3.0_end.conf APPSENSOR检测设置文件

modsecurity_crs_16_scanner_integration.conf 对扫描器设置IP白名单,并调用扫描器API来进行检测

modsecurity_crs_46_scanner_integration.conf

使用modsecurity_crs_40_appsensor_detection_point_2.0_setup.conf,modsecurity_crs_40_appsensor_detection_point_3.0_end.conf 来跟踪XSS漏洞参数与SQLI漏洞参数

modsecurity_crs_40_appsensor_detection_point_2.1_request_exception.conf 使用外部脚本检测请求方法,参数个数,参数名字,参数长度,参数字符等限制
modsecurity_crs_40_appsensor_detection_point_2.9_honeytrap.conf 使用隐藏参数设置蜜罐

ModSecurity CRS单条规则的内容,请参看ModSecurity CRS详解

 
二、WAF防御checklist
对使用者而言,考察一款WAF的有效性,最关键的一点就是攻击的防御情况,我们看看ModSecurity对漏洞防御的checklist
 
扫描器scanner
 
恶意爬虫crawler
webshell (Trojans)
         shell上传:见文件上传
         shell连接:get/post/cookie

SQLi/BlindSQLI(Reflected SQLi, Stored SQLi)
     GET
     POST
     Referer
     Cookie
     X_Forwarded_For
     UserAgent
     Basic-Authorization

LFI/RFI
     get lfi/rfi
     post lfi/rfi
     cookie lrfi/rfi
     data://URI
     php://input
     php://filter
     get directory traversal
     post directory traversal

File Upload
     php
     asp(x)
     jsp

RCE
     struts2
     nginx CVE
     PHP CGI
     get rce
     post rce

XSS( Reflected XSS, Stored XSS, DOM XSS) /CSRF/flash xss/json xss 
     GET
    POST

code injection
     get code injection
     post code injection

XPath injection

LDAP injection

XML injection

expression language injection

server side includes injection

server side request forgery

HTTP响应拆分
 
CRLF注入
 
服务器解析漏洞
 
敏感信息泄漏info leak
      svn/cvs
      后台暴露

http parameter pollution参数污染

brute force暴力破解(weak password)

DoS

slow HTTP DoS

URL Redirect

session fixation会话固定/ easily-guessable session IDs

会话劫持

垃圾评论

防病毒

access control(vertical, horizontal)/Unauthorized File Exposure(download)

logic flaws逻辑漏洞

协议异常
     不合规范的RequestLine
     异常文件名
     请求体解析错误
     multipart请求体解析错误
     Content-Length异常
     Content-Enoding异常
     Range异常
     Request-Range异常
     Expect异常
     Connection异常
     Pragma, Cache-Control
     Host异常
     User-Agent异常
     Accpet异常
     X-Forwarded-For异常
     编码异常,url编码异常,utf-8异常
     charset设置缺失或不一致
     Cookie Domain/httponly/secure设置错误
     安全头设置错误X-XSS-Protection,X-FRAME-OPTIONS,X-Content-Type-Options

协议限制
     允许请求方法 GET/POST/HEAD
     允许协议版本HTTP/1.0 or HTTP/1.1
     允许Content-Type
     允许的文件后缀名
     允许的请求头
     长度限制
     参数名长度限制
     参数值长度限制
     参数个数限制
     参数的总大小
     上传文件大小限制
     上传文件总大小限制
     编码限制

IP白名单/黑名单/恶意代理

ModSecurity CRS笔记[转]的更多相关文章

  1. [转]Web应用防火墙WAF详解

    通过nginx配置文件抵御攻击 0x00 前言 大家好,我们是OpenCDN团队的Twwy.这次我们来讲讲如何通过简单的配置文件来实现nginx防御攻击的效果. 其实很多时候,各种防攻击的思路我们都明 ...

  2. WAF的实现

    文章来源:http://danqingdani.blog.163.com/blog/static/1860941952014101723845500/ 本篇文章从WAF产品研发的角度来YY如何实现一款 ...

  3. 如何打造一款可靠的WAF

    之前写了一篇<WAF防御能力评测及工具>,是站在安全运维人员选型WAF产品的角度来考虑的(优先从测试角度考虑是前职业病,毕竟当过3年游戏测试?!).本篇文章从WAF产品研发的角度来YY如何 ...

  4. OWASP ModSecurity Core Rule Set (CRS)的基本使用

    Preface 前述文章开源WAF工具ModSecurity,介绍了ModSecurity作为Nginx的动态加载模块的基本安装和使用. 本篇简单介绍ModSecurity CRS规则集的使用. # ...

  5. nginx配合modsecurity实现WAF功能

    一.准备工作 系统:centos 7.2 64位.nginx1.10.2, modsecurity2.9.1 owasp3.0 1.nginx:http://nginx.org/download/ng ...

  6. ModSecurity SQL注入攻击

    ModSecurity是 一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecur ...

  7. ModSecurity for Nginx

    Announcing the availability of ModSecurity extension for Nginx ModSecurity for Nginx ModSecurity for ...

  8. ModSecurity SQL注入攻击 – 深度绕过技术挑战

    ModSecurity是一个入侵探测与阻止的引擎,它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙.它可以作为Apache Web服务器的一个模块或单独的应用程序来运行.ModSecuri ...

  9. ModSecurity的规则

    一.ModSecurity的规则 基本格式 SecRule VARIABLES OPERATOR ACTIONS SecRule:ModSecurity主要的指令,用于创建安全规则. VARIABLE ...

随机推荐

  1. POJ3083——Children of the Candy Corn(DFS+BFS)

    Children of the Candy Corn DescriptionThe cornfield maze is a popular Halloween treat. Visitors are ...

  2. VLAN是什么

    VLAN是什么?VLAN,是英文Virtual Local Area Network的缩写,中文名为"虚拟局域网", VLAN是一种将局域网(LAN)设备从逻辑上划分(注意,不是从 ...

  3. Subversion安装和使用

    Subversion(SVN)是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.SVN分为客户端和服务器端,一般服务器端安装在服务器上,我们开发者用的都是客户端.TortoiseSVN是 ...

  4. 使用Mysql命令一次性备份多个数据库(所有数据库)

    通过CMD命令窗口 1.找到Mysql的安装目录\mysql\BIN目录 2. 输入mysqldump --all-databases -h127.0.0.1 -uroot -p123456 > ...

  5. world符号大全

    ■特殊符号:·⊙①⊕◎Θ⊙●○¤㊣㈱@の■□★☆◆◇◣◢ ◤◥▲△▼▽⊿◢ ▂ ▃ ▄ ▅ ▆ ▇ █ ▉ ▊▋▌▍▎▏■ ▓ 回 □ 〓≡↑↓→←↘↙♀♂┇┅|$ @ * & # ※ 卍 卐 ...

  6. 14条建议,使你的IT职业生涯更上一层楼

    摘要:升值为企业IT部门的领导者,是大部分IT技术人员职业生涯的最终追求.但从一般大众中脱颖而出,并非易事.仅仅把本职工作干好远远不够,还需要IT技术人员展示出投身于技术发展的奉献精神及伴随技术发展而 ...

  7. hdu4745Two Rabbits(dp)

    链接 哎..比赛中一下想到了公共子序 之后思维就被局限了 一直在这附近徘徊 想着怎么优化 怎么预处理.. 观看了众多神牛的代码 ..以前觉得自己能写出个记忆化的最长回文长度 还挺高兴的...现在觉得好 ...

  8. 【App FrameWork】页面之间的参数传递

    若应用中有多个页面,这时2个页面之间可能需要进行参数传递.那么如何来实现呢? 首先想到的就是URL参数传递的方式,如:在panel里设置属性 data-defer="Pages/Shake. ...

  9. SPOJ DQUERY:D-query

    主席树/树状数组.给一个区间,多次询问[l,r]内有多少个不重复的元素.每个前缀都建线段树,询问直接r的[l,r]就可以了.(似乎对主席树有一点了解了?...话说spoj好高级的样子... #incl ...

  10. PostgreSql与sqlserver对比杂记

    PostgreSql与MSSqlServer区别 增删查改没有语法一样. 排序Group Having 聚集函数使用一样 联结查询 ON 子句是最常见的连接条件的类型:它接收一个和 WHERE 子句相 ...