스터디 과제로 WebGoat 설치가 나와 VMware에 WebGoat을 설치하려 합니다. 확실히 예전에 비해 설치가 엄청 쉬워졌네요. 한방 설치도 가능하다니….T^T……
What is WebGoat?
WebGoat은 OWASP의 지원을 받는 안전하지 않는 Web Application입니다. Web Application 보안에 대한 단계적인 교육이 디자인 돼있습니다. 각 단계마다, 실제 취약점을 이용하여 보안 이슈들을 시연해 볼 수 있습니다. 그리고, 각 단계별로 힌트와 코드가 제공됩니다.
Link
WebGoat Team Page: http://webgoat.github.io/index.html
To get started:
- For the Latest WebGoat, go here: https://github.com/WebGoat/WebGoat
- For version 6.0, see the legacy repo at https://github.com/WebGoat/WebGoat-Legacy
최신 버전과 올드 버전 페이지가 따로 있습니다.
참고로 아래는 WebGoat 문제들을 따로 올려둔 페이지입니다.
https://github.com/WebGoat/WebGoat-Lessons
다운 받는 페이지에서 Easy Run(For non-developers)와 For developers 두 가지 설치 방법을 알려줍니다.
For non-developers는 설치가 쉬운 반면에 모의 해킹만이 가능하며,
For developers는 소스 코드의 수정이 가능하고 이 버전에서만 풀 수 있는 문제가 있습니다.
그래서 저는 For developers를 설치했습니다.
Installation
저는 처음 배울 때부터 Linux 환경으로 배웠기 때문에 뭐만 하면 Linux로 하려고 하네요…
설치 환경입니다.
VMware 12, CentOS 7, JDK 1.8, WebGoat 7.0
WebGoat (For develops)을 설치하려면 JDK >= 1.6, Maven > 2.0.9 이 설치되어 있어야 합니다.
(JDK는 1.7을 추천한데요.)
이뻐진 CentOS…이것 때문에 GUI로 설치했어요…어차피 ssh로 사용할거긴 하지만…;;;
아래부터는 SSH 로 접속하여 작업을 진행했습니다.
# mkdir WebGoat-Workspace
# cd WebGoat-Workspace
# curl -o webgoat_developer_bootstrap.sh https://raw.githubusercontent.com/WebGoat/WebGoat/master/webgoat_developer_bootstrap.sh
# sh webgoat_developer_bootstrap.sh
아래는 webgoat_developer_bootstarp.sh의 내용입니다.
#!/bin/bash # Bootstrap the setup of WebGoat for developer use in Linux/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 ! # Clone WebGoat and WebGoat-lessons from GitHub if they don't exist if [ ! -d "WebGoat" ]; then git clone https://github.com/WebGoat/WebGoat.git fi if [ ! -d "WebGoat-Lessons" ]; then git clone https://github.com/WebGoat/WebGoat-Lessons.git fi # Compile and Install the WebGoat lesson server mvn -file WebGoat/pom.xml clean compile install # Compile and package the WebGoat Lessons mvn -file WebGoat-Lessons/pom.xml package # Copy the Lessons into the WebGoat-Container cp -fa ./WebGoat-Lessons/target/plugins/*.jar ./WebGoat/webgoat-container/src/main/webapp/plugin_lessons/ # Start WebGoat using the maven tomcat7:run-war goal printf "\n" printf "\n" printf "\n" printf "\n" printf "\n" echo "-----------------------------------------------------------------------------------" echo "____________________ Starting WebGoat using the embedded Tomcat ___________________" echo "###################################################################################" echo "### Open a web browser and navigate to http://localhost:8080/WebGoat/" echo "### STDOUT and STDERR logs are captured in ./webgoat_developer_bootstrap.log" echo "### To stop the Tomcat execution, press CTRL + C" echo "### If you close this terminal window, Tomcat and WebGoat will stop running" echo "##################################### HAPPY HACKING! ##############################" echo "-----------------------------------------------------------------------------------" printf "\n" printf "\n" printf "\n" printf "\n" printf "\n" mvn -file WebGoat/pom.xml -pl webgoat-container tomcat7:run-war &> webgoat_developer_bootstrap.log
WebGoat을 다운받아 Tomcat으로 실행시키고 있습니다.
설치 끝…정말 쉬워졌습니다;;;
The Manual Way: Developer Edition!
WebGoat 다운로드 페이지에서 위에 적힌 내용 아래에 있는 건 webgoat_developer_bootstrap.sh에 있는 명령어 들입니다.
참고하실 만한 게 아래에 보면 Option들이 있는데 이거는 WebGoat을 어떻게 실행시킬 것인가를 정하는 겁니다. 기본은 maven으로 실행하게 되있습니다.
라고 적혀있네요. 저처럼 다른 환경에 설치하셨다면
localhost 대신에 그 환경의 IP를 입력하셔야 합니다.
올바른 주소로 접근하면
깔끔해졌음…옛날엔 투박했는데…
참고로 접속이 안되면 방화벽을 확인해 보세요.
CentOS 7부터 방화벽이 firewalld로 바뀌었네요.
# systemctl stop firewalld
# systemctl disable firewalld
WebGoat이 모의해킹 연습 서버라서 방화벽을 내린 겁니다!!!!!!
정상 서비스를 제공하는 서버라면 절대 이러면 안되요!!!!
Debugging and Troubleshooting
Plugin들이랑 lesson들을 reloading하고 싶으면:
http://localhost:8080/WebGoat/service/reloadplugins.mvc
label property들을 debugging 하고 싶으면:
http://localhost:8080/WebGoat/service/debug/labels.mvc