6.4 OWASP(ZAP)
ZAP是一个使用简便的集成渗透测试工具,用于找出Web应用中的漏洞。我们在第3章中有关扫描目标上潜在的漏洞的内容里简要地介绍过如何使用ZAP。让我们在找出和利用跨站脚本(常用XSS 来指代)漏洞部分时,再温习一下ZAP。
ZAP是Kali Linux 1.0中内建的工具。你可以浏览Sniffing/Spoofing > Web Sniffers ,然后选择Owasp - ZAP 来运行它,或是简单地打开一个终端窗口,输入zap ,如下方的例图中所示:
下面是对搭建ZAP以及将其和Firefox一起使用的总结,如第3章中介绍的。
1.接受用户使用协议。
2.生成一个SSL证书或是导入已有证书。
3.将证书导入到Web浏览器中,如Firefox;你可以访问偏好设置
> 高级
,然后选择加密
子标签。
4.点击View Certificate
,导入该证书。
5.勾选跟使用新证书有关的所有信任选项。
6.将Web浏览器设为使用ZAP作为默认代理。在Firefox中,你可以在偏好设置
> 高级
> 网络
中设置。
7.输入代理服务器localhost
和端口号8080
,也就是ZAP代理的默认端口。
8.将所有协议都勾选使用代理服务器。
在使用ZAP之前,你需要生成一个证书。
ZAP和Firefox配置好后,在Firefox中加载任意URL。你能看到网站现在会出现在ZAP的Sites 标签页中。在这个例子中,我们会访问www.DrChaos.com 并注意到我们已经加载了一些网站,这是因为www.DrChaos.com 主页上的所有链接。
ZAP有个选项用来决定以主动还是被动方式运行扫描器。被动扫描不会执行攻击,对任何Web应用运行都应该是安全的。主动扫描会运行一些攻击,并会主动针对Web应用运行一些代码,它可能会触发特定安全防御产品的警报装置。
下面的例子会同时使用主动扫描和被动扫描。最好是能够自己搭建一个可供测试的Web服务器,而不是用ZAP在非授权的Web服务器上乱试。由于我们想在已授权的带有漏洞的Web服务器上练习,我们会回去继续用Google Gruyere 项目。
谷歌是将Gruyere项目作为测试Web应用的漏洞利用和防御的一种途径创建的。Gruyere项目网站有若干个嵌入的漏洞,包括XSS。你可以运行你自己的线上Gruyere项目,或者你也可以将它下载到一个本地机器用于测试:
创建你自己的Gruyere实例来测试ZAP。在测试时,你会拿到一个自己的唯一URL。我们拿到的URL是http://google-gruyere.appspot.com/326352883334/ 。
我们回到ZAP中,对上面的链接做个快速扫描:
截图的例子中显示的是一些种子文件,包括有个标签很有趣的:http://google-gruyere.appspot.com/326352883334/invalid 。
将这个链接放到浏览器中时,我们会得到如下的错误消息:
在XSS中,URL中最危险的字符就是<和>。如果一个黑客发现能够直接通过<和>让某个应用在页面中插入他期望的内容,那么它就打开了可用于注入恶意脚本的大门。这里有一些其他有趣的种子文件:
这里有个利用这些种子链接中的某个来注入脚本的例子。我们会创建一个URL,然后加上alert(1) 脚本来看看网站是否会创建一个弹出的错误:
http://google-gruyere.appspot.com/326352883334/
<script>alert(1);
</script>
这个例子显示我们的目标Web应用服务器会调用一个弹出框,证明这个站点是有机可乘的。我们可以用ZAP来回放该攻击,尝试其他攻击或是测试类似的XSS方法。
我们建议你好好观摩一下你发现的错误,看看你是否能在渗透测试练习中做一些修改来输出敏感信息。Gruyere项目是使用ZAP来练习找出其他漏洞的绝佳途径。
为了防御远程攻击,ZAP特别适合测试Web漏洞,如XSS攻击。有些人认为如果浏览器标称它具备防御跨站脚本攻击的功能,那么用户在浏览网站时就不必关心XSS。这句话背后的事实是,你并不能完全信任浏览器的保护功能,因为浏览器并不知道Web应用背后的代码到底有多安全。聪明的黑客有可能会避开那些保护,比如对用户用来访问网站的主机进行XSS漏洞利用和脚本调用。保护服务器和客户端的最佳实践是用类似ZAP的工具找出漏洞并修复漏洞。