업데이트로 돌아가기
New releaseOct 12, 2026

WebGoat v2026.5

의도적으로 취약하게 만든 웹 애플리케이션으로, 웹 애플리케이션 보안 및 침투 테스트 기법을 학습하기 위한 대화형 레슨과 챌린지를 제공합니다.

공유

WebGoat: 의도적으로 안전하지 않게 설계된 웹 애플리케이션

Build java-jdk OWASP Labs GitHub release Gitter Discussions Conventional Commits

소개

WebGoat는 웹 애플리케이션 보안 교육을 목적으로 OWASP에서 유지 관리하는 의도적으로 안전하지 않게 설계된 웹 애플리케이션입니다.

이 프로그램은 일반적인 서버 측 애플리케이션 결함을 시연합니다. 이 실습 문제들은 사람들이 애플리케이션 보안과 침투 테스트 기법을 배우는 데 사용하도록 만들어졌습니다.

경고 1: 이 프로그램을 실행하는 동안 여러분의 머신은 공격에 극도로 취약해집니다. 이 프로그램을 사용하는 동안에는 인터넷 연결을 끊어야 합니다. WebGoat의 기본 구성은 노출을 최소화하기 위해 localhost에 바인딩됩니다.

경고 2: 이 프로그램은 교육 목적으로만 사용됩니다. 권한 없이 이러한 기법을 시도하면 적발될 가능성이 매우 높습니다. 무단 해킹을 하다 적발되면 대부분의 회사는 여러분을 해고할 것입니다. 보안 연구를 하고 있었다고 주장해도 소용없습니다. 그것은 모든 해커가 가장 먼저 하는 주장이기 때문입니다.

WebGoat

설치 안내:

자세한 내용은 기여 가이드를 확인하세요.

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 # or your timezone
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

통합 JAR에서 --server.port는 --webgoat.port의 별칭입니다. WebWolf의 포트를 별도로 설정하려면 --webwolf.port를 사용하세요.

사용 가능한 설정은 WebGoat 속성 및 WebWolf 속성을 참조하세요.

4. 소스에서 실행

사전 요구 사항:

  • Java 25
  • 선호하는 IDE
  • Git 또는 IDE의 Git 지원

명령 셸/창을 여세요:

git clone [email protected]:WebGoat/WebGoat.git

이제 프로젝트를 컴파일하는 것으로 시작하겠습니다.

cd WebGoat
git checkout <<branch_name>>
# On Linux/Mac:
./mvnw clean install

# On Windows:
./mvnw.cmd clean install

If you have ran WebGoat before, you should first run mvn clean -Pcleanall to clean up files from your temp and home directories which could fail the tests due to changes in lessons!

# Using docker or podman, you can than build the container locally
docker build -f Dockerfile . -t webgoat/webgoat

이제 프로젝트를 실행할 준비가 되었습니다. WebGoat는 Spring Boot를 사용합니다.

# On Linux/Mac:
./mvnw spring-boot:run
# On 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 # or your timezone
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

카테고리