WAF-Bypass之SQL注入绕过思路总结
架构层面绕过WAF(针对云WAF)寻找真实IP(源站)绕过如果流量都没有经过WAF,WAF当然无法拦截攻击请求。当前多数云WAF架构,例如百度云加速、阿里云盾等,通过更改DNS解析,把流量引入WAF集群,流量经过检测后转发请求到源站。如图,dict.com接入接入WAF后,dict.com的DNS解析结果指向WAF集群,用户的请求将发送给WAF集群,WAF集群经过检测认为非攻击请求再转发给源站。
绕过云WAF寻找真实IP与绕过CDN寻找真实IP的方法类似,可以查看这篇文章:
https://plumeria.ltd/post/efd52af7.html#CDN%E7%9A%84%E7%BB%95%E8%BF%87
利用同网段绕过一些在云服务商的站点,同时使用云服务商提供的WAF服务。当流量不是通过DNS解析引流到WAF,流量必须经过WAF的检测,这是不能通过发行源站进行绕过。可以考虑在云服务商买一台VPS,通过VPS攻击目标站点,因为流量是局域网,可能不经过WAF检测,实现绕过。能不能成功,关键在于云服务商的网络配置。
利用边界漏洞绕过如果未能发现源站IP,可以尝试寻找子站的SSR ...
WAF-Bypass之SQL注入绕过阿里云盾
实验环境实验靶场靶场:DVWA(low级别)
数据库:MySQL 5.7.26
Web脚本:PHP 7.3.4
WAF:阿里云Web应用防火墙
这里使用的是测试靶场环境,正式的环境是否存在还需进一步的测试。
注:这里配置的是默认的中等规则组。假如WAF的规则过于严格,则会对业务的连续性产生影响,造成误报;假如WAF的规则过于宽松,则会被轻易绕过,产生漏报。做到二者之间的平衡是判断一款WAF是否好坏的一个重要标准。
Emoji字符绕过这是一个有意思的案例,并且是当时影响了安全宝、阿里云盾的姿势,而且现在测试阿里云盾依然有效。
绕过的根本原理还有待商榷,这里只是提供绕过的思路。
绕过原理规则缺陷/特性:emoji的宽字节特性且mysql支持emoji的存储
emoji是一串unicode字集组成,一个emoji图标可以占2、4、7个字节。具体可以查看这篇文章:
https://www.jianshu.com/p/32a95a4fc542
Emoji表情搜索:https://emojipedia.org/
如图,一个😄字符占4个字节长度
既然在查询的时候%23会忽略掉后面的 ...
WAF-Bypass之SQL注入绕过宝塔
实验环境实验靶场靶场:DVWA(low级别)
数据库:MySQL 5.6.50
Web脚本:PHP 5.6.40
WAF:宝塔Linux面板 v7.6.0企业版-Apache防火墙
%00截断绕过绕过原理规则缺陷/特性:%00时会被认为读取已结束
在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留。
%00截断是上传漏洞中常用的一个非常经典的姿势,在SQL注入中,也可以用来Bypass。在WAF层,接收参数id后,遇到%00截断,只获取到 id=1,无法获取到后面的有害参数输入。
注:宝塔的规则也写得非常严格,单从规则的角度来看无法完美地实现绕过,且Apache也不像IIS,能利用的协议特性较少,暂时只这发现这一种绕过思路。
参考资料
Bypass 护卫神SQL注入防御(多姿势) - Bypass - 博客园 (cnblogs.com)
00截断原理分析_小水池-CSDN博客_00截断
WAF-Bypass之SQL注入绕过D盾
SQLServer特性空格可以由其它字符替代
select id,contents,time from news where news_id=1①union②select③1,2,db_name()④from⑤admin
位置①
可以利用其它控制字符替换空格:%01~%0F、%11~%1F
可以利用注释符号:/**/、—+a%0d%0a
可利用数学运算符以及数据类型:news_id=1.0,news_id=1e0,news_id=1-1
位置②
可以利用其它控制字符替换空格:%01~%0F、%11~%1F
可以利用注释符号:/**/、—+a%0d%0a
可以利用加号+替换空格:union+select
位置③
可以利用其它控制字符替换空格:%01~%0F、%11~%1F
可以利用注释符号:/**/、—+a%0d%0a
可利用数学运算符:+、-、~、. (注:其中-、~、.号必须是select查询的第一个字段的数据类型为数字型才能使用)
可以利用小括号()替换空格:select(1),2,db_name()
位置④
可以利用其它控制字符替换空格:%01~%0F、% ...
WAF-Bypass之SQL注入绕过云锁
Bypass云锁MySQL注入MySQL特性空格可以由其它字符替代
select id,contents,time from news where news_id=1①union②select③1,2,username④from⑤admin
位置①
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23test%0d%0a、 —+a%0d%0a
可以利用数学运算以及数据类型:news_id=1.0,news_id=1E0,news_id=\N
位置②
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23test%0d%0a、 —+a%0d%0a
可以利用括号:union(select 1,2)
位置③
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23test%0d%0a、 —+a%0d%0a
可以利用其它符号:+ 、- 、 ~ 、!、@
...
WAF-Bypass之SQL注入绕过安全狗
Bypass安全狗MySQL注入MySQL特性空格可以由其它字符替代
select id,contents,time from news where news_id=1①union②select③1,2,username④from⑤admin
位置①
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23est%0d%0a、 —+a%0d%0a
可以利用数学运算以及数据类型:news_id=1.0,news_id=1E0,news_id=\N
位置②
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23test%0d%0a、 —+a%0d%0a
可以利用括号:union(select 1,2)
位置③
可以利用其它控制字符替换空格:%09,%0a,%0b,%0c,%0d,%20,%a0
可以利用注释符号替换空格:/**/、%23test%0d%0a、 —+a%0d%0a
可以利用其它符号:+ 、- 、 ~ 、!、@
...
WAF-Bypass之WAF介绍与分析
WAF的介绍Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
WAF的工作原理WAF的处理流程大致可分为四部分:预处理、规则检测、处理模块、日志记录。
预处理预处理阶段首先在接收到数据请求流量时会先判断是否为HTTP/HTTPS请求,之后会查看此URL请求是否在白名单之内,如果该URL请求在白名单列表里,直接交给后端Web服务器进行响应处理,对于不在白名单之内的对数据包解析后进入到规则检测部分。
规则检测每一种WAF产品都有自己独特的检测规则体系,解析后的数据包会进入到检测体系中进行规则匹配,检查该数据请求是否符合规则,识别出恶意攻击行为。
处理模块针对不同的检测结果,处理模块会做出不同的安全防御动作,如果符合规则则交给后端Web服务器进行响应处理,对于不符合规则的请求会执行相关的阻断、记录、告警处理。
日志模块WAF在处理的过程中也会将拦截处理的日志记录下来,方便用户在后续中可 ...
PostgreSQL数据库注入攻击方式
PostgreSQL数据库的基本知识PostgreSQL数据库介绍PostgreSQL 是一个免费的对象-关系数据库服务器 (ORDBMS),在灵活的 BSD 许可证下发行。PostgreSQL 的 Slogan 是 “世界上最先进的开源关系型数据库”。PostgerSQL也简称Postgres。
Postgres在国内并不常见,但在国外的流行程度却不亚于MySQL。
基本语法Postgres的基本语法与MySQL类似,如果对手工注入或SQL语法有较多了解不会有任何困难。
堆叠查询与代码块
Postgres 支持多行查询,语句间的分隔符为分号;,同时也只有分号是合法的分隔符。
如果多行执行的语句中有超过一个语句会返回结果集,在命令行或者C#查询会执行前一个,在PHP中查询会执行后一个(虽然我也不知道是什么原理,但查询结果就是这样~)。
Postgres 支持以 begin;开始,以 end;结束的代码块,但代码块内执行的语句不会有任何返回结果。同时如果代码块之前一条语句会返回结果,则先前语句返回的结果集会被覆盖(即不返回任何结果)。
Postgres 支持以 begin;开始,以 ...
Oracle数据库注入攻击方式
Oracle数据库的基本知识Oracle数据库介绍Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
Oracle对于MYSQL、MSSQL来说意味着更大的数据量,更大的权限。
Oracle服务默认端口:1521
Oracle权限分类权限是用户对一项功能的执行权力。在Oracle中,根据系统管理方式不同,将Oracle权限分为系统权限与实体权限两类。系统权限是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。而实体权限是指用户对具体的模式实体(schema)所拥有的权限。
系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
系统权限管理—— 系统权限分类 ——
DBA: 拥有全部特权 ...
SQLServer数据库注入攻击方式
SQLServer数据库基本知识SQLServer数据库介绍SQLServer是美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。SQLServer数据库也称MSSQL数据库。
其主要特点如下:
高性能设计,可充分利用WindowsNT的优势
系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
强壮的事务处理功能,采用各种方法保证数据的完整性。
支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
SQLServer服务默认端口:1433
三个权限级别
sa权限:数据库操作,文件管理,命令执行,注册表读取等。SQLServer数据库的最高权限。相当于系统system权限。
db权限:文件管理,数据库操作 ...
