* feature/spring-boot: (92 commits) XXE checkin XXE checkin XXE first attempt HTTP-Basics mark lesson complete issue fixed cleaning up some fixing the scroll 'sliver' problem. Likely need to check back on this when menu grows again lesson pagination fixes mainly, some other fixes included & clean up Incremental style changes refactor to help accomodate multiple attacks and output in one 'page' Updated some of the credits double-feedback fix on single page commenting out to stop redundant callbacks few cleanup items, added least privilege Fixed test for password First wave is complete; some rendering issues Trying to wire up the DB connection and fill out first sql stub Fixing hide/show of next/prev buttons another stub First round of sql injection with stubs Give focus to username when loading the login page ... Signed-off-by: Doug Morato <dm@corp.io> # Conflicts: # .travis.yml # README.MD # pom.xml # webgoat-container/pom.xml # webgoat-container/src/main/java/org/owasp/webgoat/HammerHead.java # webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java # webgoat-container/src/main/java/org/owasp/webgoat/lessons/LessonAdapter.java # webgoat-container/src/main/java/org/owasp/webgoat/plugins/PluginsLoader.java # webgoat-container/src/main/java/org/owasp/webgoat/service/RestartLessonService.java # webgoat-container/src/main/java/org/owasp/webgoat/session/WebgoatContext.java # webgoat-container/src/main/resources/static/js/goatApp/controller/LessonController.js # webgoat-container/src/main/resources/webgoat.properties # webgoat-container/src/main/webapp/META-INF/context.xml # webgoat-container/src/main/webapp/WEB-INF/context.xml # webgoat-container/src/main/webapp/js/goatApp/view/LessonContentView.js # webgoat-container/src/test/java/org/owasp/webgoat/plugins/WebGoatIT.java # webgoat-container/src/test/resources/log4j.properties # webgoat_developer_bootstrap.sh
187 lines
6.8 KiB
Bash
Executable File
187 lines
6.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Bootstrap the setup of WebGoat for developer use in Linux and Mac machines
|
|
# This script will clone the necessary git repositories, call the maven goals
|
|
# in the order the are needed and launch tomcat listening on localhost:8080
|
|
# Happy hacking !
|
|
|
|
# Find out what is our terminal size
|
|
COLS="$(tput cols)"
|
|
if (( COLS <= 0 )) ; then
|
|
COLS="${COLUMNS:-80}"
|
|
fi
|
|
|
|
# Colors
|
|
ESC_SEQ="\x1b["
|
|
COL_RESET=$ESC_SEQ"39;49;00m"
|
|
COL_RED=$ESC_SEQ"31;01m"
|
|
COL_GREEN=$ESC_SEQ"32;01m"
|
|
COL_YELLOW=$ESC_SEQ"33;01m"
|
|
COL_BLUE=$ESC_SEQ"34;01m"
|
|
COL_MAGENTA=$ESC_SEQ"35;01m"
|
|
COL_CYAN=$ESC_SEQ"36;01m"
|
|
|
|
# Horizontal Rule function
|
|
horizontal_rule() {
|
|
local WORD
|
|
|
|
for WORD in "#"
|
|
do
|
|
hr "$WORD"
|
|
done
|
|
}
|
|
|
|
hr() {
|
|
local WORD="$1"
|
|
if [[ -n "$WORD" ]] ; then
|
|
local LINE=''
|
|
while (( ${#LINE} < COLS ))
|
|
do
|
|
LINE="$LINE$WORD"
|
|
done
|
|
|
|
echo -e "${LINE:0:$COLS}"
|
|
fi
|
|
}
|
|
|
|
## test if command exists
|
|
ftest() {
|
|
echo -e "$COL_CYAN info: Checking if ${1} is installed $COL_RESET"
|
|
if ! type "${1}" > /dev/null 2>&1; then
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
|
|
## feature tests
|
|
features() {
|
|
for f in "${@}"; do
|
|
ftest "${f}" || {
|
|
echo -e >&2 "***$COL_RED ERROR: Missing \`${f}'! Make sure it exists and try again. $COL_RESET"
|
|
return 1
|
|
}
|
|
done
|
|
return 0
|
|
}
|
|
|
|
tomcat_started () {
|
|
STAT=`netstat -na | grep 8080 | awk '{print $6}'`
|
|
if [ "$STAT" = "LISTEN" ]; then
|
|
echo -e "$COL_GREEN WebGoat has started successfully! Browse to the following address. $COL_RESET"
|
|
echo -e "$COL_CYAN Happy Hacking! $COL_RESET"
|
|
return 0
|
|
|
|
elif [ "$STAT" = "" ]; then
|
|
echo -e "$COL_RED WebGoat failed to start up.... please wait run the following command for debugging : $COL_RESET"
|
|
echo -e "$COL_MAGENTA mvn -q -file WebGoat/pom.xml -pl webgoat-container tomcat7:run-war"
|
|
fi
|
|
return 1
|
|
}
|
|
|
|
|
|
## main setup
|
|
developer_bootstrap() {
|
|
horizontal_rule
|
|
echo -e "$COL_RED
|
|
██╗ ██╗███████╗██████╗ ██████╗ ██████╗ █████╗ ████████╗
|
|
██║ ██║██╔════╝██╔══██╗██╔════╝ ██╔═══██╗██╔══██╗╚══██╔══╝
|
|
██║ █╗ ██║█████╗ ██████╔╝██║ ███╗██║ ██║███████║ ██║
|
|
██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║ ██║██╔══██║ ██║
|
|
╚███╔███╔╝███████╗██████╔╝╚██████╔╝╚██████╔╝██║ ██║ ██║
|
|
╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝
|
|
$COL_RESET"
|
|
horizontal_rule
|
|
echo -e "Welcome to the WebGoat Developer Bootstrap script for Linux/Mac."
|
|
echo -e "Now checking if all the required software to run WebGoat is already installed."
|
|
echo -e "FYI: This Developer Bootstrap Script for WebGoat requires: Git, Java JDK and Maven accessible on the path"
|
|
|
|
## test for require features
|
|
features git mvn java || return $?
|
|
|
|
# Clone WebGoat from github
|
|
if [ ! -d "WebGoat" ]; then
|
|
echo -e "Cloning the WebGoat container repository"
|
|
git clone https://github.com/WebGoat/WebGoat.git
|
|
else
|
|
horizontal_rule
|
|
(
|
|
echo -e "$COL_YELLOW The WebGoat container repo has already been clonned before, pulling upstream changes. $COL_RESET"
|
|
cd WebGoat || {
|
|
echo -e >&2 "$COL_RED *** ERROR: Could not cd into the WebGoat Directory. $COL_RESET"
|
|
return 1
|
|
}
|
|
git pull origin develop
|
|
)
|
|
fi
|
|
|
|
# Clone WebGoat-lessons from GitHub if they don't exist
|
|
if [ ! -d "WebGoat-Lessons" ]; then
|
|
horizontal_rule
|
|
echo -e -e "$COL_CYAN Cloning the WebGoat Lessons repository $COL_RESET"
|
|
git clone https://github.com/WebGoat/WebGoat-Lessons.git
|
|
else
|
|
horizontal_rule
|
|
(
|
|
echo -e "$COL_YELLOW The WebGoat Lesson repo has already been cloned before, pulling upstream changes. $COL_RESET"
|
|
cd WebGoat-Lessons || {
|
|
echo -e >&2 "$COL_RED *** ERROR: Could not cd into the WebGoat-Lessons Directory $COL_RESET"
|
|
return 1
|
|
}
|
|
git pull origin develop
|
|
)
|
|
fi
|
|
|
|
# Compile and Install the WebGoat lesson server
|
|
horizontal_rule
|
|
echo -e "$COL_BLUE Compiling and installing the WebGoat Container lesson server..... $COL_RESET"
|
|
mvn -q -DskipTests -file WebGoat/pom.xml clean compile install || {
|
|
echo -e >&2 "$COL_RED *** ERROR: Could not compile the WebGoat Container. $COL_RESET"
|
|
return 1
|
|
}
|
|
echo -e "$COL_GREEN SUCCESS: Compiled the WebGoat Container successfully! $COL_RESET"
|
|
|
|
# Compile and package the WebGoat Lessons
|
|
horizontal_rule
|
|
echo -e "$COL_BLUE Compiling and installing the WebGoat Lessons $COL_RESET"
|
|
mvn -q -DskipTests -file WebGoat-Lessons/pom.xml package || {
|
|
echo -e >&2 "$COL_RED *** ERROR: Could not compile the WebGoat Container. $COL_RESET"
|
|
return 1
|
|
}
|
|
echo -e "$COL_GREEN SUCCESS: Compiled the WebGoat Lessons successfully! $COL_RESET"
|
|
|
|
# Copy the Lessons into the WebGoat-Container
|
|
horizontal_rule
|
|
echo -e "$COL_BLUE Copying the compiled lessons jars into the container so we can start the lesson server with some base lessons, $COL_RESET"
|
|
cp -fa ./WebGoat-Lessons/target/plugins/*.jar ./WebGoat/webgoat-container/src/main/webapp/plugin_lessons/
|
|
|
|
# Start the embedded Tomcat server
|
|
echo -e "$COL_MAGENTA"
|
|
horizontal_rule
|
|
horizontal_rule
|
|
horizontal_rule
|
|
horizontal_rule
|
|
echo "$COL_MAGENTA"
|
|
echo "$COL_CYAN ***** Starting WebGoat using the embedded Tomcat ***** $COL_RESET"
|
|
echo " Please be patient.... The startup of the server takes about 5 seconds..."
|
|
echo " WebGoat will be ready for you when you see the following message on the command prompt:"
|
|
echo "$COL_YELLOW INFO: Starting ProtocolHandler ["http-bio-8080"] $COL_RESET"
|
|
echo "$COL_CYAN When you see the message above, open a web browser and navigate to http://localhost:8080/WebGoat/ $COL_RESET"
|
|
echo " To stop the WebGoat and Tomcat Execution execution, press CTRL + C"
|
|
echo "$COL_RED If you close this terminal window, Tomcat and WebGoat will stop running $COL_RESET"
|
|
echo "$COL_MAGENTA"
|
|
horizontal_rule
|
|
horizontal_rule
|
|
horizontal_rule
|
|
horizontal_rule
|
|
echo -e "$COL_RESET"
|
|
sleep 5
|
|
|
|
# Starting WebGoat
|
|
mvn -q -pl webgoat-container spring-boot:run
|
|
}
|
|
|
|
# Start main script
|
|
developer_bootstrap
|