Wapiti 是一个基于命令行单Web漏洞扫描器,通过给目标站点发送 GET 和 POST 请求查找如下漏洞: (http://wapiti.sourceforge.net/):
- File disclosure
- 数据库注入
- XSS (跨站脚本)
- Command execution detection
- CRLF injection
- XXE (XML eXternal Entity) injection
- Use of known potentially dangerous files
- Weak .htaccess configurations that can be bypassed
- 包含敏感信息的备份文件 (source code disclosure)
这篇文字,讨论如何利用 Wapiti 进行测试应用漏洞单发现和扫描报告的生成
实践
- 命令行调用 Wapiti:
wapiti http://192.168.150.143/peruggia/ -o wapiti_result -f html -m "-blindsql"
这个扫描需要连接google,因此,在中国的话,需要配置代理才可以正常使用。
这个命令执行后悔扫描靶机的Peruggia应用,保存HTML格式的输出结果到wapiti_result目录,并跳过SQL盲注测试。
- 打开报告目录, 浏览器查看文件 index.html,内容如下:
如图,报告显示,发现了12个 cross-site scripting (XSS) 漏洞 以及 20个** file handling **漏洞 - 点击 Cross Site Scripting
- 选中一个漏洞,点击 HTTP Request,这里我们选第二个,拷贝请求的URL:
- 粘贴URL到浏览器:
http://192.168.150.143/peruggia/index.php?action=comment&pic_id=%3E%3C%2Fform%3E%3Cscript%3Ealert%28%27wxs0lvms89%27%29%3C%2Fscript%3
如图,触发了一个 XSS
总结
这篇文章,我们使用参数(-m "-blindsql"),跳过了 SQL盲注测试 ,因为这个应用确实有SQL注入漏洞。通过触发超时错误,配合通过注入 sleep()命令测试不同时间的等待命令,直到服务器超时。又通过参数 (-o html)指定输出报告的格式。
Wapiti 的一些其他常用配置:
- -x <URL>: 提出指定URL,不扫描,常用来过滤登出和修改密码的URL
- -i <file>: 通过XML文件恢复之前保存的一个扫描,文件名可省略,默认从扫描目录加载文件
- -a <login%password>: 指定HTTP登陆的用户名和密码
- --auth-method <method>: 指定认证方法(basic, digest, kerberos, ntlm)
- -s <URL>: 定义开始扫描的第一个URL
- -p <proxy_url>: 指定HTTP 或 HTTPS 代理