OWASP Top 10 : 웹에서 자주 발생해 보안상 큰 영향 주는 웹 해킹의 주요 취약점 10가지
-> WebGoat 실습 문제 풀며, 웹 해킹 공격의 방법 & 원리 익히기
Chapter 1 : (모의 해킹 위한) 웹 해킹의 실습환경 구축
| WebGoat | 특징 | 웹 어플리케이션에서 쉽게 발생되는 취약성을 테스트 하도록 의도적으로 불안정하게 개발된 Java Spring Boot 프레임워크 기반의 웹 애플리케이션 => IOC(Inversion Of Control; 제어의 역전), DI(Dependency Injection; 의존성 주입) |
| 장점 | 1. 직접 웹 어플리케이션 개발 필요 없이 손쉽게 공격 수행 2. 코드가 오픈소스로 공개되어, 직접 취약점 조치 용이 |
| Docker | 실습 중 예상치 못한 오류 제어 위해 실습용 Ubuntu 컨테이너 생성하고, WobGoat 동작하기 |
|
| 윈도우나 맥 OS에서 Docker를 사용하려면 -> Docker Desktop 설치가 필요 |
실습용 (Ubuntu) 컨테이너
PS C:\Windows\system32> wsl --update
설치 중: Linux용 Windows 하위 시스템
Linux용 Windows 하위 시스템이(가) 설치되었습니다.
PS C:\Windows\system32> docker run -it --name webgoat -p 8080:8080 -p 9090:9090 ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
a3629ac5b9f4: Pull complete
1baf05536e37: Download complete
Digest: sha256:cd1dba651b3080c3686ecf4e3c4220f026b521fb76978881737d24f200828b2b
Status: Downloaded newer image for ubuntu:latest
root@8f0b4abb2cf3:/#
: 기존의 GUI 환경이 아닌, 명령어 사용하는 CLI 환경 이용
docker run : 컨테이너 실행 명령
-it : 컨테이너 입력 설정 (-i) & 터미널 통해 컨테이너의 현재 Shell 접근 (-t)
--name : 생성할 컨네이너의 이름 설정 옵션
-p : 호스트 포트를 컨테이너 (내부의) 포트에 포트포워딩시키는 옵션
ubuntu : 컨테이너 실행에 사용하는 이미지(=기본 설정이 완료된 컨테이너 백업)
=> 생성된 컨테이너의 쉘에 'root 권한'으로 접근되었다면, 정상적으로 명령어가 실행된 것

apt update
apt install git vim
apt install -y openjdk-17-jdk #java development kit 설치
java --version #openjdk 17.0.17 2025-10-21
1. (WebGoat 소스코드 Clone에 필요한) git 패키지 & (소스코드 수정) vim 에디터 패키지
2. JDK(Java Development Kit) : WebGoat 빌드 및 실행
root@8f0b4abb2cf3:/# pwd
/
root@8f0b4abb2cf3:/# cd
root@8f0b4abb2cf3:~# pwd
/root
root@8f0b4abb2cf3:~# git clone -b v2023.3 https://github.com/WebGoat/WebGoat.git
Cloning into 'WebGoat'...
root@8f0b4abb2cf3:~# ls
WebGoat ### WebGoat 디렉터리 생김 확인
root@8f0b4abb2cf3:~# cd WebGoat/
root@8f0b4abb2cf3:~/WebGoat# git describe
v2023.3
: WebGoat 소스 코드 다운로드 & 빌드하기 위해, cd 이용하여 root 계정의 홈 디렉토리로 이동하기 (최상위 디렉터리 아닌)
### WebGoat & WebWolf 설정 파일 수정하기
ls
# 명령어 입력해 에디터(vi) 실행하기
vi src/main/resources/application-webgoat.properties


: 호스트 PC에서의 접속 가능하게 하기 위해, webgoat.host=0.0.0.0 & webwolf.host=0.0.0.0 추가하기
./mvnw clean install
#[INFO] ------------------------------------------------------------------------
#[INFO] BUILD SUCCESS
#[INFO] ------------------------------------------------------------------------
./mvnw spring-boot:run
# 2026-02-01 07:33:23.516 INFO 6851 --- [ main] org.owasp.webgoat.server.StartupMessage :
# Please browse to http://0.0.0.0:8080/WebGoat to get started...
1. 수정 모두 완료 후, WebGoat 빌드하기 : maven 설치할 필요 없이, mvnw 파일 (maven wrapper) 통해서 빌드 가능
2. 빌드된 WebGoat 프로젝트 실행하기
* WebGoat : maven 사용해 개발된 프로젝트 *
* mvnw : maven wrapper = 프로젝트 관리 도구 + 객체(object)로 감싸서 사용 *

WebGoat 로그인 화면 : http://localhost:8080/WebGoat

WebWolf 홈 화면 : http://localhost:9090
root@8f0b4abb2cf3:~/WebGoat# exit
exit
PS C:\Windows\system32>

컨테이너 재실행 방법
1. 명령어로 재실행
docker ps
docker ps -a # 모든 컨테이너 리스트 확인
docker start webgoat # 재가동하고자 하는 'Container ID' 또는 'NAME' 선택하여 실행
2. Docker Desktop으로 재실행
# 대시보드의 컨테이너 리스트 클릭 후
docker attach webgoat # 'Container ID' 또는 'NAME' 선택하여 실행
: 대시보드 컨테이너 리스트 '클릭' 후, 다시 실습 컨테이너의 내부 쉘에 접근하여 WebGoat 실행하기
'개발자를 위한 WEB 해킹' 카테고리의 다른 글
| Chapter 2 - OWASP Top 10 (0) | 2026.02.01 |
|---|