导语:许多WAF设备可以被伪造的请求欺骗,这些伪造的会被认为是自身正常的请求来处理,因为如果被判断有特定的头部存在,那么对于它来说就是可信的。
我曾经写了一篇关于Burp插件使用的技术的博文在这里。许多WAF设备可以被伪造的请求欺骗,这些伪造的会被认为是自身正常的请求来处理,因为如果被判断有特定的头部存在,那么对于它来说就是可信的。bypass方法的基础知识可以在HP博客文章中找到。
我一直在Burp中执行匹配/替换规则,以将这些头部自动添加到发送到受WAF保护的站点的请求。但是,这取决于能否创建一个可用的头并将其添加到活动扫描,中继器请求,入侵者请求的插件等等。我发现Fishnet Security的这篇文章真的让人思如泉涌。
首先,我在Python中实现了这个插件,因为这是一个简单易用的工具,我最近在一个项目中有用过这个插件。然后我做了一些关于如何把它作为Java扩展来提高效率的快速研究。
要使用此插件添加必要的头部,首先需要下载该插件的Python版本,插件的Java版本或Java源码,然后自己编译。插件文件下载成功后,启动Burp并导航到“Extender->扩展”,然后点击“添加”按钮。然后根据语言选择对应的版本,使用的Java版本就用Java的,使用,然后导航到扩展路径。配置应该如下所示:
该插件现在应该被加载并显示如下:
现在您需要导航到“选项 – >会话”,然后单击“会话处理规则”配置部分的“添加”按钮,如下所示:
给规则一个名称,然后点击“规则操作”部分中的“添加”按钮,然后选择“调用Burp扩展名”,如下所示:
您应该可以在下拉框中选择“bypassWAF”,如下所示:
单击“确定”,然后选择“范围”选项卡。启用您想要执行拓展范围插件的所有工具,然后设置范围。我喜欢为所有工具应用范围,并将范围限制在已添加到套件范围内的请求上,如下所示:
bypassWAF包含以下功能:
大多数的新功能是基于伊万·里斯蒂克的发现WAFbypass工作在这里和这里。每个功能的描述如下:
1.用户可以修改每个请求中发送的X-Origination-IP,X-Forwarded-For,X-Remote-IP,X-Remote-Addr头文件。这可能是我工具的最佳bypass技术。将WAF配置为信任自身(127.0.0.1)或上游代理设备(这是bypass目标)是不寻常的。2.“Content-Type”头可以在每个请求中保持不变,从所有请求中删除,或修改为每个请求的许多其他选项之一。一些WAF只会根据已知的内容类型对请求进行解码/评估,这个功能针对的是弱点。3.“主机”头也可以修改。配置不当的WAF可能被配置为仅基于此标题中找到的主机的正确FQDN来评估请求,这是该bypass目标。4.请求类型选项允许Burp用户仅使用“GET”或“POST”的给定请求方法上的剩余bypass技术,或将其应用于所有请求5.路径注入功能可以不修改请求,注入随机路径信息信息(/path/to/example.php/randomvalue?restofquery),或者注入随机路径参数(/path/to/example.php;randomparam=randomvalue? resetofquery)。这可以用来绕过依赖于路径信息的不好写的规则6.路径模糊功能将路径中的最后一个斜杠修改为随机值,或者默认情况下不执行任何操作。最后一个斜杠可以修改为许多值中的一个,在许多情况下,这会导致仍然有效的请求,但可能会绕过编写的依赖路径信息的WAF规则7.参数混淆特征是语言特定的。PHP将在每个参数的开始处丢弃一个+,但编写的WAF规则写入较差的特定参数名称,从而忽略起始于+的参数。类似地,ASP在每个参数的开始处丢弃一个%8.“设置配置”按钮可激活您选择的所有设置。
所有这些功能可以组合起来提供多个bypass选项。我打算至少添加以下功能到以后的版本:
1.HTTP参数污染 - 自动对GET / POST参数执行HPP攻击。2.HTTP请求走私 - 自动对每个请求执行HTTP请求走私攻击,其中将一个虚拟请求添加到开头,最后添加真实(走私)请求。
你可以在这里找到扩展。