5.2.1 WebGoat的介绍
WebGoat是由著名的OWASP(Open Web Application Security Project)负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的Bug,而是故意设计用来讲授Web应用程序安全课程的。
在学习和实践Web应用程序安全知识时,所面临的一大难点是:到哪里去找可以练手的Web应用程序呢?显然,直接在公网上进行测试是不可取的,这会触犯相关的法律。此外,安全专业人员经常需要测试某些安全工具,以检查它们的功能是否如厂商所言,这时他们就需要一个具有确定漏洞的平台作为测试目标。但无论是学习Web测试还是检查工具性能,都要求在一个安全、合法的环境下进行。在未经许可的情况下,任何企图查找安全漏洞的行为都是不允许的。这时,WebGoat项目便应运而生了。
WebGoat项目的主要目标很简单,就是为Web应用程序安全学习创建一个生动的交互式教学环境。其中设计了大量的Web缺陷,一步步地指导用户如何去利用这些漏洞进行攻击,同时也指出了如何在程序设计和编码时避免这些漏洞。Web应用程序的设计者和测试者都可以在WebGoat中找到自己感兴趣的部分。
虽然WebGoat中对于如何利用漏洞给出了大量的解释,但还是比较有限的,尤其是对于初学者来说,而这也正是其特色之处——WebGoat的每个教程都明确告诉使用者存在什么漏洞,但是如何去攻破要使用者去查阅资料,了解该漏洞的原理、特征和攻击方法,甚至要自己去找攻击辅助工具。当攻击成功时,WebGoat还会给出一个红色的“Congratulations(视贺你!)”。
WebGoat中包括的漏洞教程主要有Cross-site Scripting(XSS)、Access Control、Thread Safety、Hidden Form、FieldManipulation、ParameterManipulation、Weak Session Cookies、Blind SQL Injection、Numeric SQL Injection、String SQL Injection、Web Services、Fail Open Authentication及Dangers of HTML Comments等。除此之外,WebGoat甚至支持在其中加入自己的教程。建议在使用WebGoat时对照OWASP的文档来看,如OWASP Testing Guide 3.0、OWASP Code Review Guide 1.1和OWASP Development Guide 2.0。