diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..583decfd1
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+ # Maintain dependencies for GitHub Actions
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 000000000..7a68efd3c
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,58 @@
+name: "Build"
+on:
+ pull_request:
+ paths-ignore:
+ - '.txt'
+ - '*.MD'
+ - '*.md'
+ - 'LICENSE'
+ - 'docs/**'
+ push:
+ branches:
+ - master
+ - develop
+ - release/*
+ tags-ignore:
+ - '*'
+ paths-ignore:
+ - '.txt'
+ - '*.MD'
+ - '*.md'
+ - 'LICENSE'
+ - 'docs/**'
+
+jobs:
+ build:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest, macos-latest]
+ java: [15]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'zulu'
+ java-version: ${{ matrix.java }}
+ architecture: x64
+ - name: Cache Maven packages
+ uses: actions/cache@v2.1.5
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+ - name: Build with Maven
+ run: mvn clean install
+
+ notify-slack:
+ if: github.event_name == 'push' && (success() || failure())
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ steps:
+ - name: "Slack workflow notification"
+ uses: Gamesight/slack-workflow-status@master
+ with:
+ repo_token: ${{secrets.GITHUB_TOKEN}}
+ slack_webhook_url: ${{secrets.SLACK_WEBHOOK_URL}}
\ No newline at end of file
diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml
new file mode 100644
index 000000000..e1012a97a
--- /dev/null
+++ b/.github/workflows/rebase.yml
@@ -0,0 +1,19 @@
+name: "Automatic Rebase"
+on:
+ issue_comment:
+ types: [created]
+jobs:
+ rebase:
+ name: Rebase
+ if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') && github.event.comment.author_association == 'MEMBER'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the latest code
+ uses: actions/checkout@v2
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ fetch-depth: 0 # otherwise, you will fail to push refs to dest repo
+ - name: Automatic Rebase
+ uses: cirrus-actions/rebase@1.4
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..3c4625779
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,131 @@
+name: "Release Pipeline"
+on:
+ push:
+ tags:
+ - v*
+jobs:
+ release:
+ name: Release WebGoat
+ runs-on: ubuntu-latest
+ environment:
+ name: release
+ steps:
+ - uses: actions/checkout@v2.3.4
+
+ - name: "Get tag name"
+ id: tag
+ uses: dawidd6/action-get-tag@v1
+
+ - name: Set up JDK 15
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'zulu'
+ java-version: 15
+ architecture: x64
+
+ - name: Cache Maven packages
+ uses: actions/cache@v2.1.5
+ with:
+ path: ~/.m2
+ key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+ restore-keys: ${{ runner.os }}-m2
+
+ - name: "Set labels for ${{ github.ref }}"
+ run: |
+ echo "WEBGOAT_TAG_VERSION=${{ steps.tag.outputs.tag }}" >> $GITHUB_ENV
+ WEBGOAT_MAVEN_VERSION=${{ steps.tag.outputs.tag }}
+ echo "WEBGOAT_MAVEN_VERSION=${WEBGOAT_MAVEN_VERSION:1}" >> $GITHUB_ENV
+ - name: Build with Maven
+ run: |
+ mvn versions:set -DnewVersion=${{ env.WEBGOAT_MAVEN_VERSION }}
+ mvn clean install -DskipTests
+
+ - name: "Create release"
+ uses: softprops/action-gh-release@v1
+ with:
+ draft: false
+ files: |
+ webgoat-server/target/webgoat-server-${{ env.WEBGOAT_MAVEN_VERSION }}.jar
+ webwolf/target/webwolf-${{ env.WEBGOAT_MAVEN_VERSION }}.jar
+ body: |
+ ## Version ${{ steps.tag.outputs.tag }}
+
+ ### New functionality
+
+ - test
+
+ ### Bug fixes
+
+ - [#743 - Character encoding errors](https://github.com/WebGoat/WebGoat/issues/743)
+
+
+ ## Contributors
+
+ Special thanks to the following contributors providing us with a pull request:
+
+ - Person 1
+ - Person 2
+
+ And everyone who provided feedback through Github.
+
+
+ Team WebGoat
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: "Set up QEMU"
+ uses: docker/setup-qemu-action@v1.1.0
+
+ - name: "Set up Docker Buildx"
+ uses: docker/setup-buildx-action@v1
+
+ - name: "Login to dockerhub"
+ uses: docker/login-action@v1.9.0
+ with:
+ username: ${{ secrets.DOCKERHUB_USERNAME }}
+ password: ${{ secrets.DOCKERHUB_TOKEN }}
+
+ - name: "Build and push"
+ uses: docker/build-push-action@v2.4.0
+ with:
+ context: ./docker
+ file: docker/Dockerfile
+ push: false #todo enable
+ platforms: linux/amd64
+ tags: |
+ webgoat/goatandwolf:${{ env.WEBGOAT_TAG_VERSION }}
+ webgoat/goatandwolf:latest
+ build-args: |
+ webgoat_version=${{ env.WEBGOAT_MAVEN_VERSION }}
+
+ - name: "Image digest"
+ run: echo ${{ steps.docker_build.outputs.digest }}
+ new_version:
+ name: Update development version
+ needs: [ release ]
+ runs-on: ubuntu-latest
+ environment:
+ name: release
+ steps:
+ - uses: actions/checkout@v2.3.4
+ with:
+ ref: develop
+ token: ${{ secrets.WEBGOAT_DEPLOYER_TOKEN }}
+
+ - name: Set up JDK 15
+ uses: actions/setup-java@v2
+ with:
+ java-version: 15
+ architecture: x64
+
+ - name: Set version to next snapshot
+ run: |
+ mvn build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion}-SNAPSHOT versions:commit
+
+ - name: Commit pom.xml
+ run: |
+ git config user.name webgoat-github
+ git config user.email owasp.webgoat@gmail.com
+ find . -name 'pom.xml' | xargs git add
+ git commit -m "Updating to the new development version"
+ git push
diff --git a/.github/workflows/welcome.yml b/.github/workflows/welcome.yml
new file mode 100644
index 000000000..ee0cc88a3
--- /dev/null
+++ b/.github/workflows/welcome.yml
@@ -0,0 +1,13 @@
+name: Welcome
+
+on: [pull_request, issues]
+
+jobs:
+ greeting:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/first-interaction@v1.1.0
+ with:
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ issue-message: 'Thanks for submitting your first issue, we will have a look as quickly as possible.'
+ pr-message: 'Thanks so much for your contribution, really appreciated! We will have a look and merge it if everything checks out!'
diff --git a/.gitignore b/.gitignore
index bf58dce83..954e779fa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,3 +53,5 @@ webgoat.log
webgoat.properties
webgoat.script
TestClass.class
+**/*.flattened-pom.xml
+/.gitconfig
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index 9c96caffb..ffdc10e59 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1,2 +1,2 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.2.1/apache-maven-3.2.1-bin.zip
-wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.5/maven-wrapper-0.5.5.jar
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index a99bf757e..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-services:
- - docker
-language: java
-jdk:
- - openjdk11
- - openjdk13
-install: "/bin/true"
-script:
- - export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH;
- else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
- - echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$PR, BRANCH=$BRANCH"
- - if [ ! -z "${TRAVIS_TAG}" ]; then mvn versions:set -DnewVersion=${TRAVIS_TAG:1};
- fi
- - mvn clean install -q
-cache:
- directories:
- - "$HOME/.m2"
-before_deploy:
- - export WEBGOAT_SERVER_TARGET_DIR=$HOME/build/$TRAVIS_REPO_SLUG/webgoat-server/target
- - export WEBWOLF_TARGET_DIR=$HOME/build/$TRAVIS_REPO_SLUG/webwolf/target
- - export WEBGOAT_ARTIFACTS_FOLDER=$HOME/build/$TRAVIS_REPO_SLUG/Deployable_Artifacts/
- - mkdir -p $WEBGOAT_ARTIFACTS_FOLDER
- - cp -fa $WEBGOAT_SERVER_TARGET_DIR/*.jar $WEBGOAT_ARTIFACTS_FOLDER/
- - cp -fa $WEBWOLF_TARGET_DIR/*.jar $WEBGOAT_ARTIFACTS_FOLDER/
- - echo "Contents of artifacts folder:"
- - ls $WEBGOAT_ARTIFACTS_FOLDER
-deploy:
- - provider: script
- jdk: openjdk11
- skip_cleanup: true
- script: bash scripts/deploy-webgoat.sh
- on:
- tags: true
- - provider: releases
- jdk: openjdk11
- skip_cleanup: true
- overwrite: true
- api_key:
- secure: pJOLBnl6427PcVg/tVy/qB18JC7b8cKpffau+IP0pjdSt7KUfBdBY3QuJ7mrM65zRoVILzggLckaew2PlRmYQRdumyWlyRn44XiJ9KO4n6Bsufbz+ictB4ggtozpp9+I9IIUh1TmqypL9lhkX2ONM9dSHmyblYpAAgMuYSK8FYc=
- file_glob: true
- file: "$WEBGOAT_ARTIFACTS_FOLDER/*"
- on:
- tags: true
-env:
- global:
- #Docker login
- - secure: XgPc0UKRTUI70I4YWNQpThPPWeQIxkmzh1GNoR/SSDC2GPIBq3EfkkbSQewqil8stTy+S1/xSzc0JXG8NTn7UOxHVHA/2nhI6jX9E+DKtXQ89YwmaDNQjkbMjziAtDCIex+5TRykxNfkxj6VPYbDssrzI7iJXOIZVj/HoyO3O5E=
- #Docker password
- - secure: aly5TKBUK9sIiqtMbytNNPZHQhC0a7Yond5tEtuJ8fO+j/KZB4Uro3I6BhzYjGWFb5Kndd0j2TXHPFvtOl402J1CmFsY3v0BhilQd0g6zOssp5T0A73m8Jgq4ItV8wQJJy2bQsXqL1B+uFYieYPiMchj7JxWW0vBn7TV5b68l6U=
-notifications:
- slack:
- rooms:
- secure: cDG2URRy7SEipMLyhodwjRBtsPBmfngFB4FyNaIhhr+2/SGyKvGhfW75YA9V+eC7J40KllxQhiIvrxngKDRABb3L1O72Sdj8mZSi8TVsUNLOdamJXHKGUwNSPWXv/1s2m+uC20cgxl66o31vxdV33uvxLdvGOd5e5qOKTsKP7UE=
diff --git a/README.MD b/README.MD
index 39623a026..2f1547c89 100644
--- a/README.MD
+++ b/README.MD
@@ -3,9 +3,9 @@
[](https://travis-ci.org/WebGoat/WebGoat)
[](https://coveralls.io/github/WebGoat/WebGoat?branch=master)
[](https://www.codacy.com/app/dm/WebGoat)
-[](https://www.versioneye.com/user/projects/562da95ae346d7000e0369aa)
[](https://www.owasp.org/index.php/OWASP_Project_Inventory#tab=Labs_Projects)
[](https://github.com/WebGoat/WebGoat/releases/latest)
+[](https://gitter.im/OWASPWebGoat/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
# Introduction
@@ -29,19 +29,7 @@ first thing that all hackers claim.*
# Installation Instructions:
-## 1. Standalone
-
-Download the latest WebGoat release from [https://github.com/WebGoat/WebGoat/releases](https://github.com/WebGoat/WebGoat/releases)
-
-```Shell
-java -jar webgoat-server-8.0.0.VERSION.jar [--server.port=8080] [--server.address=localhost]
-```
-
-The latest version of WebGoat needs Java 11 or above. By default WebGoat starts on port 8080 with `--server.port` you can specify a different port. With `server.address` you
-can bind it to a different address (default localhost)
-
-
-## 2. Run using Docker
+## 1. Run using Docker
Every release is also published on [DockerHub]((https://hub.docker.com/r/webgoat/webgoat-8.0/)).
@@ -50,47 +38,41 @@ Every release is also published on [DockerHub]((https://hub.docker.com/r/webgoat
The easiest way to start WebGoat as a Docker container is to use the all-in-one docker container. This is a docker image that has WebGoat and WebWolf running inside.
```shell
-docker run -d -p 8080:8080 -p 9090:9090 -e TZ=Europe/Amsterdam webgoat/goatandwolf
+docker run -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=Europe/Amsterdam webgoat/goatandwolf
```
WebGoat will be located at: http://127.0.0.1:8080/WebGoat
WebWolf will be located at: http://127.0.0.1:9090/WebWolf
-**Important**: Choose the correct timezone, so that the docker container and your host are in the same timezone. As it important for the validity of JWT tokens used in certain exercises.
+**Important**: Choose the correct timezone, so that the docker container and your host are in the same timezone. As it is important for the validity of JWT tokens used in certain exercises.
-### Using docker stack deploy
-Another way to deply WebGoat and WebWolf in a more advanced way is to use a compose-file in a docker stack deploy.
-You can define which containers should run in which combinations and define all of this in a yaml file.
-An example of such a file is: [goat-with-reverseproxy.yaml](goat-with-reverseproxy.yaml)
+## 2. Standalone
-This sets up an nginx webserver as reverse proxy to WebGoat and WebWolf. You can change the timezone by adjusting the value in the yaml file.
+Download the latest WebGoat and WebWolf release from [https://github.com/WebGoat/WebGoat/releases](https://github.com/WebGoat/WebGoat/releases)
-```shell
-docker stack init
-docker stack deploy --compose-file goat-with-reverseproxy.yaml webgoatdemo
+```Shell
+java -jar webgoat-server-8.1.0.jar [--server.port=8080] [--server.address=localhost]
+java -jar webwolf-8.1.0.jar [--server.port=9090] [--server.address=localhost]
```
-Add the following entries in your local hosts file:
-
-```shell
-127.0.0.1 www.webgoat.local www.webwolf.localhost
+The latest version of WebGoat needs Java 15 or above. By default, WebGoat and Webwolf start on port 8080, 9000 and 9090 with the environment variable WEBGOAT_PORT, WEBGOAT_HSQLPORT and WEBWOLF_PORT you can set different values.
+```Shell
+export WEBGOAT_PORT=18080
+export WEBGOAT_HSQLPORT=19001
+export WEBWOLF_PORT=19090
+java -jar webgoat-server-8.1.0.jar
+java -jar webwolf-8.1.0.jar
```
-You can use the overall start page: http://www.webgoat.local or:
-
-WebGoat will be located at: http://www.webgoat.local/WebGoat
-
-WebWolf will be located at: http://www.webwolf.local/WebWolf
-
-**Important**: the current directory on your host will be mapped into the container for keeping state.
+Use `set` instead of export if you're using Windows cmd.
## 3. Run from the sources
### Prerequisites:
-* Java 11
+* Java 15
* Maven > 3.2.1
* Your favorite IDE
* Git, or Git support in your IDE
@@ -117,26 +99,23 @@ mvn -pl webgoat-server spring-boot:run
... you should be running webgoat on localhost:8080/WebGoat momentarily
-To change IP address add the following variable to WebGoat/webgoat-container/src/main/resources/application.properties file
+To change the IP address add the following variable to the WebGoat/webgoat-container/src/main/resources/application.properties file:
```
server.address=x.x.x.x
```
-# Building a new Docker image
+## 4. Run with custom menu
-NOTE: Travis will create a new Docker image automatically when making a new release.
+For specialist only. There is a way to set up WebGoat with a personalized menu. You can leave out some menu categories or individual lessons by setting certain environment variables.
+For instance running as a jar on a Linux/macOS it will look like this:
```Shell
-cd WebGoat/
-mvn install
-cd webgoat-server
-docker build -t webgoat/webgoat-8.0 .
-docker tag webgoat/webgoat-8.0 webgoat/webgoat-8.0:8.0
-docker login
-docker push webgoat/webgoat-8.0
+export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
+export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
+java -jar webgoat-server/target/webgoat-server-v8.2.0-SNAPSHOT.jar
+```
+Or in a docker run it would (once this version is pushed into docker hub) look like this:
+```Shell
+docker run -d -p 80:8888 -p 8080:8080 -p 9090:9090 -e TZ=Europe/Amsterdam -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/goatandwolf
```
-
-# Run Instructions:
-
-Once installed connect to http://localhost:8080/WebGoat and http://localhost:9090/WebWolf
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index e2b97458b..7734db368 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,5 +1,44 @@
# WebGoat release notes
+## Version 8.2.0
+
+### New functionality
+
+- Add new zip slip lesson (part of path traversal)
+- SQL lessons are now separate for each user, database are now per user and no longer shared across users
+- Moved to Java 15 & Spring Boot 2.4 & moved to JUnit 5
+
+### Bug fixes
+
+- [#974 SQL injection Intro 5 not solvable](https://github.com/WebGoat/WebGoat/issues/974)
+- [#962 SQL-Lesson 5 (Advanced) Solvable with wrong anwser](https://github.com/WebGoat/WebGoat/issues/962)
+- [#961 SQl-Injection lesson 4 not deleting created row](https://github.com/WebGoat/WebGoat/issues/961)
+- [#949 Challenge: Admin password reset always solvable](https://github.com/WebGoat/WebGoat/issues/949)
+- [#923 - Upgrade to Java 15](https://github.com/WebGoat/WebGoat/issues/923)
+- [#922 - Vulnerable components lesson](https://github.com/WebGoat/WebGoat/issues/922)
+- [#891 - Update the OWASP website with the new all-in-one Docker container](https://github.com/WebGoat/WebGoat/issues/891)
+- [#844 - Suggestion: Update navigation](https://github.com/WebGoat/WebGoat/issues/844)
+- [#843 - Bypass front-end restrictions: Field restrictions - confusing text in form](https://github.com/WebGoat/WebGoat/issues/843)
+- [#841 - XSS - Reflected XSS confusing instruction and success messages](https://github.com/WebGoat/WebGoat/issues/841)
+- [#839 - SQL Injection (mitigation) Order by clause confusing](https://github.com/WebGoat/WebGoat/issues/839)
+- [#838 - SQL mitigation (filtering) can only be passed by updating table](https://github.com/WebGoat/WebGoat/issues/838)
+
+## Contributors
+
+Special thanks to the following contributors providing us with a pull request:
+
+- nicholas-quirk
+- VijoPlays
+- aolle
+- trollingHeifer
+- maximmasiutin
+- toshihue
+- avivmu
+- KellyMarchewa
+- NatasG
+- gabe-sky
+
+
## Version 8.1.0
### New functionality
diff --git a/buildspec.yml b/buildspec.yml
deleted file mode 100644
index 477440e02..000000000
--- a/buildspec.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-version: 0.1
-
-phases:
- build:
- commands:
- - mvn package
-
-artifacts:
- files:
- - webgoat-server/target/webgoat-server-8.0-SNAPSHOT.jar
- discard-paths: yes
-
diff --git a/project-suppression.xml b/config/dependency-check/project-suppression.xml
similarity index 95%
rename from project-suppression.xml
rename to config/dependency-check/project-suppression.xml
index 3c9ed0ae3..a2a8e8470 100644
--- a/project-suppression.xml
+++ b/config/dependency-check/project-suppression.xml
@@ -32,6 +32,8 @@
cpe:/a:xstream_project:xstream
CVE-2017-7957
CVE-2016-3674
+ CVE-2020-26217
+ CVE-2020-26258
cpe:/a:postgresql:postgresql
diff --git a/pmd-ruleset.xml b/config/pmd/pmd-ruleset.xml
similarity index 100%
rename from pmd-ruleset.xml
rename to config/pmd/pmd-ruleset.xml
diff --git a/docker-compose-local.yml b/docker-compose-local.yml
deleted file mode 100644
index d94544473..000000000
--- a/docker-compose-local.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-version: '2.1'
-
-services:
- webgoat:
- image: webgoat/webgoat-v8.0.0.snapshot
- extends:
- file: docker-compose.yml
- service: webgoat
- webwolf:
- extends:
- file: docker-compose.yml
- service: webwolf
- image: webgoat/webwolf-v8.0.0.snapshot
\ No newline at end of file
diff --git a/docker-compose-postgres.yml b/docker-compose-postgres.yml
deleted file mode 100644
index 1eecda57f..000000000
--- a/docker-compose-postgres.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-version: '2.0'
-
-services:
- webgoat:
- image: webgoat/webgoat-8.0
- user: webgoat
- environment:
- - WEBWOLF_HOST=webwolf
- - WEBWOLF_PORT=9090
- - spring.datasource.url=jdbc:postgresql://webgoat_db:5432/webgoat?user=webgoat&password=webgoat
- - spring.datasource.username=webgoat
- - spring.datasource.password=webgoat
- - spring.datasource.driver-class-name=org.postgresql.Driver
- - spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
- - webgoat.server.directory=/home/webgoat/.webgoat/
- - webgoat.user.directory=/home/webgoat/.webgoat/
- ports:
- - "8080:8080"
- webwolf:
- image: webgoat/webwolf
- environment:
- - spring.datasource.url=jdbc:postgresql://webgoat_db:5432/webgoat?user=webgoat&password=webgoat
- - spring.datasource.username=webgoat
- - spring.datasource.password=webgoat
- - spring.datasource.driver-class-name=org.postgresql.Driver
- - spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL10Dialect
- ports:
- - "9090:9090"
- webgoat_db:
- image: postgres:10.12
-# Uncomment to store the state of the database on the host.
-# volumes:
-# - ./database:/var/lib/postgresql
- environment:
- - POSTGRES_PASSWORD=webgoat
- - POSTGRES_USER=webgoat
- - POSTGRES_DB=webgoat
- ports:
- - "5432:5432"
-
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index 8bf8add95..000000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-version: '3'
-
-services:
- webgoat:
- image: webgoat/webgoat-8.0
- environment:
- - WEBWOLF_HOST=webwolf
- - WEBWOLF_PORT=9090
- - TZ=Europe/Amsterdam
- ports:
- - "8080:8080"
- - "9001:9001"
- volumes:
- - .:/home/webgoat/.webgoat
- working_dir: /home/webgoat
- webwolf:
- image: webgoat/webwolf
- ports:
- - "9090:9090"
- command: --spring.datasource.url=jdbc:hsqldb:hsql://webgoat:9001/webgoat --server.address=0.0.0.0
- depends_on:
- - webgoat
diff --git a/docker/.gitignore b/docker/.gitignore
deleted file mode 100644
index d392f0e82..000000000
--- a/docker/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.jar
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 39027d357..4b1c0eaba 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,20 +1,19 @@
-FROM openjdk:11.0.1-jre-slim-stretch
+FROM openjdk:15.0.2-slim
-ARG webgoat_version=v8.0.0-SNAPSHOT
+ARG webgoat_version=8.2.0-SNAPSHOT
ENV webgoat_version_env=${webgoat_version}
-RUN apt-get update && apt-get install
-RUN useradd --home-dir /home/webgoat --create-home -U webgoat
+RUN apt-get update
+RUN useradd -ms /bin/bash webgoat
RUN apt-get -y install apt-utils nginx
USER webgoat
-RUN cd /home/webgoat/; mkdir -p .webgoat-${webgoat_version}
-COPY nginx.conf /etc/nginx/nginx.conf
-COPY index.html /usr/share/nginx/html/
-COPY webgoat-server-${webgoat_version}.jar /home/webgoat/webgoat.jar
-COPY webwolf-${webgoat_version}.jar /home/webgoat/webwolf.jar
-COPY start.sh /home/webgoat
+COPY --chown=webgoat nginx.conf /etc/nginx/nginx.conf
+COPY --chown=webgoat index.html /usr/share/nginx/html/
+COPY --chown=webgoat target/webgoat-server-${webgoat_version}.jar /home/webgoat/webgoat.jar
+COPY --chown=webgoat target/webwolf-${webgoat_version}.jar /home/webgoat/webwolf.jar
+COPY --chown=webgoat start.sh /home/webgoat
EXPOSE 8080
EXPOSE 9090
diff --git a/docker/Readme.md b/docker/Readme.md
index 84a2921ed..0e6ed7941 100644
--- a/docker/Readme.md
+++ b/docker/Readme.md
@@ -2,8 +2,12 @@
## Docker build
- docker build --no-cache --build-arg webgoat_version=v8.0.0-SNAPSHOT -t webgoat/goatandwolf:latest .
+```shell
+docker build --no-cache --build-arg webgoat_version=8.2.0-SNAPSHOT -t webgoat/goatandwolf:latest .
+```
## Docker run
-
- docker run -d -p 80:8888 -p 8080:8080 -p 9090:9090 -e TZ=Europe/Amsterdam webgoat/goatandwolf:latest
\ No newline at end of file
+
+```shell
+docker run -p 80:8888 -p 8080:8080 -p 9090:9090 -e TZ=Europe/Amsterdam webgoat/goatandwolf:latest
+```
\ No newline at end of file
diff --git a/docker/pom.xml b/docker/pom.xml
index 69e245cec..989ab28d3 100644
--- a/docker/pom.xml
+++ b/docker/pom.xml
@@ -6,7 +6,7 @@
org.owasp.webgoat
webgoat-parent
- v8.1.0
+ 8.2.0
@@ -18,14 +18,14 @@
org.apache.maven.plugins
maven-antrun-plugin
- 1.8
+ 3.0.0
install
-
-
+
+
diff --git a/docker/start.sh b/docker/start.sh
index e14452e26..26798f2b5 100644
--- a/docker/start.sh
+++ b/docker/start.sh
@@ -3,10 +3,14 @@
cd /home/webgoat
service nginx start
sleep 1
-java -Dfile.encoding=UTF-8 -jar webgoat.jar --webgoat.build.version=$1 --server.address=0.0.0.0 > webgoat.log &
+echo "Starting WebGoat..."
+java -Duser.home=/home/webgoat -Dfile.encoding=UTF-8 -jar webgoat.jar --webgoat.build.version=$1 --server.address=0.0.0.0 > webgoat.log &
sleep 10
-
-java -Dfile.encoding=UTF-8 -jar webwolf.jar --webgoat.build.version=$1 --server.address=0.0.0.0 > webwolf.log &
+
+echo "Starting WebWolf..."
+java -Duser.home=/home/webgoat -Dfile.encoding=UTF-8 -jar webwolf.jar --webgoat.build.version=$1 --server.address=0.0.0.0 > webwolf.log &
+
+echo "Browse to http://localhost" to get started >> webgoat.log
tail -300f webgoat.log
diff --git a/docs/LICENSE b/docs/LICENSE
deleted file mode 100644
index 947816433..000000000
--- a/docs/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013-2019 Blackrock Digital LLC
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/docs/README.md b/docs/README.md
index 21cd606b2..dde40936b 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,20 +1,5 @@
# WebGoat landing page
-This serves the Github pages for the landing page of WebGoat.
+Old Github page which now redirects to OWASP website.
-# Running locally
-
-```
-docker run -t --rm -v "$PWD":/usr/src/app -p "4000:4000" starefossen/github-pages
-```
-
-And then browse to http://localhost:4000/docs
-
-# Thanks to
-
-[Freelancer](http://startbootstrap.com/template-overviews/freelancer/) is a one page freelancer portfolio theme for [Bootstrap](http://getbootstrap.com/) created by [Start Bootstrap](http://startbootstrap.com/). This theme features several content sections, a responsive portfolio grid with hover effects, full page portfolio item modals, and a working PHP contact form.
-
-## Copyright and License
-
-Copyright 2013-2018 Blackrock Digital LLC. Code released under the [MIT](https://github.com/BlackrockDigital/startbootstrap-freelancer/blob/gh-pages/LICENSE) license.
diff --git a/docs/css/freelancer.css b/docs/css/freelancer.css
deleted file mode 100644
index 1907d9ff6..000000000
--- a/docs/css/freelancer.css
+++ /dev/null
@@ -1,380 +0,0 @@
-body {
- font-family: 'Lato';
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-weight: 700;
- font-family: 'Montserrat';
-}
-
-hr.star-light,
-hr.star-dark {
- max-width: 15rem;
- padding: 0;
- text-align: center;
- border: none;
- border-top: solid 0.25rem;
- margin-top: 2.5rem;
- margin-bottom: 2.5rem;
-}
-
-hr.star-light:after,
-hr.star-dark:after {
- position: relative;
- top: -.8em;
- display: inline-block;
- padding: 0 0.25em;
- content: '\f005';
- font-family: FontAwesome;
- font-size: 2em;
-}
-
-hr.star-light {
- border-color: #fff;
-}
-
-hr.star-light:after {
- color: #fff;
- background-color: #18BC9C;
-}
-
-hr.star-dark {
- border-color: #2C3E50;
-}
-
-hr.star-dark:after {
- color: #2C3E50;
- background-color: white;
-}
-
-section {
- padding: 6rem 0;
-}
-
-section h2 {
- font-size: 2.25rem;
- line-height: 2rem;
-}
-
-@media (min-width: 992px) {
- section h2 {
- font-size: 3rem;
- line-height: 2.5rem;
- }
-}
-
-.btn-xl {
- padding: 1rem 1.75rem;
- font-size: 1.25rem;
-}
-
-.btn-social {
- width: 3.25rem;
- height: 3.25rem;
- font-size: 1.25rem;
- line-height: 2rem;
-}
-
-.scroll-to-top {
- z-index: 1042;
- right: 1rem;
- bottom: 1rem;
- display: none;
-}
-
-.scroll-to-top a {
- width: 3.5rem;
- height: 3.5rem;
- background-color: rgba(33, 37, 41, 0.5);
- line-height: 3.1rem;
-}
-
-#mainNav {
- padding-top: 1rem;
- padding-bottom: 1rem;
- font-weight: 700;
- font-family: 'Montserrat';
-}
-
-#mainNav .navbar-brand {
- color: #fff;
-}
-
-#mainNav .navbar-nav {
- margin-top: 1rem;
- letter-spacing: 0.0625rem;
-}
-
-#mainNav .navbar-nav li.nav-item a.nav-link {
- color: #fff;
-}
-
-#mainNav .navbar-nav li.nav-item a.nav-link:hover {
- color: #18BC9C;
-}
-
-#mainNav .navbar-nav li.nav-item a.nav-link:active, #mainNav .navbar-nav li.nav-item a.nav-link:focus {
- color: #fff;
-}
-
-#mainNav .navbar-nav li.nav-item a.nav-link.active {
- color: #18BC9C;
-}
-
-#mainNav .navbar-toggler {
- font-size: 80%;
- padding: 0.8rem;
-}
-
-@media (min-width: 992px) {
- #mainNav {
- padding-top: 1.5rem;
- padding-bottom: 1.5rem;
- -webkit-transition: padding-top 0.3s, padding-bottom 0.3s;
- -moz-transition: padding-top 0.3s, padding-bottom 0.3s;
- transition: padding-top 0.3s, padding-bottom 0.3s;
- }
- #mainNav .navbar-brand {
- font-size: 2em;
- -webkit-transition: font-size 0.3s;
- -moz-transition: font-size 0.3s;
- transition: font-size 0.3s;
- }
- #mainNav .navbar-nav {
- margin-top: 0;
- }
- #mainNav .navbar-nav > li.nav-item > a.nav-link.active {
- color: #fff;
- background: #18BC9C;
- }
- #mainNav .navbar-nav > li.nav-item > a.nav-link.active:active, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:focus, #mainNav .navbar-nav > li.nav-item > a.nav-link.active:hover {
- color: #fff;
- background: #18BC9C;
- }
- #mainNav.navbar-shrink {
- padding-top: 0.5rem;
- padding-bottom: 0.5rem;
- }
- #mainNav.navbar-shrink .navbar-brand {
- font-size: 1.5em;
- }
-}
-
-header.masthead {
- padding-top: calc(6rem + 72px);
- padding-bottom: 6rem;
-}
-
-header.masthead h1 {
- font-size: 3rem;
- line-height: 3rem;
-}
-
-header.masthead h2 {
- font-size: 1.3rem;
- font-family: 'Lato';
-}
-
-@media (min-width: 992px) {
- header.masthead {
- padding-top: calc(6rem + 106px);
- padding-bottom: 6rem;
- }
- header.masthead h1 {
- font-size: 4.75em;
- line-height: 4rem;
- }
- header.masthead h2 {
- font-size: 1.75em;
- }
-}
-
-.portfolio {
- margin-bottom: -15px;
-}
-
-.portfolio .portfolio-item {
- position: relative;
- display: block;
- max-width: 25rem;
- margin-bottom: 15px;
-}
-
-.portfolio .portfolio-item .portfolio-item-caption {
- -webkit-transition: all ease 0.5s;
- -moz-transition: all ease 0.5s;
- transition: all ease 0.5s;
- opacity: 0;
- background-color: rgba(24, 188, 156, 0.9);
-}
-
-.portfolio .portfolio-item .portfolio-item-caption:hover {
- opacity: 1;
-}
-
-.portfolio .portfolio-item .portfolio-item-caption .portfolio-item-caption-content {
- font-size: 1.5rem;
-}
-
-@media (min-width: 576px) {
- .portfolio {
- margin-bottom: -30px;
- }
- .portfolio .portfolio-item {
- margin-bottom: 30px;
- }
-}
-
-.portfolio-modal .portfolio-modal-dialog {
- padding: 3rem 1rem;
- min-height: calc(100vh - 2rem);
- margin: 1rem calc(1rem - 8px);
- position: relative;
- z-index: 2;
- -moz-box-shadow: 0 0 3rem 1rem rgba(0, 0, 0, 0.5);
- -webkit-box-shadow: 0 0 3rem 1rem rgba(0, 0, 0, 0.5);
- box-shadow: 0 0 3rem 1rem rgba(0, 0, 0, 0.5);
-}
-
-.portfolio-modal .portfolio-modal-dialog .close-button {
- position: absolute;
- top: 2rem;
- right: 2rem;
-}
-
-.portfolio-modal .portfolio-modal-dialog .close-button i {
- line-height: 38px;
-}
-
-.portfolio-modal .portfolio-modal-dialog h2 {
- font-size: 2rem;
-}
-
-@media (min-width: 768px) {
- .portfolio-modal .portfolio-modal-dialog {
- min-height: 100vh;
- padding: 5rem;
- margin: 3rem calc(3rem - 8px);
- }
- .portfolio-modal .portfolio-modal-dialog h2 {
- font-size: 3rem;
- }
-}
-
-.floating-label-form-group {
- position: relative;
- border-bottom: 1px solid #e9ecef;
-}
-
-.floating-label-form-group input,
-.floating-label-form-group textarea {
- font-size: 1.5em;
- position: relative;
- z-index: 1;
- padding-right: 0;
- padding-left: 0;
- resize: none;
- border: none;
- border-radius: 0;
- background: none;
- box-shadow: none !important;
-}
-
-.floating-label-form-group label {
- font-size: 0.85em;
- line-height: 1.764705882em;
- position: relative;
- z-index: 0;
- top: 2em;
- display: block;
- margin: 0;
- -webkit-transition: top 0.3s ease, opacity 0.3s ease;
- -moz-transition: top 0.3s ease, opacity 0.3s ease;
- -ms-transition: top 0.3s ease, opacity 0.3s ease;
- transition: top 0.3s ease, opacity 0.3s ease;
- vertical-align: middle;
- vertical-align: baseline;
- opacity: 0;
-}
-
-.floating-label-form-group:not(:first-child) {
- padding-left: 14px;
- border-left: 1px solid #e9ecef;
-}
-
-.floating-label-form-group-with-value label {
- top: 0;
- opacity: 1;
-}
-
-.floating-label-form-group-with-focus label {
- color: #18BC9C;
-}
-
-form .row:first-child .floating-label-form-group {
- border-top: 1px solid #e9ecef;
-}
-
-.footer {
- padding-top: 5rem;
- padding-bottom: 5rem;
- background-color: #2C3E50;
- color: #fff;
-}
-
-.copyright {
- background-color: #1a252f;
-}
-
-a {
- color: #18BC9C;
-}
-
-a:focus, a:hover, a:active {
- color: #128f76;
-}
-
-.btn {
- border-width: 2px;
-}
-
-.bg-primary {
- background-color: #18BC9C !important;
-}
-
-.bg-secondary {
- background-color: #2C3E50 !important;
-}
-
-.text-primary {
- color: #18BC9C !important;
-}
-
-.text-secondary {
- color: #2C3E50 !important;
-}
-
-.btn-primary {
- background-color: #18BC9C;
- border-color: #18BC9C;
-}
-
-.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
- background-color: #128f76;
- border-color: #128f76;
-}
-
-.btn-secondary {
- background-color: #2C3E50;
- border-color: #2C3E50;
-}
-
-.btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active {
- background-color: #1a252f;
- border-color: #1a252f;
-}
diff --git a/docs/css/freelancer.min.css b/docs/css/freelancer.min.css
deleted file mode 100644
index 5b33ee4c9..000000000
--- a/docs/css/freelancer.min.css
+++ /dev/null
@@ -1 +0,0 @@
-body{font-family:Lato}h1,h2,h3,h4,h5,h6{font-weight:700;font-family:Montserrat}hr.star-dark,hr.star-light{max-width:15rem;padding:0;text-align:center;border:none;border-top:solid .25rem;margin-top:2.5rem;margin-bottom:2.5rem}hr.star-dark:after,hr.star-light:after{position:relative;top:-.8em;display:inline-block;padding:0 .25em;content:'\f005';font-family:FontAwesome;font-size:2em}hr.star-light{border-color:#fff}hr.star-light:after{color:#fff;background-color:#18bc9c}hr.star-dark{border-color:#2c3e50}hr.star-dark:after{color:#2c3e50;background-color:#fff}section{padding:6rem 0}section h2{font-size:2.25rem;line-height:2rem}@media (min-width:992px){section h2{font-size:3rem;line-height:2.5rem}}.btn-xl{padding:1rem 1.75rem;font-size:1.25rem}.btn-social{width:3.25rem;height:3.25rem;font-size:1.25rem;line-height:2rem}.scroll-to-top{z-index:1042;right:1rem;bottom:1rem;display:none}.scroll-to-top a{width:3.5rem;height:3.5rem;background-color:rgba(33,37,41,.5);line-height:3.1rem}#mainNav{padding-top:1rem;padding-bottom:1rem;font-weight:700;font-family:Montserrat}#mainNav .navbar-brand{color:#fff}#mainNav .navbar-nav{margin-top:1rem;letter-spacing:.0625rem}#mainNav .navbar-nav li.nav-item a.nav-link{color:#fff}#mainNav .navbar-nav li.nav-item a.nav-link:hover{color:#18bc9c}#mainNav .navbar-nav li.nav-item a.nav-link:active,#mainNav .navbar-nav li.nav-item a.nav-link:focus{color:#fff}#mainNav .navbar-nav li.nav-item a.nav-link.active{color:#18bc9c}#mainNav .navbar-toggler{font-size:80%;padding:.8rem}@media (min-width:992px){#mainNav{padding-top:1.5rem;padding-bottom:1.5rem;-webkit-transition:padding-top .3s,padding-bottom .3s;-moz-transition:padding-top .3s,padding-bottom .3s;transition:padding-top .3s,padding-bottom .3s}#mainNav .navbar-brand{font-size:2em;-webkit-transition:font-size .3s;-moz-transition:font-size .3s;transition:font-size .3s}#mainNav .navbar-nav{margin-top:0}#mainNav .navbar-nav>li.nav-item>a.nav-link.active{color:#fff;background:#18bc9c}#mainNav .navbar-nav>li.nav-item>a.nav-link.active:active,#mainNav .navbar-nav>li.nav-item>a.nav-link.active:focus,#mainNav .navbar-nav>li.nav-item>a.nav-link.active:hover{color:#fff;background:#18bc9c}#mainNav.navbar-shrink{padding-top:.5rem;padding-bottom:.5rem}#mainNav.navbar-shrink .navbar-brand{font-size:1.5em}}header.masthead{padding-top:calc(6rem + 72px);padding-bottom:6rem}header.masthead h1{font-size:3rem;line-height:3rem}header.masthead h2{font-size:1.3rem;font-family:Lato}@media (min-width:992px){header.masthead{padding-top:calc(6rem + 106px);padding-bottom:6rem}header.masthead h1{font-size:4.75em;line-height:4rem}header.masthead h2{font-size:1.75em}}.portfolio{margin-bottom:-15px}.portfolio .portfolio-item{position:relative;display:block;max-width:25rem;margin-bottom:15px}.portfolio .portfolio-item .portfolio-item-caption{-webkit-transition:all ease .5s;-moz-transition:all ease .5s;transition:all ease .5s;opacity:0;background-color:rgba(24,188,156,.9)}.portfolio .portfolio-item .portfolio-item-caption:hover{opacity:1}.portfolio .portfolio-item .portfolio-item-caption .portfolio-item-caption-content{font-size:1.5rem}@media (min-width:576px){.portfolio{margin-bottom:-30px}.portfolio .portfolio-item{margin-bottom:30px}}.portfolio-modal .portfolio-modal-dialog{padding:3rem 1rem;min-height:calc(100vh - 2rem);margin:1rem calc(1rem - 8px);position:relative;z-index:2;-moz-box-shadow:0 0 3rem 1rem rgba(0,0,0,.5);-webkit-box-shadow:0 0 3rem 1rem rgba(0,0,0,.5);box-shadow:0 0 3rem 1rem rgba(0,0,0,.5)}.portfolio-modal .portfolio-modal-dialog .close-button{position:absolute;top:2rem;right:2rem}.portfolio-modal .portfolio-modal-dialog .close-button i{line-height:38px}.portfolio-modal .portfolio-modal-dialog h2{font-size:2rem}@media (min-width:768px){.portfolio-modal .portfolio-modal-dialog{min-height:100vh;padding:5rem;margin:3rem calc(3rem - 8px)}.portfolio-modal .portfolio-modal-dialog h2{font-size:3rem}}.floating-label-form-group{position:relative;border-bottom:1px solid #e9ecef}.floating-label-form-group input,.floating-label-form-group textarea{font-size:1.5em;position:relative;z-index:1;padding-right:0;padding-left:0;resize:none;border:none;border-radius:0;background:0 0;box-shadow:none!important}.floating-label-form-group label{font-size:.85em;line-height:1.764705882em;position:relative;z-index:0;top:2em;display:block;margin:0;-webkit-transition:top .3s ease,opacity .3s ease;-moz-transition:top .3s ease,opacity .3s ease;-ms-transition:top .3s ease,opacity .3s ease;transition:top .3s ease,opacity .3s ease;vertical-align:middle;vertical-align:baseline;opacity:0}.floating-label-form-group:not(:first-child){padding-left:14px;border-left:1px solid #e9ecef}.floating-label-form-group-with-value label{top:0;opacity:1}.floating-label-form-group-with-focus label{color:#18bc9c}form .row:first-child .floating-label-form-group{border-top:1px solid #e9ecef}.footer{padding-top:5rem;padding-bottom:5rem;background-color:#2c3e50;color:#fff}.copyright{background-color:#1a252f}a{color:#18bc9c}a:active,a:focus,a:hover{color:#128f76}.btn{border-width:2px}.bg-primary{background-color:#18bc9c!important}.bg-secondary{background-color:#2c3e50!important}.text-primary{color:#18bc9c!important}.text-secondary{color:#2c3e50!important}.btn-primary{background-color:#18bc9c;border-color:#18bc9c}.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background-color:#128f76;border-color:#128f76}.btn-secondary{background-color:#2c3e50;border-color:#2c3e50}.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover{background-color:#1a252f;border-color:#1a252f}
\ No newline at end of file
diff --git a/docs/gulpfile.js b/docs/gulpfile.js
deleted file mode 100644
index 941496a6b..000000000
--- a/docs/gulpfile.js
+++ /dev/null
@@ -1,137 +0,0 @@
-// Load plugins
-const autoprefixer = require("gulp-autoprefixer");
-const browsersync = require("browser-sync").create();
-const cleanCSS = require("gulp-clean-css");
-const gulp = require("gulp");
-const header = require("gulp-header");
-const plumber = require("gulp-plumber");
-const rename = require("gulp-rename");
-const sass = require("gulp-sass");
-const uglify = require("gulp-uglify");
-const pkg = require('./package.json');
-
-// Set the banner content
-const banner = ['/*!\n',
- ' * Start Bootstrap - <%= pkg.title %> v<%= pkg.version %> (<%= pkg.homepage %>)\n',
- ' * Copyright 2013-' + (new Date()).getFullYear(), ' <%= pkg.author %>\n',
- ' * Licensed under <%= pkg.license %> (https://github.com/BlackrockDigital/<%= pkg.name %>/blob/master/LICENSE)\n',
- ' */\n',
- '\n'
-].join('');
-
-// Copy third party libraries from /node_modules into /vendor
-gulp.task('vendor', function(cb) {
-
- // Bootstrap
- gulp.src([
- './node_modules/bootstrap/dist/**/*',
- '!./node_modules/bootstrap/dist/css/bootstrap-grid*',
- '!./node_modules/bootstrap/dist/css/bootstrap-reboot*'
- ])
- .pipe(gulp.dest('./vendor/bootstrap'))
-
- // Font Awesome
- gulp.src([
- './node_modules/@fortawesome/**/*',
- ])
- .pipe(gulp.dest('./vendor'))
-
- // jQuery
- gulp.src([
- './node_modules/jquery/dist/*',
- '!./node_modules/jquery/dist/core.js'
- ])
- .pipe(gulp.dest('./vendor/jquery'))
-
- // jQuery Easing
- gulp.src([
- './node_modules/jquery.easing/*.js'
- ])
- .pipe(gulp.dest('./vendor/jquery-easing'))
-
- // Magnific Popup
- gulp.src([
- './node_modules/magnific-popup/dist/*'
- ])
- .pipe(gulp.dest('./vendor/magnific-popup'))
-
- cb();
-
-});
-
-// CSS task
-function css() {
- return gulp
- .src("./scss/*.scss")
- .pipe(plumber())
- .pipe(sass({
- outputStyle: "expanded"
- }))
- .on("error", sass.logError)
- .pipe(autoprefixer({
- browsers: ['last 2 versions'],
- cascade: false
- }))
- .pipe(header(banner, {
- pkg: pkg
- }))
- .pipe(gulp.dest("./css"))
- .pipe(rename({
- suffix: ".min"
- }))
- .pipe(cleanCSS())
- .pipe(gulp.dest("./css"))
- .pipe(browsersync.stream());
-}
-
-// JS task
-function js() {
- return gulp
- .src([
- './js/*.js',
- '!./js/*.min.js',
- '!./js/contact_me.js',
- '!./js/jqBootstrapValidation.js'
- ])
- .pipe(uglify())
- .pipe(header(banner, {
- pkg: pkg
- }))
- .pipe(rename({
- suffix: '.min'
- }))
- .pipe(gulp.dest('./js'))
- .pipe(browsersync.stream());
-}
-
-// Tasks
-gulp.task("css", css);
-gulp.task("js", js);
-
-// BrowserSync
-function browserSync(done) {
- browsersync.init({
- server: {
- baseDir: "./"
- }
- });
- done();
-}
-
-// BrowserSync Reload
-function browserSyncReload(done) {
- browsersync.reload();
- done();
-}
-
-// Watch files
-function watchFiles() {
- gulp.watch("./scss/**/*", css);
- gulp.watch(["./js/**/*.js", "!./js/*.min.js"], js);
- gulp.watch("./**/*.html", browserSyncReload);
-}
-
-gulp.task("default", gulp.parallel('vendor', css, js));
-
-// dev task
-gulp.task("dev", gulp.parallel(watchFiles, browserSync));
diff --git a/docs/img/GotGoat.jpg b/docs/img/GotGoat.jpg
deleted file mode 100644
index 479e54b1f..000000000
Binary files a/docs/img/GotGoat.jpg and /dev/null differ
diff --git a/docs/img/portfolio/assignment-example.png b/docs/img/portfolio/assignment-example.png
deleted file mode 100644
index 296760d00..000000000
Binary files a/docs/img/portfolio/assignment-example.png and /dev/null differ
diff --git a/docs/img/portfolio/assignment.png b/docs/img/portfolio/assignment.png
deleted file mode 100644
index 23e758176..000000000
Binary files a/docs/img/portfolio/assignment.png and /dev/null differ
diff --git a/docs/img/portfolio/lesson.png b/docs/img/portfolio/lesson.png
deleted file mode 100644
index 9754d99aa..000000000
Binary files a/docs/img/portfolio/lesson.png and /dev/null differ
diff --git a/docs/img/portfolio/mitigation-example.png b/docs/img/portfolio/mitigation-example.png
deleted file mode 100644
index 2d0655dc2..000000000
Binary files a/docs/img/portfolio/mitigation-example.png and /dev/null differ
diff --git a/docs/img/portfolio/mitigation.png b/docs/img/portfolio/mitigation.png
deleted file mode 100644
index 99ecfb2b6..000000000
Binary files a/docs/img/portfolio/mitigation.png and /dev/null differ
diff --git a/docs/img/portfolio/teach.png b/docs/img/portfolio/teach.png
deleted file mode 100644
index 2afb65831..000000000
Binary files a/docs/img/portfolio/teach.png and /dev/null differ
diff --git a/docs/img/profile.png b/docs/img/profile.png
deleted file mode 100644
index dcf0e0398..000000000
Binary files a/docs/img/profile.png and /dev/null differ
diff --git a/docs/index.html b/docs/index.html
index 5c58e5e04..78d11aff2 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -11,288 +11,4 @@
The page been moved to https://owasp.org/www-project-webgoat/