개발자를 위한 WEB 해킹

Chapter 1 - 실습 환경 구축

U.J 2026. 1. 30. 17:33

 

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 권한'으로 접근되었다면, 정상적으로 명령어가 실행된 것

 


 

https://github.com/WebGoat/WebGoat.git

 

 

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

 

webgoat.host=0.0.0.0
webwolf.host=0.0.0.0

: 호스트 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)로 감싸서 사용 *


 

ID : webhacking, PW : 11111111

 

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