|
#Windows 11
#윈도우 11
#Docker Desktop
#가상머신
#훈련장 도커
#Web For Pentester
[2026년 03월 01일]윈도우 11에서 도커 기반 웹해킹 훈련장 만들기와 훈련장 목록
요약
- 구글검색: 윈도우 11 docker 설치 결과를 참고하여 Docker Desktop 설치
- 도커 데스크톱 실행
- 도커 이미지 가져오기:
docker pull [사용자]/[이미지이름]
- Web For Pentester 이미지: docker pull justhumanz/web_for_pentest
- 도커 컨테이너 실행하기:
docker run -d --name [컨테이너 별명] -p [주인포트]:[도커포트] [사용자]/[이미지이름]
- Web For Pentester 컨테이너: docker run -d --name web4pt -p 8081:80 justhumanz/web_for_pentest
- 도커 컨테이너 끄기:
docker stop [컨테이너 별명]
- Web For Pentester 컨테이너: docker stop web4pt
- 도커 컨테이너 켜기:
docker start [컨테이너 별명]
- Web For Pentester 컨테이너: docker start web4pt
Windows 11의 도커 데스크톱
Desktop 설치
MS 윈도우 11에서는 Docker Desktop을 설치하여야 도커를 이용할 수 있습니다.
도커
데스크톱(Docker Desktop)을 설치하고 실행하면 도커 엔진(Docker Engine)이 시작됩니다.
이후에 도커를 활용할 수 있습니다.
이제 윈도우에서 도커 이미지를 가져와서 실행할 수 있습니다.
 • 윈도우 11에서 Docker Desktop을 실행한 결과
PowerShell 창에서 도커 이미지 가져오기
docker pull [사용자]/[이미지이름]
PS C:\Users\jinsuk> docker pull justhumanz/web_for_pentest
도커 데스크톱을 이용하면 GUI를 이용하여 Docker Hub에서 도커 이미지를 가져오고 실행하고 지우고... 등의 작업을 할 수 있습니다만
명령행(command line)에 대한 이해를 높이기 위해 Windows PowerShell 창을 이용하고자 합니다.
글자판에서 Win-R을 눌러서 파워쉘(powershell)을 실행합니다.
powershell
다음과 같이 docker pull 명령어를 이용하여
도커 허브 / https://hub.docker.com/에서 배포하는 이미지를 가져옵니다.
(이 예에서는 PentesterLab의 "Web For Pentester"를 도커로 변환해서 배포하는 justhumanz/web_for_pentest 이미지를
가져옵니다.)
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
새로운 기능 및 개선 사항에 대 한 최신 PowerShell을 설치 하세요! https://aka.ms/PSWindows
PS C:\Users\jinsuk> docker pull justhumanz/web_for_pentest
Using default tag: latest
latest: Pulling from justhumanz/web_for_pentest
23ce636cf6d2: Pull complete
fe703b657a32: Pull complete
f9df1fafd224: Pull complete
a645a4b887f9: Pull complete
57db7fe0b522: Pull complete
3b2c872c66e8: Pull complete
795d6d8542d7: Pull complete
90af8197a531: Pull complete
c0c3f12c77ec: Pull complete
d80d37850440: Pull complete
faaf1d0a8d22: Pull complete
795beccd173a: Pull complete
546dddde0722: Pull complete
cc7592faa921: Pull complete
b9541a561915: Pull complete
e7ceeb619216: Pull complete
Digest: sha256:7c7f8e37b7acd62be5599b6f842717c093e706cc000f9b0e7a62404d21c794a9
Status: Downloaded newer image for justhumanz/web_for_pentest:latest
docker.io/justhumanz/web_for_pentest:latest
PS C:\Users\jinsuk> docker images
i Info → U In Use
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
justhumanz/web_for_pentest:latest 7c7f8e37b7ac 962MB 217MB
PS C:\Users\jinsuk>
도커허브에서 가져온 이미지는 docker images 명령어로 확인 할 수 있습니다.
(Docker Desktop에서는 왼쪽 Images 항목 참조)
우리가 가져온 이미지는 justhumanz/web_for_pentest:latest이며, 이미지 ID는 7c7f8e37b7ac,
저장소 사용량은 962MB,
컨테이너 크기는 217MB임을 보여주고 있습니다.
도커 이미지의 이름은 [사용자]/[이름]:[꼬리표]로 구성되는 데, 꼬리표(tag)는 대개의 경우 버전을 나타내는 데
쓰고 있는 듯 합니다.
justhumanz/web_for_pentest:latest는 justhumanz라는 사용자 만든 "web_for_pentest" 이미지이며 "latest"(최신)
최신 버전이라고 해석할 수 있습니다.
도커 컨테이너 실행하기
docker run -d --name [컨테이너 별명] -p [주인포트]:[도커포트] [사용자]/[이미지이름]
PS C:\Users\jinsuk> docker run -d --name web4pt -p 8081:80 justhumanz/web_for_pentest
도커 컨테이너를 실행하는 위의 예를 잘라서 살펴보겠습니다.
- docker run
도커 이미지를 읽어서 컨테이너를 실행합니다.
- -d
데몬 모드, 즉, 백그라운드로 컨테이너를 실행합니다.
붙이지 않으면 컨테이너가 부팅되는 과정을 확인할 수 있습니다.
- --name [별명]
앞으로의 쉬운 사용을 위해 컨테이너에게 붙이는 기억하기 쉬운 이름입니다.
지정하지 않으면 도커가 컨테이너 이름을 임의로 붙입니다.
- -p [주인포트]:[컨테이너포트]
도커의 각 컨테이너는 주인 운영체제와는 격리된 상태로 작동합니다. 즉, 별도의 장비로 취급됩니다.
이 때문에 도커 외부에서 네트워크로 접근하기 위해서 컨테이너포트를 주인포트로 연결해주는 포트연결(Port Forwarding)이 필요합니다.
-p로 포트를 연결하면 http://주인IP주소:주인포트/에서 훈련장을 접근하게 됩니다.
- [사용자]/[이미지이름]
실행할 대상 도커 이미지 이름입니다.
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
새로운 기능 및 개선 사항에 대 한 최신 PowerShell을 설치 하세요! https://aka.ms/PSWindows
PS C:\Users\jinsuk> docker run -d --name web4pt -p 8081:80 justhumanz/web_for_pentest
6c79b1ae19f7594d73807d5510f555a1a7ace8bdae50056d27b959ca261120f3
PS C:\Users\jinsuk> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c79b1ae19f7 justhumanz/web_for_pentest "/start.sh" 2 minutes ago Up 2 minutes 0.0.0.0:8081->80/tcp, [::]:8081->80/tcp web4pt
PS C:\Users\jinsuk>
 • Web for Pentester(justhumanz/web_for_pentest) 도커 이미지를 가져와서(pull) 실행(run)
