绕WAF的经验总结与技巧

news2025/1/12 18:20:07

在现代渗透测试中,WAF(Web应用防火墙)已成为阻挡黑客入侵的主要防御机制之一。然而,尽管WAF可以有效地防止许多常见的攻击,但它也并非无懈可击,WAF的设计目标在机制上决定了其不可能是完美的。


一、绕WAF的原理

WAF的设计目标是拦截恶意攻击,同时确保业务正常运行,这就决定了其检测方式的局限性。大部分WAF都采用黑名单方式检测恶意请求,且通常会依赖预设的规则和模式进行拦截。这使得WAF在一些情况下仍易被绕过。

绕过WAF的本质就在于利用WAF检测的缺陷以及WAF与HTTP协议解析的差异。通过灵活运用各种语言的冷门特性,攻击者可以巧妙地绕过WAF的检测机制。


二、常见漏洞绕WAF的可行性比较

在渗透测试中,有些漏洞尤其容易受到WAF的拦截,而另一些则能够通过特定的技巧被绕过。以下是对几种常见漏洞绕WAF的可行性分析:

1. SSRF(服务器端请求伪造)

SSRF攻击通常会被WAF严格防范,大多数WAF能够有效拦截此类攻击。一般来说,攻击者会尝试多种变种,比如使用不同的协议或IP地址格式(如http://127.0.0.1http://localhost的不同),但是大部分WAF能够做到精确过滤,因此绕过的难度较大。

2. XXE(外部实体注入)

XXE攻击依赖于XML解析器的配置不当,WAF对XXE的防护也通常较强。虽然可以尝试使用一些绕过方式,如UTF-7UTF-16编码进行绕过,但实际成功率较低。这是因为主流WAF基本上都能识别不同的编码。

3. 文件上传绕过

文件上传绕过是一个经典的渗透测试场景。关于这一点,安全客有篇文章已经有非常详细的分析,建议读者参考其内容。常见的绕过方式包括伪造文件扩展名、修改文件头、利用特殊字符等。

4. SQL注入绕过

SQL注入是最常见的攻击方式之一,尽管WAF通常能够识别常见的SQL注入攻击模式,但针对SQL注入的多种变形依然可以绕过一些防护机制。因此,SQL注入绕过是渗透测试中的一项重点。以下部分将重点介绍SQL注入的常见绕过技巧。

综上所述,SQL注入和文件上传绕过是渗透测试中最常见的绕过场景,由于这两种攻击方法的变种非常多,因此WAF很难做到百分百的防护。


三、SQL注入绕过技巧

1. 注释内容绕过

WAF通常会检查请求中的注释符号,如/**//*!*/--以及%23#符号)。然而,许多WAF仅拦截前两种常见的注释符号,对于其他形式的注释识别较弱。因此,攻击者可以尝试通过构造特殊的注释内容绕过WAF。例如,可以利用%0A(换行符)来制造不易识别的注释:

%23/*%0Aunion%23%*/0Aselect

这里的%23代表#符号(注释符),%0A代表换行符,巧妙地将注释嵌入SQL语句中,从而绕过WAF的检查。

2. 利用非空白符绕过

在SQL注入中,特殊字符(如%00%01%02等)能够用作SQL语句中的非空白符。不同数据库对这些字符的处理方式有所不同,攻击者可以通过这些字符绕过一些WAF的检测。常见的应用场景如下:

  • Oracle中,%00可以作为空白符。
  • MSSQL中,%01-%08等字符可以当作空白符。
  • Linux MySQL中,%A0可以作为空白符。

利用这些字符,攻击者可以让WAF无法正确解析SQL语句。

3. HTTP传输方式绕过

分块传输(chunked transfer encoding)和脏数据是绕WAF的两种经典但十分有效的手段,但这两种方法仅限于POST请求中使用。

4. SQL关键词变形

常见的SQL关键词(如union select fromdatabase()等)是WAF重点防护的对象。然而,攻击者可以通过对这些关键词进行变形来绕过WAF。例如:

  • database/**/(%0A)可以绕过一些WAF的检测。
  • union前加上0e0,如0e0union,通过无效字符扰乱WAF的识别。
  • select后添加变形字符,如select-1select@1select{x%201}等,来误导WAF。
  • from前插入特殊字符,如select%201,\Nfrom,进一步干扰WAF的检测。

通过灵活运用SQL语法和字符编码,可以有效地绕过WAF的拦截。

5. 同义语替代

针对常见的SQL函数(如database()),可以尝试使用同义语绕过,这就要靠大家对语言特性的掌握程度和平时积累的冷门函数了。

如果尝试的绕过方法仍然无效,可以考虑放弃当前注入点,寻找其他绕过的机会。


四、总结与建议

绕过WAF的过程需要详细分析WAF的行为,并找出其防御漏洞。通过巧妙地利用注释符、分块传输、非空白符、SQL关键词变形等技巧,渗透测试人员可以绕过WAF的部分防护。然而,如果WAF的检测机制非常严格,甚至能拦截如aaaaaaunionaaaaaaaaselectaaa这样的非常规SQL注入形式,此时可能需要考虑放弃该注入点,寻找其他攻击路径。

需要特别注意的是,不同WAF对不同漏洞的拦截力度不同,如宝塔WAF在拦截SQL注入时就严格,导致无法绕过,而遇到安全狗时就值得一试。这提醒我们在渗透测试中应不断调整绕过策略,灵活应对不同类型的WAF。

希望本文的绕过技巧能够为渗透测试人员提供帮助,提升攻击成功率。在实际测试中,我们应根据不同WAF的特点,选择适合的绕过方法,并结合环境灵活应对。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HOW - Form 表单 label 和 wrapper 对齐场景

一、背景 在日常使用 表单 时&#xff0c;我们一般有如下布局&#xff1a; 可以通过 Form 表单提供的配置直接设置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"输入框"name"…

01 Oracle自学环境搭建(Windows系统)

1 Oracle12C安装 1.1 下载 官网地址&#xff1a;https://www.oracle.com/ 进入官网→Resource→Customer Downloads 如果没有登录&#xff0c;会提示登录后后才能下载 选择适合自己的版本&#xff08;我电脑是Windows系统 64位&#xff09; 选择需要的安装包进行下载 双击下载…

vue el-table 数据变化后,高度渲染问题

场景&#xff1a;el-table设置了height属性&#xff0c;但是切换查询条件后再次点击查询重新获取data时&#xff0c;el-table渲染的高度会有问题&#xff0c;滚动区域变矮了。 解决办法&#xff1a;使用doLayout方法‌&#xff0c;在表格数据渲染后调用doLayout方法可以重新布局…

vue3+ts+element-plus 输入框el-input设置背景颜色

普通情况&#xff1a; 组件内容&#xff1a; <el-input v-model"applyBasicInfo.outerApplyId"/> 样式设置&#xff1a; ::v-deep .el-input__wrapper {background-color: pink; }// 也可以这样设置 ::v-deep(.el-input__wrapper) {background-color: pink…

【漫话机器学习系列】044.热点对特性的影响(Effect Of One Hot On Feature Importance)

热点对特性的重要性影响&#xff08;Effect of One-Hot Encoding on Feature Importance&#xff09; 一热编码&#xff08;One-Hot Encoding&#xff09; 是处理类别型数据的常用方法&#xff0c;将每个类别特征转换为一组独立的二进制特征。这种方法在提高模型处理非数值数据…

使用MATLAB正则表达式从文本文件中提取数据

使用MATLAB正则表达式从文本文件中提取数据 使用Python正则表达式从文本文件中提取数据的代码请看这篇文章使用正则表达式读取文本数据【Python】-CSDN博客 文本数据格式 需要提取 V 后面的数据, 并绘制出曲线. index 1V 0.000000W 0.000000E_theta 0.000000UINV 0.0…

JAVA:Spring Boot 集成 JWT 实现身份验证的技术指南

1、简述 在现代Web开发中&#xff0c;安全性尤为重要。为了确保用户的身份&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为一种轻量级且无状态的身份验证方案&#xff0c;广泛应用于微服务和分布式系统中。本篇博客将讲解如何在Spring Boot 中集成JWT实现身份验证…

PHP进阶-在Ubuntu上搭建LAMP环境教程

本文将为您提供一个在Ubuntu服务器上搭建LAMP&#xff08;Linux, Apache, MySQL, PHP&#xff09;环境的完整指南。通过本文&#xff0c;您将学习如何安装和配置Apache、MySQL、PHP&#xff0c;并将您的PHP项目部署到服务器上。本文适用于Ubuntu 20.04及更高版本。 一、系统更新…

【算法】一阶低通滤波

目录 1.背景 2.推导 2.1基础知识 2.2 公式推导 3.截止频率 3.怎么做 4.效果 1.背景 在电机的闭环过程中&#xff0c;无法避开的一点就是电流环&#xff0c;电流环需要采集电流数据&#xff0c;然后闭环输出。在电流环采集的过程中&#xff0c;数据会有很多高频噪声&#xf…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏&#xff0c;打开VBA开发工具录制宏,相当于excel自动写代码&#xff08;两个表格内容完全一致才可以&#xff09; 查看宏代码保持含有宏程序的文件xlsm后缀&#xff08;注意很容易有病毒&#xff09;宏文件安全设置 使…

获取IP地区

包 https://packagist.org/packages/geoip2/geoip2#v3.1.0 用composer加载包 composer require geoip2/geoip2 mmdb下载 https://github.com/P3TERX/GeoLite.mmdb?tabreadme-ov-file

嵌入式系统Linux实时化(二)Xenomai技术框架分析

Xenomai 是 Linux 内核的一个实时开发框架。它希望通过无缝地集成到Linux 环境中来给用户空间应用程序提供全面的、与接口无关的硬实时性能。Xenomai 项目始于2001年8月&#xff0c;作为一个自由软件项目&#xff0c;完全遵守GNU/Linux自由软件协议。2003 年它和RTAI项目合并推…

Docker Desktop 构建java8基础镜像jdk安装配置失效解决

Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像&#xff0c;前几天我使用Docker Desktop环境重新构建了一个…

【LeetCode】:删除回文子数组【困难】

class Solution { public:// 思考:能否用滚动数组进行优化int minimumMoves(vector<int>& arr) {// 定义状态dp[i][j]为i-j的最小步数int n arr.size();vector<vector<int>> dp(n, vector<int>(n, 1e9 7));// 可以把这 1 次理解为一种 最小操作单…

如何理解机器学习中的线性模型 ?

在机器学习中&#xff0c;线性模型是一类重要且基础的模型&#xff0c;它假设目标变量&#xff08;输出&#xff09;是输入变量&#xff08;特征&#xff09;的线性组合。线性模型的核心思想是通过优化模型的参数&#xff0c;使模型能够捕捉输入与输出之间的线性关系。以下是线…

golang常用标准库

输入与输出-fmt包时间与日期-time包命令行参数解析-flag包日志-log包IO操作-os包IO操作-bufio包与ioutil包strconv包模板-template包http包contextjson/xmlreflect反射官方标准库 输入与输出-fmt包 输入与输出 常用输出函数 Print、Printf、Println&#xff1a;直接输出内容 Sp…

STM32 I2C硬件配置库函数

单片机学习&#xff01; 目录 前言 一、I2C_DeInit函数 二、I2C_Init函数 三、I2C_StructInit函数 四、I2C_Cmd函数 五、I2C_GenerateSTART函数 六、I2C_GenerateSTOP函数 七、I2C_AcknowledgeConfig函数 八、I2C_SendData函数 九、I2C_ReceiveData函数 十、I2C_Sen…

sys.dm_exec_connections:查询与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息(客户端ip)

文章目录 引言I 基于dm_exec_connections查询客户端ip权限物理联接时间范围dm_exec_connections表see also: 监视SQL Server 内存使用量资源信号灯 DMV sys.dm_exec_query_resource_semaphores( 确定查询执行内存的等待)引言 查询历史数据库客户端ip应用场景: 安全分析缺乏…

plane开源的自托管项目

Plane 是一个开源的自托管项目规划解决方案&#xff0c;专注于问题管理、里程碑跟踪以及产品路线图的设计。作为一款开源软件&#xff0c;Plane 的代码托管在 GitHub 平台上&#xff0c;允许任何人查看和贡献代码。它为用户提供了便捷的项目创建与管理手段&#xff0c;并配备了…

高光谱相机的特点

光谱特性 高光谱分辨率&#xff1a;能将光谱范围分割成极窄的波段&#xff0c;光谱分辨率通常达到纳米级甚至亚纳米级&#xff0c;可精确捕捉到不同物质在细微光谱差异上的特征&#xff0c;比如可以区分不同种类的植被因叶绿素含量等差异而在光谱上的细微变化。 多波段探测&a…