靶场部署

官方代码仓库

Docker镜像部署

启动docker容器:

1
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat

访问 http://127.0.0.1:8080/WebGoat/http://127.0.0.1:9090/WebWolf/ 即可。

jar包一键运行

需要本地安装Java,官方要求版本最好大于等于JDK 17,实际验证至少是JDK 11。

下载官方编译好的jar包,直接运行:

1
java -jar webgoat-2023.5.jar

访问 http://127.0.0.1:8080/WebGoat/http://127.0.0.1:9090/WebWolf/ 即可。

源码部署(推荐,方便代码审计和调试)

git克隆源码:

1
git clone https://github.com/WebGoat/WebGoat.git

使用IDEA打开文件夹项目,会自动根据pom.xml文件下载所需的组件,可能需要较长的时间。

等待组件下载完成,找到 src/main/java/org/owasp/webgoat/server/StartWebGoat.java文件,右键运行即可。

访问 http://127.0.0.1:8080/WebGoat/http://127.0.0.1:9090/WebWolf/ 即可。

注意:

如果运行出现了错误请按照下图关掉JMX端点(消除错误的关键),并添加虚拟机选项 --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED(消除IO警告)。

image.png

注意:

一些和答题相关的关卡总是看不到题目,直接改代码解决,一劳永逸。翻了半天找到了要修改的文件:src/main/resources/webgoat/templates/lesson_content.html
修改后的内容如下,其实就是加了一行 jquery的引用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>

<!-- Model is setup in the class StartLesson -->
<div id="lessonInstructions"></div>

<div id="message" class="info" th:utext="${message}"></div>
<br/>

<div th:replace="~{lesson:__'lessons/' + ${lesson.package} + '/html/' + ${lesson.id} + '.html'__}"></div>

</html>

抓包配置技巧

如果想要通过bp或者yakit等抓取本地回环127.0.0.1的数据包是比较麻烦的,这里推荐通过使用修改hosts文件的方法来解决。

在Windows下hosts文件在 "C:\Windows\System32\drivers\etc\"目录下。通过记事本或其他文本编辑器打开hosts文件,在末尾追加两行新的IP-域名映射记录。

1
2
3
# webgoat
127.0.0.1 www.webgoat.local
127.0.0.1 www.webwolf.local

这里将这两个自定义的域名解析为本地回环地址后,通过该域名替代127.0.0.1访问WebGoat网页,即可实现bp等工具的正常抓包。