ModSecurity 未检测到 DVWA 上的 DDoS 攻击

ModSecurity not detecting DDoS attack on DVWA

我的 虚拟机 安装了 Ubuntu 20.04。在其中,我将 Apache2 web server as a WAF 与使用 OWASP 规则的 ModSecurity 2.9.3 模块一起使用,它正在侦听端口 80 和 443。

然后我安装了 XAMPP 以在其中使用 DVWA application。由于 XAMPP 中的 Apache Web 服务器无法侦听 Apache2 的相同端口(会发生冲突),Apache Web 服务器正在侦听 8012 的 HTTP 和 4431 的 HTTPS。

我完成了使 DVWA 请求通过 WAF 并使用 VirtualHosts 到达应用程序的过程。目前一切正常。 项目涉及对WAF进行恶意攻击的测试,它对大多数攻击都有效,ModSecurity检测并阻止SQL 注入,XSS,FLI,RFI等等,但是当我测试DDoS攻击时,它检测到它是一个SCANNER攻击,我不知道为什么(然后它阻止了攻击)。

我用 WFuzz 和 Hydra 测试了 DDoS 攻击,试图猜测 DVWA 特定页面中管理员的密码。 对于 WFuzz,我使用了这个命令:

wfuzz -c -w ~/SecLists/Passwords/probable-v2-top207.txt -b 'security=low;
PHPSESSID=cookieSession' 'http://localhost/dvwa/vulnerabilities/brute/
?username=admin&password=FUZZ&Login=Login'

Wfuzz 开始发送立即被阻止的请求(错误 443),并且在 Apache2 的日志错误文件中,我收到一些与此类攻击有关的消息(+ 与 ModSec 所做的相关的其他消息):

[Thu Apr 07 09:50:33.960952 2022] [:error] [pid 3803:tid 140532596565760] 
[client 127.0.0.1:47826] [client 127.0.0.1] ModSecurity: Warning. Match of "rx 
^(?:urlgrabber/[0-9\\.]+ yum/[0-9\\.]+|mozilla/[0-9\\.]+ ecairn-grabber/[0-9\\.]+
 \\(\\+http://ecairn.com/grabber\\))$" against "REQUEST_HEADERS:User-Agent" 
required. [file "/usr/share/modsecurity-crs/rules/REQUEST-913-SCANNER-DETECTION.conf"]
 [line "55"] [id "913100"] [msg "Found User-Agent associated with security scanner"] 
[data "Matched Data: Wfuzz found within REQUEST_HEADERS:User-Agent: Wfuzz/2.4.5"] 
[severity "CRITICAL"] [ver "OWASP_CRS/3.4.0-dev"] [tag "application-multi"] [tag 
"language-multi"] [tag "platform-multi"] [tag "attack-reputation-scanner"] [tag 
"paranoia-level/1"] [tag "OWASP_CRS"] [tag "capec/1000/118/224/541/310"] [tag 
"PCI/6.5.10"] [hostname "localhost"] [uri "/dvwa/vulnerabilities/brute/"] [unique_id 
"Yk6XyWgIm0NzeaCPwEBVrAAAAE0"]

起初我不知道为什么检测与SCANNER攻击有关。来自

[msg“找到与安全扫描器关联的用户代理”][数据“匹配数据:在 REQUEST_HEADERS:User-Agent 中找到的 Wfuzz:Wfuzz/2.4.5”]

我认为问题与用户代理有关:Wfuzz/2.4.5.So 我尝试了自定义用户代理:

wfuzz -c -w ~/SecLists/Passwords/probable-v2-top207.txt -b 'security=low;
PHPSESSID=cookieSession' -H 'User-Agent:Mozilla/5.0 (X11; Ubuntu; Linux
 x86_64; rv:98.0) Gecko/20100101 Firefox/98.0' 'http://localhost/dvwa/vulnerabilities
/brute/?username=admin&password=FUZZ&Login=Login'

但是这一次,DVWA 收到了请求(错误 200),但即使在大约 100 个请求之后,ModSecurity 也没有检测到 DDoS 攻击(我没有收到 443 错误),即使“我”正在执行应用程序中有很多请求。使用 Hydra 我得到基本相同的结果。任何 suggestions/help 非常感谢,这不是生活问题,因为我可以从项目中删除这部分,但我想知道什么不起作用。我一直在尝试查看 OWASP 规则文件,但我一无所获,基本上网络上的每个人都说没有人应该 messing/editing 这些规则。

我的目标是:

After ModSecurity detects 20 tries, it blocks the upcoming requests, sending back to the attacker 443 error.

OWASP ModSecurity 核心规则集值班开发人员 在这里。首先要注意的是,ModSecurity 2.9.3 版已经很旧了(2018 年!)。 当前 v2 版本为 2.9.5 版,其中包含重要的安全性和错误修复。您应该认真考虑将最新版本用于私有沙箱之外的任何内容。

第二点要注意,OWASP 核心规则集 (CRS) 3.4 版是我们的开发分支。它处于 重度开发 中,并且现在正在 彻底 改变(甚至就在本周)。您可能需要使用我们最新的官方版本,即版本 3.3.2(请参阅 https://github.com/coreruleset/coreruleset/releases/tag/v3.3.2)。

Wfuzz 确实被列为扫描器(您可以在文件 rules/scanners-user-agents.data 中找到它)。 CRS 规则 913100 检查 User-Agent headers 请求并将它们与 scanners-user-agents.data 的内容进行比较。这就是为什么您会看到包含“找到 User-Agent 与安全扫描器相关联”的日志行:“Wfuzz”的存在导致该规则匹配。如果您有兴趣,可以在文件 rules/REQUEST-913-SCANNER-DETECTION.conf 中找到该规则。

ModSecurity 不是 旨在防止 (D)DoS 攻击。可以让它这样做,但它并不擅长。事实上,就在几天前,我们从 CRS v3.4/dev 分支中删除了 DoS 功能(就像我说的,dev 分支正在我们说话时发生根本性变化!) .有关此主题的说明,请参阅 https://github.com/coreruleset/dos-protection-plugin-modsecurity-v2#plugin-expectations-suitability-and-scale

如果您真的想要测试 DoS 规则,请查看 CRS 3.3.2 版本,它仍然包含我们的 DoS 规则作为标准(在文件 rules/REQUEST-912-DOS-PROTECTION.conf).在主配置文件crs-setup.conf中找到“Anti-Automation / DoS Protection”部分,配置DoS规则以供使用。网上还有博客文章和教程,介绍了如何为 ModSecurity 编写您自己的 DoS 保护规则,类似于您所描述的内容(例如“检测 20 个请求,然后阻止进一步的请求”)。它只需要利用 ModSecurity 的持久性 collections 机制来存储请求之间的状态信息(例如 运行 计数“此 IP 地址发送了多少个请求?”)。

但是,重申一下:默认情况下,ModSecurity 或 OWASP CRS 都不会阻止 DoS 攻击。

祝你项目顺利!