WebGoat8是基于Spring boot框架开发,故意不安全的Web应用程序,旨在教授Web应用程序安全性课程。该程序演示了常见的服务器端应用程序缺陷。本文将简要分析WebGoat8的登陆模块,注册模块,作为热身,随后对SQL注入课程进行代码审计。
基础本人对WebGoat8进行review code之时,仅有些许Java基础,了解过Spring框架,maven,对于Spring boot是第一次接触。所以本文是一个初学者面对新框架的条件下,做的一些探究记录。
准备Java 11
Maven > 3.2.1
IDEA
⚠️注意,Java JDK版本需要11,这个不能偷懒,亲测Java8(burp suit运行环境)编译失败无法启动。需要做好Java版本切换准备。
下载源码
在command shell中
git clone https://github.com/WebGoat/WebGoat.git
编译项目
cd WebGoat
mvn clean install
运行项目
mvn -pl webgoat-server spring-boot:run
访问WebGoat
localhost:8080/WebGoat
import WebGoat到IDEA 进行代码查看及调试
选择Maven
Root directory选择WebGoat目录
勾选Maven porjects
选择SDK11
任意Project name
随后我们就能看到,配置都帮我们做好了,可以立马开始运行和调试的操作,一步到位!非常舒服。
这个时候你或许就想马上开始运行调试,然后发现报错了,或许这是因为前面你运行了mvn命令8080端口被占用的原因,关闭mvn即可。
组件安全
我们可以在IDEA左侧栏中查看到导入的包(组件)。通过查看这些组件及其版本,我们可以寻找是否引入了存在已知漏洞的组件。例如:Struts2(RCE等)、不安全的编辑控件(任意文件上传,xss等)、XML解析器(xxe)以及可被其它漏洞利用的如commons-collections:3.1(反序列化RCE)等等。
从下图我们也可以发现,稍微大一点的应用,组件都会非常多。一个个去搜索查看组件是否存在已知漏洞会变得非常不现实,因此,我们需要批量化工具去为我们检测组件安全。在这里,我们可以了解一下:OWASP-Dependency-Check
Dependency-Check是OWASP(Open Web Application Security Project)的一个实用开源程序,用于识别项目依赖项并检查是否存在任何已知的,公开披露的漏洞。目前,已支持Java、.NET、Ruby、Node.js、Python等语言编写的程序,并为C/C++构建系统(autoconf和cmake)提供了有限的支持。而且该工具还是OWASP Top 10的解决方案的一部分。
Dependency-Check支持面广(支持多种语言)、可集成性强,作为一款开源工具,在多年来的发展中已经支持和许多主流的软件进行集成,比如:命令行、Ant、Maven、Gradle、Jenkins、Sonar等;具备使用方便,落地简单等优势。
此次不对Dependency-check进行详细讲解,有兴趣的朋友可以访问以下链接了解:
https://www.owasp.org/index.php/OWASP_Dependency_Check
https://yq.aliyun.com/articles/698621