一开始测试的是 linux 的最新版 w3af,虽然是最新版,但这个工具也有多年未更新了,可能对实战的实用性已经不高了。另外,因为这款工具基于python2.x 开发的,现在已经到 python3.x 了,连 linux 的 apt 源也已经去掉很多 python2.x 有关的模块和工具了,所以在安装和使用 w3af 的时候,出现了很多问题,导致我放弃了这款工具(不过,windows下的 w3af 还是能使用的,版本低而已)。尽管如此,还是通过这款工具了解一款 web 应用漏洞扫描器的组成部分。
启动 w3af
cd w3af/extra/docker/scripts/
./w3af_console_docker
提示输入 root 密码,输入 w3af,进入到 w3af 控制台,输入 help 命令:
主界面功能
- start:启动扫描
- plugins:启动和配置插件
- exploit:漏洞利用
- profiles:加载配置文件,配置文件是有关 plugins 的配置项,也可以保存下来。
- cleanup:清空plugins配置
- target:配置目标URL
- back:返回上一级
- exit:退出 w3af
plugins组成
最新版和旧版本的 plugins 组成,这里看下最新版的,输入plugins命令进入 plugins 配置,然后输入 help:
各个模块的功能:
- auth:认证模块。
- brutefore:登录功能的暴力破解,支持基本认证机制(HTTP基本认证)和表单。
- evasion:入侵模块,漏洞利用方面的。
- crawl:爬虫模块,后续漏洞发现都基于它爬取的 URL。
- grep:搜索模块,捕获HTTP请求和回答过程中的一些信息。
- mangle: 修改模块,基于正则表达式修改 http 请求和回答。
- audit:审计模块,含有探测各种漏洞的插件。
- output:输出模块,将扫描结果输出到文件中。
- infrastructure:基础设施模块。
探测漏洞
(1)首先配置 crawl 模块的 web_spider 插件,这是必需的:
crawl web_spider # 开启插件
crawl # 查看插件列表和状态
可以看到 web_spider 那一行的 Status 项为 Enabled,表明开启了这个插件。
(2)查看 web_spider 的配置项:
crawl config web_spider # 进入 web_spider 的配置
view # 查看 web_spider 的配置项
only_forward是仅爬取给出的目标 URL 的同一路径下的 URL,如果为 False,那么就会将爬取所有的 URL。ignore_regex 忽略符合设置的正则模式的 URL,follow_regex 跟踪符合设置的正则模式的URL,先执行 ignore_regex 策略,再执行 follow_regex 策略。
(3)配置 web_spider 的参数:
set only_forward True
back # 回退
(4)配置 auth 模块的插件,设置探测 sqli 漏洞:
audit sqli # 开启 sqli 插件
audit
(5)配置 output 模块,输出扫描报告:
output html_file # 开启 html_file 插件
output config html_file # 配置 html_file 插件
set output_file /root/w3af-shared/report-test.html # 设置报告输出的文件
set verbose True # 开启详细的报告,报告中会有扫描的具体过程
back
back
(6)配置 target,设置目标 URL:
target # 进入 target 配置
set target http://10.10.10.129/dvwa/ # 设置目标 URL
back
(7)启动扫描:
start
如果出现很多新的 URL ,那么说明正在扫描了。但这个版本的 w3af 在扫描几次就会出现不能扫描的情况,报错的信息是:database disk image is malformed。这是 sqlite3 的报错信息,具体原因尚不清楚,就算重新启动 w3af 也不行,只能重启系统。
(8)最后查看扫描报告,因为 w3af 在 docker 容器中,所以作者创建容器和宿主机的两个共享文件夹:
- 容器中的 /root/w3af-shared 目录映射到了宿主机的 ~/w3af-shared 目录。
- 容器中的 /root/.w3af 目录映射到了宿主机的 ~/.w3af 目录。
report-test.html
最后
这个 docker 版的 w3af 是新版本,但 bug 太多了,而且基于 python2.x 开发,导致的问题更多,所以不推荐使用。windows的 w3af 旧版本,倒是还可以使用,软件包提供了 python2.6,bug也没那么多。