이제 justhumanz/web_for_pentest의 컨테이너가 web4pt라는 별명으로 실행되고 있으며
도커 외부에서선는 주인(윈도우)의 8081 포트를 통해서 접속할 수 있습니다.
이 web4pt 컨테이너를 다른 장비(외부의 다른 컴퓨터나 Hyper-V로 설치한 칼리리눅스)가 접근하기 위해서는
주인 윈도우의 IP주소 확인이 필요합니다.
ipconfig
PS C:\Users\jinsuk> ipconfig
Windows IP 구성
이더넷 어댑터 이더넷:
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::27b1:ec39:1fd1:b82e%13
IPv4 주소 . . . . . . . . . : 192.168.122.35
서브넷 마스크 . . . . . . . : 255.255.255.0
기본 게이트웨이 . . . . . . : 192.168.122.1
이더넷 어댑터 vEthernet (Default Switch):
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::d0f7:6d73:965b:4a03%16
IPv4 주소 . . . . . . . . . : 172.28.128.1
서브넷 마스크 . . . . . . . : 255.255.240.0
기본 게이트웨이 . . . . . . :
이더넷 어댑터 vEthernet (WSL (Hyper-V firewall)):
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::8931:1963:855:546a%24
IPv4 주소 . . . . . . . . . : 172.21.112.1
서브넷 마스크 . . . . . . . : 255.255.240.0
기본 게이트웨이 . . . . . . :
PS C:\Users\jinsuk>
ipconfig 명령어로 확인한 윈도우 11의 주 IP주소는 192.168.122.35이므로
주인윈도우 11의 MS Edge나, Hyper-V VM으로 설치한 칼리리눅스의
파이어폭스에서는
http://192.168.122.35:8081/에서 web4pt 컨테이너의 80 포트에서
실행되고 있는 Web For Pentester 훈련장을 접속할 수 있게 됩니다.
 • 주인윈도우의 Port Forwarding을 통해 외부에서 web4pt 컨테이너 접속하기
