
WebGoat v2026.3
의도적으로 취약하게 만든 웹 애플리케이션으로, 웹 애플리케이션 보안 및 침투 테스트 기법을 학습하기 위한 대화형 레슨과 챌린지를 제공합니다.
WebGoat: A deliberately insecure Web Application
소개
WebGoat는 OWASP가 유지관리하는 의도적으로 보안에 취약하게 만든 웹 애플리케이션으로, 웹 애플리케이션 보안 수업을 가르치기 위해 설계되었습니다.
이 프로그램은 일반적인 서버 측 애플리케이션 결함을 시연합니다. 이 연습문제들은 애플리케이션 보안과 침투 테스트 기법을 배우려는 사람들이 사용하도록 만들어졌습니다.
경고 1: 이 프로그램을 실행하는 동안 여러분의 머신은 공격에 극도로 취약해집니다. 이 프로그램을 사용하는 동안 인터넷 연결을 끊어야 합니다. WebGoat의 기본 구성은 노출을 최소화하기 위해 localhost에 바인딩됩니다.
경고 2: 이 프로그램은 교육 목적으로만 제공됩니다. 허가 없이 이러한 기술을 시도할 경우 적발될 가능성이 매우 높습니다. 허가 없는 해킹에 가담한 것이 적발되면 대부분의 회사에서 해고될 것입니다. 보안 연구를 수행 중이었다고 주장하는 것은 통하지 않습니다. 모든 해커가 가장 먼저 하는 말이기 때문입니다.

설치 방법:
자세한 내용은 기여 가이드를 확인하세요.
1. Docker를 사용하여 실행
이미 브라우저와 ZAP 및/또는 Burp가 머신에 설치되어 있다면 Docker를 사용하여 WebGoat 이미지를 직접 실행할 수 있습니다.
모든 릴리스는 DockerHub에도 게시됩니다.
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 webgoat/webgoat
일부 레슨은 컨테이너가 동일한 시간대에서 실행되어야 합니다. 이를 위해 TZ 환경 변수를 설정할 수 있습니다. 예:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=America/Boise webgoat/webgoat
OWASP ZAP이나 다른 프록시를 사용하려면 더 이상 127.0.0.1이나 localhost를 사용할 수 없습니다. 대신 사용자 정의 호스트 항목을 사용할 수 있습니다. 예:
127.0.0.1 www.webgoat.local www.webwolf.local
그런 다음 다음 명령으로 컨테이너를 실행할 수 있습니다:
docker run -it -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e WEBGOAT_HOST=www.webgoat.local -e WEBWOLF_HOST=www.webwolf.local -e TZ=America/Boise webgoat/webgoat
그런 다음 http://www.webgoat.local:8080/WebGoat/ 및 http://www.webwolf.local:9090/WebWolf/를 방문하세요.
2. 완전한 Linux 데스크톱과 함께 Docker를 사용하여 실행
도구를 로컬에 설치하는 대신, 브라우저에서 데스크톱을 실행하는 완전한 Docker 이미지를 제공합니다. 이렇게 하면 Docker 이미지 하나만 실행하면 되므로 최상의 사용자 경험을 얻을 수 있습니다.
docker run -p 127.0.0.1:3000:3000 webgoat/webgoat-desktop
3. 독립 실행
https://github.com/WebGoat/WebGoat/releases에서 최신 WebGoat 릴리스를 다운로드하세요.
export TZ=Europe/Amsterdam # 또는 사용자의 시간대
java -Dfile.encoding=UTF-8 -jar webgoat-2023.8.jar
로그의 링크를 클릭하여 WebGoat를 시작하세요.
3.1 다른 포트에서 실행
어떤 이유로든 WebGoat를 다른 포트에서 실행하려면 다음 매개변수를 추가하면 됩니다:
java -jar webgoat-2023.8.jar --webgoat.port=8001 --webwolf.port=8002
사용할 수 있는 모든 매개변수의 전체 개요는 [WebGoat 속성 파일](webgoat-container/src/main/resources/application-{webgoat, webwolf}.properties)을 확인하세요.
4. 소스 코드에서 실행
사전 요구사항:
- Java 25
- 선호하는 IDE
- Git 또는 IDE 내 Git 지원
명령 셸/창을 엽니다:
git clone [email protected]:WebGoat/WebGoat.git
이제 프로젝트를 컴파일해 보겠습니다.
cd WebGoat
git checkout <<branch_name>>
# Linux/Mac:
./mvnw clean install
# Windows:
./mvnw.cmd clean install
이전에 WebGoat를 실행한 적이 있다면 먼저 mvn clean -Pcleanall을 실행하여 임시 및 홈 디렉터리의 파일을 정리해야 합니다. 레슨의 변경으로 인해 테스트가 실패할 수 있습니다!
# docker 또는 podman을 사용하여 컨테이너를 로컬에서 빌드할 수 있습니다
docker build -f Dockerfile . -t webgoat/webgoat
이제 프로젝트를 실행할 준비가 되었습니다. WebGoat는 Spring Boot를 사용합니다.
# Linux/Mac:
./mvnw spring-boot:run
# Windows:
./mvnw.cmd spring-boot:run
... 곧 http://localhost:8080/WebGoat 에서 WebGoat를 실행하게 됩니다.
참고: 위 링크는 로그인하지 않은 경우 로그인 페이지로 리디렉션됩니다. 계속하려면 로그인/계정 생성을 하세요.
IP 주소를 변경하려면 WebGoat/webgoat-container/src/main/resources/application.properties 파일에 다음 변수를 추가하세요:
server.address=x.x.x.x
4. 사용자 정의 메뉴로 실행
전문가 전용입니다. 개인화된 메뉴로 WebGoat를 설정하는 방법이 있습니다. 특정 환경 변수를 설정하여 일부 메뉴 카테고리나 개별 레슨을 제외할 수 있습니다.
예를 들어 Linux/macOS에서 jar로 실행하는 경우 다음과 같습니다:
export TZ=Europe/Amsterdam # 또는 사용자의 시간대
export EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE"
export EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations"
java -jar target/webgoat-2023.8-SNAPSHOT.jar
또는 docker run에서는 (이 버전이 docker hub에 푸시되면) 다음과 같습니다:
docker run -d -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e EXCLUDE_CATEGORIES="CLIENT_SIDE,GENERAL,CHALLENGE" -e EXCLUDE_LESSONS="SqlInjectionAdvanced,SqlInjectionMitigations" webgoat/webgoat