1. 项目概述:当常规扫描撞上WAF这堵墙
做Web安全测试或者渗透测试的朋友,对目录扫描这个环节肯定不陌生。这就像你到一个新房子,总得先看看有哪些房间,门是开是关,对吧?但现在的网络环境,尤其是稍微有点规模的网站,门口基本都站着一位“保安”——Web应用防火墙,也就是我们常说的WAF。它可不是摆设,你拿着 dirsearch 、 gobuster 这类扫描器,用默认的字典和参数“哐哐”一顿猛扫,大概率会触发它的规则,轻则把你的IP拉黑,重则直接阻断所有请求,让你连正常的探测都做不下去。
我遇到过太多次这样的情况了:一个目标,用 dirsearch 跑起来,刚开始还挺顺利,突然之间,所有请求都返回403、429(请求过多),甚至是自定义的拦截页面。这时候你就知道,WAF已经盯上你了。所以,今天我想聊的不是 dirsearch 怎么用,这个网上教程一大堆。我想分享的,是当 dirsearch 这个“开锁匠”遇到WAF这个“智能门禁”时,我们如何通过调整策略、变换手法,让它既能完成工作,又不至于被立刻“请出去”。这五个实战技巧,都是我在真实测试环境中一次次碰壁、调整、再尝试总结出来的,希望能帮你绕过那些烦人的封锁,更高效、更隐蔽地完成目录枚举任务。
2. 核心思路:从“暴力破解”到“策略渗透”
很多人把目录扫描等同于“暴力破解”,认为就是拼字典大小和请求速度。在WAF面前,这种思路是行不通的。WAF的核心逻辑是识别异常流量模式,比如短时间内来自同一IP的大量、相似的请求。因此,我们的核心思路必须从“力大砖飞”转变为“策略渗透”。核心目标不是“打败”WAF(这通常很难),而是“绕过”或“欺骗”它,让我们的扫描流量看起来尽可能像正常用户的浏览行为。
这涉及到几个层面的调整:
- 请求层面 :降低请求频率,增加随机性,模仿人类点击的间隔和顺序。
- 内容层面 :修改请求头,使用更常见的User-Agent,甚至模拟特定浏览器或设备的指纹。
- 路径层面 :对扫描的路径(字典)进行预处理,避免使用那些过于明显、一打就响的敏感路径名。
- 协议层面 :利用HTTPS、HTTP/2的特性,或者尝试不同的编码方式,干扰WAF的解析。
- 战术层面 :结合其他信息,先找到WAF的盲点或薄弱环节,再进行针对性扫描。
dirsearch 本身是一个强大的工具,它提供了丰富的参数来支持这些策略调整。我们接下来的技巧,就是围绕如何组合运用这些参数,以及配合一些外部技巧,来达成我们的目标。
2.1 技巧一:精细化速率控制与延迟策略
这是最基础也最重要的一环。 dirsearch 的 -t 参数(线程数)和 --delay 参数(请求延迟)是你的首要调节阀。
为什么默认参数容易触发WAF? 默认情况下, dirsearch 可能会使用20-30个甚至更多的线程并发请求。想象一下,一个真实用户会在1秒内点击几十个不同的、看似随机的链接吗?显然不会。这种高并发、无延迟的模式是WAF流量模型中最典型的异常行为。
实操配置: 我个人的经验是,针对有WAF防护的目标,线程数 ( -t ) 最好控制在 3到10 之间。是的,这很慢,但隐蔽性大大提升。
python3 dirsearch.py -u https://target.com -t 5
仅仅降低线程数还不够,因为即使5个线程,它们也是几乎同时发起的。我们需要在请求之间加入随机延迟,模拟人类的阅读和点击思考时间。 dirsearch 的 --delay 参数可以设置固定延迟,但更好的方式是使用 --random-delay 。
python3 dirsearch.py -u https://target.com -t 5 --random-delay 1.5-3.5
这个命令表示每个请求前,会随机等待1.5到3.5秒。这样,整个扫描流量在时间轴上就变得稀疏而随机,极大地降低了被规则匹配的概率。
注意 :
--delay和--random-delay不能同时使用。--random-delay的


400

被折叠的 条评论
为什么被折叠?