이제 칼리리눅스의 다양한 점검 도구를 이용하여 Web For Pentester 훈련장에서 웹취약점에 대한 이해를 높일 수 있습니다.
도커 컨테이너 켜기/끄기
도커 기반 훈련장 운영을 위해 필요한 명령어들을 간단하게 정리해보았습니다.
- docker start [컨테이너별명]
컨테이이너 켜기
- docker stop [컨테이너별명]
컨테이이너 끄기
- docker restart [컨테이너별명]
실행중인 컨테이이너를 다시 시작하기
- docker rm [컨테이너별명]
컨테이이너 지우기
- docker images
도커에 저장된 이미지 확인
도커 허브의 웹취약점 훈련장들(계속 추가될 예정입니다.)
- justhumanz/web_for_pentest : Web For Pentester (PentesterLab)
- takito1812/web-hacking-playground : Web Hacking Playground
- bkimminich/juice-shop : OWASP Juice Shop
- webgoat/webgoat: OWASP WebGoat
덧붙임: Web For Pentester web4pt 컨테이너 손보기
여기서 예를 든 justhumanz/web_for_pentest 도커 이미지를 컨테이너로 실행하면
파일 업로드가 허용되지 않아서 File Upload 예제 실습이 안됩니다.
컨테이너에 접속해서 확인하니 이미지를 업로드하는 폴더의 접근권한이 열려있지 않아서
발생하는 문제였습니다.
다음과 같이 차레로 명령어를 실행하고 나면 파일업로드 취약점을 접근할 수 있습니다.
- docker start web4pt
web4pt 컨테이너가 실행되지 않았다면 켭니다.
- docker exec -it web4pt /bin/bash
web4pt 컨테이너의 터미널에서 쉘(/bin/bash)을 엽니다.
- chmod 777 /var/www/upload/images/
업로드한 파일이 저장되는 /var/www/upload/images/ 폴더를 누구나 쓰고 지울 수 있게 바꿉니다.
- exit
web4pt 컨테이너의 터미널을 닫습니다.
powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
새로운 기능 및 개선 사항에 대 한 최신 PowerShell을 설치 하세요! https://aka.ms/PSWindows
PS C:\Users\jinsuk> docker start web4pt
web4pt
PS C:\Users\jinsuk> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6c79b1ae19f7 justhumanz/web_for_pentest "/start.sh" 21 hours ago Up 5 minutes 0.0.0.0:8081->80/tcp, [::]:8081->80/tcp web4pt
PS C:\Users\jinsuk> docker exec -it web4pt /bin/bash
root@6c79b1ae19f7:/# uname -a
Linux 6c79b1ae19f7 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun 5 18:30:46 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
root@6c79b1ae19f7:/# ls -als /var/www/upload/
total 20
4 drwxr-xr-x 3 root root 4096 Apr 22 2020 .
4 drwxr-xr-x 1 root root 4096 Apr 22 2020 ..
4 -rwxr-xr-x 1 root root 629 Apr 22 2020 example1.php
4 -rwxr-xr-x 1 root root 682 Apr 22 2020 example2.php
4 drwxr-xr-x 2 root root 4096 Apr 22 2020 images
0 -rw-r--r-- 1 root root 0 Apr 22 2020 index.html
root@6c79b1ae19f7:/# chmod 777 /var/www/upload/images/
root@6c79b1ae19f7:/# ls -als /var/www/upload/
total 28
8 drwxr-xr-x 1 root root 4096 Apr 22 2020 .
8 drwxr-xr-x 1 root root 4096 Apr 22 2020 ..
4 -rwxr-xr-x 1 root root 629 Apr 22 2020 example1.php
4 -rwxr-xr-x 1 root root 682 Apr 22 2020 example2.php
4 drwxrwxrwx 1 root root 4096 Apr 22 2020 images
0 -rw-r--r-- 1 root root 0 Apr 22 2020 index.html
root@6c79b1ae19f7:/# exit
PS C:\Users\jinsuk>
[처음 작성한 날: 2026.03.01]
[마지막으로 고친 날: 2026.03.02]
> 다음 글 : Windows 11 Hyper-V용 사전설치 VM 이미지로 웹취약점 점검용 Kali Linux 설치 (2026.02.08)
|