zoukankan      html  css  js  c++  java
  • WAF绕过小结

    浏览器向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,浏览器还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

    大多数WAF都会较全面地检测来自GET请求的攻击,有选择地检测来自POST请求的攻击,而忽略来自请求头的攻击。

    WAF绕过原因:

    这里的绕过主要是针对采取模式匹配来识别攻击的WAF检测方法(其实大多数WAF的基本方法都是这个,引申到IDS,IPS,anti-virus等安全产品都是采取的这种方法)。

    采取模式匹配的检测方法会绕过的原因无外乎以下几种:

    1、HTTP协议解析漏洞 :WAF进行模式匹配的时候都是对HTTP协议变量进行匹配,攻击者构造异常的HTTP数据包导致不能正常提取变量,都不能进入到模式匹配阶段,自然而然就绕过了。

    2、模式匹配的先天不良:字符串匹配,无论是简单的正则匹配或者会配合一定的逻辑的匹配(比如对不同关键字进行加权操作,前后依赖关系判断)反正都逃不开模式两个字,而模式是固定的,就导致了各种侧漏。

    对于第2点,在云WAF上的问题最为严重,我们知道云WAF的用户类型是多样化的(不同的搭建技术:ASP/PHP/JSP,运行环境:Windows/Linux,访问方式:PC/Mobile),理想状态下,应该按站点类型精准投放防御规则,但是,基于站点自动建模(安全人员中缺乏数据分析师)是个“前沿”的技术活,而免费模式下是产生不了多大动力来投入精力的,所以现实是倾向于选择更通用的方式(放弃少数人)按危害优先级来定制规则。

    以上绕过原因衍生了以下的通用绕过方式。

    WAF绕过方式:

    1、参数污染

    2、URL重写(例如:http://localhost/uyg/id/123+or+1=1/tp/456)

    3、加密payload(例如:MD5、SHA-1、自定义加密)

    4、缓冲区溢出

    5、编码绕过

    6、特殊字符插入(%00)

    7、异常HTTP请求包(例如:超级大,不符合HTTP规范但被server容错的数据包)

    8、数据包分块传输方式Transfer-Encoding: chunked

    SQL注入绕过:

    1、 编码绕过:通过对SQL注入攻击payload进行unicode编码,十六进制编码,双URL编码来绕过检测规则。

    2、注释语句绕过:通过在SQL注入攻击payload中插入注释语句(内联注释)来绕过检测规则。

    3、大小写绕过:通过变化SQL注入攻击payload的大小写来绕过检测规则。

    4、类型转换绕过:使用hex, ascii, ord, char,chr,cast,convert等类型转换函数来变化特定字符来绕过检测规则,除了类型转换函数还有隐性类型转换的特征 (参考:http://danqingdani.blog.163.com/blog/static/186094195201331854938182/)。

    5、生僻的SQL关键字绕过。

    6、特殊的sql语法(例如: mysql . ~ ! + - 符号)

    7、关键字拆分。

    8、请求方式转换(将GET转变为POST,因为误报的问题POST的规则要远远比GET规则松)。

  • 相关阅读:
    mysql 查看数据库及表大小以及数据库扩容评估
    idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
    mybatis plus 中增删改查及Wrapper的使用
    mybatis plus 主键策略
    搭建 spring boot + mybatis plus 项目框架并进行调试
    jeecg datagrid重新指定数据源
    java 日志脱敏框架 sensitive-新版本0.0.2-深度拷贝,属性为对象和集合的
    java 实现敏感词(sensitive word)工具详解使用说明
    java 日志脱敏框架 sensitive,优雅的打印脱敏日志
    互联网公司OpenAPI链接
  • 原文地址:https://www.cnblogs.com/milantgh/p/4265653.html
Copyright © 2011-2022 走看看