本文记述了一位海外安全研究员如何从一个看似超范围的简单漏洞入手,在遭遇强力WAF拦截后,潜心钻研两个半月,最终将其成功升级为9.3分高危反射型XSS漏洞的完整过程。
在漏洞挖掘中,耐心是最宝贵的品质。有时发现的漏洞本身可能并无直接利用价值,但深入的探索却能将其转化为实际威胁。下文将详细讲述这位研究员如何凭借一个简单却超出常规接收范围的漏洞起步,被严密的WAF拦截后,通过学习和掌握新技能,最终将其提升至高危攻击级别的完整历程。

第一章:超范围的漏洞与WAF的铜墙铁壁
故事始于十二月中旬,这位研究员在某政府部门的漏洞披露项目中进行探测。在对某接口测试时,他发现 q.LIKE 参数会将输入内容直接回显到页面。
简单测试后确认可实现HTML注入,但存在一个关键限制:项目规则明确指出,HTML注入属于“超出漏洞接收范围”。要想提交有效的漏洞报告,必须将其转化为有效的XSS攻击。
研究员尝试直接输入简单的弹窗代码,结果被立即拦截。目标站点部署了防护力度极强的AWS WAF,更棘手的是,该WAF带有严格的封锁机制。每次检测到恶意载荷,都会将攻击者IP封锁五分钟。当时研究员还未掌握IP轮换技巧,手动测试配合五分钟封锁,根本无法正常开展后续工作。
研究一度陷入僵局,但他并未关闭那个测试页面,而是将其保留在浏览器中,转而开始系统地学习新技术。
第二章:两个半月的沉淀与能力飞跃
在接下来的两个半月里,那个测试页面一直保持打开状态。这段时间里,他专注于学习,深入研究高阶XSS利用技巧,更重要的是,学会了在Burp Suite中配置IP轮换功能。
启用IP轮换后,WAF的五分钟封锁不再构成障碍,他准备重新对目标进行测试。
第三章:从PortSwigger学习笔记中汲取的测试方法
研究员按照从PortSwigger网络安全学院学到的方法,分步对WAF进行测试。
步骤一:HTML标签模糊测试。首先需要确定WAF允许哪些标签。他将请求发送到Burp Intruder,使用HTML标签列表进行模糊测试。WAF规则非常严格,但唯独允许

几乎所有事件处理器都被拦截,但有一个事件处理器返回了200 OK:onwebkitpresentationmodechanged。WAF开发人员拦截了常规事件处理器,却遗漏了这个WebKit内核专属的事件。
第四章:最终的绕过方案(字符串拼接)
研究员已经拿到可用的
但WAF仍在检测代码内容,直接编写window.location或javascript:alert(1)都会被拦截。为绕过检测,他使用字符串拼接技巧:将可能被拦截的关键词拆分成小段,使WAF无法正常识别。
不直接写window.location,而是写成:window[‘loca’+’tion’]。
为了让载荷完全避开WAF检测,研究员还使用了window.name技巧。

最终攻击链如下:构造恶意HTML页面,并设置 window.name = "javascript:alert(document.domain)",该页面将诱导受害者跳转至存在漏洞的站点。注入后的载荷大致如下:...
第五章:成果与验证
研究员将完整报告提交到漏洞平台,研判团队确认该WAF绕过方案有效,将漏洞评定为高危级别并予以收录。

经验总结:如果发现某个漏洞不在接收范围内,不要轻易放弃。遇到WAF拦截时,不妨暂停测试,学习新技能,再以更强的状态回来。永远不要关闭那个关键的测试页面!
