简介
waf识别 Web 应用程序防火墙产品并对其进行指纹识别
该软件包可识别 Web 应用程序防火墙 (WAF) 并对其进行指纹识别产品使用以下逻辑:
- 发送正常的 HTTP请求并分析响应;这标识了一个 WAF 解决方案的数量。
- 如果不成功,它会发送一些(可能是恶意的) HTTP 请求并使用简单的逻辑来推断它是哪个 WAF。
- 如果这也不成功,它会分析之前的响应返回并使用另一种简单的算法来猜测 WAF 或安全性解决方案是积极响应攻击。
WAFW00F可以检测多种防火墙
Python 版本
WAFW00F 与 Python 2.x 和 3.x 两个版本完全兼容。然而,由于 Python 2.x 版本即将结束, 对该版本的支持很快就会被取消。
WAFW00F 目前与 Python 3.x (最好 >= 3.4)版本完全兼容/稳定。
操作系统
WAFW00F 已在主要 Linux 发行版(Arch、Debian、Ubuntu)、Windows 和 Mac 上进行了测试,并且按预期工作。
颜色
新的美丽的 ASCII 艺术是彩色的。在基于 Linux 的系统(以及 Windows 的 Linux 子系统)上,您会发现彩色输出。但是,Mac 和 Windows 不支持 ANSI 转义序列,因此输出在 Mac 和 Windows 上不会着色。但是您仍然可以在它们上完美地使用 WAFW00F。
依赖关系
WAFW00F 需要一些库才能高效运行。除了内置库之外,有些还需要通过安装 pip。
以下是 WAFW00F 引擎所需的依赖项:
- requests - 用于进行 HTTP 查询。
- pluginbase - 基于 python 项目的插件解析器。
WAFW00F 使用的其余 Python 库是预装 Python 3.x 解释器的标准库。
安装
从 PyPI 安装
先通过创建python虚拟环境并激活使用。不然可能报错。
#创建虚拟环境,命名为venv
python3 -m venv venv
#激活名为venv的虚拟环境空间
source venv/bin/activate
运行以下命令通过Pypi 包存储库进行安装
python3 -m pip install wafw00f
#或者
pip3 install wafw00f
运行以下命令出现这个界面就说明安装成功了。
wafw00f -h
输入以下命令可以取消激活虚拟空间。这样wafw00f就运行不了了。因为它是安装在虚拟空间里面的。
deactivate
Docker安装
首先克隆源码并进入目录,建议挂代理,不然可能克隆失败。
git clone https://github.com/EnableSecurity/wafw00f.git
cd wafw00f/
ls
开始通过docker安装,建议给docker挂代理。
sudo docker build . -t wafw00f
输入以下命令出现这个界面说明安装成功
sudo docker run --rm -it wafw00f -h
源码安装
注意:安装 wafw00f 时请小心不要破坏系统软件包。在需要时使用 venv。
克隆存储库,必要时挂代理:
git clone https://github.com/enablesecurity/wafw00f.git
进入wafw00f目录并开始安装
#进入wafw00f目录
cd wafw00f/
#查看当前目录的文件
ls
设置虚拟空间并激活
python3 -m venv venv
source venv/bin/activate
开始安装
python3 setup.py install
输入以下命令,出现这个界面即安装成功。
wafw00f --help
APT包管理器安装
Kali Linux 默认安装好wafw00f工具了。也可以通过以下命令进行安装
sudo apt install wafw00f
使用
1. -h, --help
显示此帮助消息并退出
wafw00f -h
2. 常规使用
用法:wafw00f url1 [url2 [url3 ... ]]
示例:wafw00f https://www.bing.com/
3. -v, --verbose
启用详细程度,多个 -v 选项可增加详细程度
wafw00f https://example.com/ -v
4. -a, --findall
查找与签名匹配的所有 WAF,不要停止对第一个 WAF 的测试
wafw00f https://example.com/ -a
5. -r, --noredirect
不遵循 3xx 响应给出的重定向
wafw00f https://example.com/ -r
6. -t TEST, --test=TEST
针对一个特定 WAF 进行测试
wafw00f https://example.com/ -t Cloudflare
7. -o OUTPUT, --output=OUTPUT
根据文件扩展名将输出写入 csv、json 或文本文件。对于 stdout,请指定 - 作为文件名。
wafw00f https://example.com/ -o output.txt
8. -i INPUT, --input-file=INPUT
从文件读取目标。输入格式可以是 csv、json 或文本。对于 csv 和 json,需要 `url` 列名或元素。
wafw00f -i example.txt
9. -l, --list
列出 WAFW00F 能够检测到的所有 WAF
wafw00f -l
10. -p PROXY, --proxy=PROXY
使用 HTTP 代理执行请求,例如:
http://hostname:8080,
socks5://hostname:1080,
http://user:pass@hostname:8080
wafw00f https://example.com/ -p 主机ip:端口
11. -V, --version
打印出 WafW00f 的当前版本并退出。
wafw00f -V
12. -H HEADERS, --headers=HEADERS
通过文本文件传递自定义标头以覆盖默认标头集。
wafw00f https://example.com/ -H custom_headers.txt
总结
通过本文对 WAFW00F 工具的介绍与实践,可以看出它是一个高效且实用的 Web 应用防火墙(WAF)指纹识别工具。无论是在渗透测试中评估目标站点的安全防护机制,还是在研究 WAF 策略的规则和限制,WAFW00F 都提供了便捷的解决方案。其多种参数选项(如自定义 HTTP 头、目标代理等)让工具使用更加灵活,适应性强。
在实际应用中,合理利用 WAFW00F 不仅可以帮助测试人员快速识别目标网站的防护类型,还能为绕过 WAF 提供关键参考。尽管工具功能强大,但我们也需要遵守法律和道德规范,将其用于合法的测试和研究。
最后,随着 Web 安全技术的不断发展,WAFW00F 也会面临更多挑战。在未来的使用中,我们不仅需要掌握工具的使用方法,还需要关注其更新和扩展,以应对更加复杂的安全防护环境。希望本教程能够为你入门和使用 WAFW00F 提供帮助!
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。