|
在 Windows 上跑 w3af,第一件事就是别指望它能像在 Kali Linux 里那样顺滑。我上周在 Windows 10 22H2 上折腾了整整一个下午,装完 Python 2.7.18、pip 锁到 20.3.4、又手动补了 pywin32 和 pyOpenSSL,最后 w3af_gui 还是卡在启动画面。console 模式倒是能进,但扫描一个本地 DVWA 靶场,跑了两分钟就抛出一堆 UnicodeDecodeError。这不是我一个人的问题——w3af 的官方文档里,Windows 支持一直标着“experimental”,实际体验更像“abandoned”。 为什么会这样?w3af 的核心依赖是 Python 2.7 和 GTK 2,这两个东西在 Windows 上早就不是默认配置了。GTK 2 的 Windows 移植版(PyGTK)最后一次更新是 2011 年,跟现在的 Windows 10/11 兼容性极差。我试过用 MSYS2 装 mingw-w64 的 GTK2 包,结果 w3af 的 GUI 能起来,但一点“Start”就闪退。后来查了 w3af 的 GitHub issue,有人说是 pygtk 的 gobject 信号在 Windows 下线程模型不对,得改源码里的 `threading` 调用。我没改,直接放弃了 GUI。 Console 模式相对能跑。安装步骤我简化一下:先装 Python 2.7.18(记得勾选“Add python.exe to PATH”),然后下载 get-pip.py 对应版本,用 `python get-pip.py` 装 pip。接着 `pip install --upgrade pip==20.3.4`,再 `pip install pywin32 pyOpenSSL`。最后从 GitHub 拉 w3af 的 master 分支,`cd w3af` 后运行 `python w3af_console`。如果报 `ImportError: No module named _winreg`,那是 Python 2 的问题,不用管。但如果你看到 `ImportError: cannot import name HTTPSHandler`,说明 pyOpenSSL 没装好,得手动下载对应 wheel 文件离线安装。 真正能扫东西的配置是这样的:在 console 里输入 `profiles`,选 `OWASP_TOP10`,然后 `target set target http://localhost/dvwa`,再 `back`,最后 `start`。我拿 DVWA 的 low 难度试了,能跑出 SQL 注入和 XSS 的告警,但速度慢得离谱——一个页面要等 8 到 10 秒。原因是 w3af 的 HTTP 库在 Windows 下默认用了 `urllib2` 而不是 `requests`,而且没开多线程。你可以在 `http-settings` 里把 `concurrent-requests` 改成 10,但别改太高,Windows 的 select 模型在超过 64 个 socket 时会崩。 还有个坑:w3af 的插件依赖 `python-ntlm`,这个包在 PyPI 上已经没了。你得从 GitHub 找 `python-ntlm` 的 fork,手动 `python setup.py install`。不然扫 IIS 的 NTLM 认证站点时,会直接抛 `ImportError`。我试过用 `requests-ntlm` 替代,但 w3af 的代码里写死了 `import ntlm`,改起来要动好几个文件,不值当。 说实话,2024 年还在 Windows 上折腾 w3af,性价比极低。如果你非要一个 Windows 下的 Web 扫描器,OWASP ZAP 或者 Burp Suite Community 都比它省心。w3af 的代码库最后一次 commit 是 2020 年,Python 2 已经 EOL 四年了。我写这篇文章不是推荐你用,而是告诉你:如果你已经踩进这个坑,别指望能找到完整的 Windows 教程——那些 2015 年的博客里写的 `pip install w3af` 早就失效了。真要跑,建议开个 Ubuntu 虚拟机,十分钟搞定的事,别在 Windows 上耗一下午。 |