所有请求都来自分布在德国和美国亚马逊 AWS 主机名中的十几个 IP 地址,但由于它们使用的查询术语与我们的业务并非完全无关(它们传递数字序列和奇怪的全名),我不得不考虑这是不是真的是攻击。
从表面上看,这似乎是一种典型的洪水攻击,使用代理服务器并在您的网络服务器上放置重复或锤击动作类型的请求,针对将导致最大搜索结果的搜索词,从而消耗尽可能多的 CPU 使用率数据库服务器。
序列号可能是一种缓存破坏练习,因为使用代理服务器的问题在于它们中的许多正在缓存给攻击者,攻击者希望每次发送都是您网络服务器上的实际请求。
例如 www.yoursite.com/?searchword=aeroplanes&randomfieldname=100001
虽然网络服务器将忽略 randomfieldname 因为它没有寻找它,但它会从 searchword 中获取值并应用请求。
然而,缓存代理将看到以下内容
www.yoursite.com/?searchword=aeroplanes&randomfieldname=100001
www.yoursite.com/?searchword=aeroplanes&randomfieldname=100002
www.yoursite.com/?searchword=aeroplanes&randomfieldname=100003
www.yoursite.com/?searchword=aeroplanes&randomfieldname=100004
等等
因此,即使搜索词没有更改,新请求也会始终将请求传递到您的服务器。
这是一个锤子攻击的例子。
但是,通常情况下,锤子工具是基本的,因为它们可能无法理解对合法请求的更高级验证。例如,经过验证的搜索请求可能意味着使用图像验证,或要求 cookie 响应,甚至要求查看浏览器理解 javascript 以执行有效的搜索请求。
尽管这些额外的安全检查对于合法的站点查看者来说可能很烦人,例如图像验证。
查看Cafe Counter Intelligence Soap CMS 类,了解作者如何使用会话和 javascript 的巧妙组合来要求查看浏览器在接受页面请求之前理解 js。然后启动一个请求计数器,如果请求过于频繁,则拒绝访问 IP 地址......即锤子攻击中经常出现的情况。
尽管该类是近十年前编写的,但其中的概念在今天与它们编写时一样有效,尽管它们需要更新到最新的 PHP 编码标准。