操作步骤
Nmap 包含了一些脚本,用于测试 WAF 的存在。让我们在 vulnerable-vm 上尝试它们:
nmap -p 80,443 --script=http-waf-detect 192.168.56.102
好的,没检测到任何 WAF。所以这个服务器上没有 WAF。
现在,让我们在真正拥有防火墙的服务器上尝试相同命令。这里,我们会使用example.com,但是你可以在任何受保护的服务器上尝试它。
nmap -p 80,443 --script=http-waf-detect www.example.com
Imperva 是 Web 应用防火墙市场的主流品牌之一。就像我们这里看到的,有一个保护网站的设备。
这里是另一个 Nmap 脚本,可以帮助我们识别所使用的设备,并更加精确。脚本在下面:
nmap -p 80,443 --script=http-waf-fingerprint www.example.com
另一个 Kali Linux 自带的工具可以帮助我们检测和是被 WAF,它叫做waf00f。假设www.example.com是受 WAF 保护的站点:
wafw00f www.example.com
工作原理
WAF 检测的原理是通过发送特定请求到服务器,之后分析响应。例如,在http-waf-detect的例子中,它发送了一些基本的恶意封包,并对比响应,同时查找封包被阻拦、拒绝或检测到的标识。http-waf-fingerprint也一样,但是这个脚本也尝试拦截响应,并根据已知的不同 IDS 和 WAF 的模式对其分类。wafw00f也是这样。