Windows ํ๊ฒฝ Docker๋ฅผ ์ด์ฉํ DVWA์ธํ
1. Docker & DVWA ์ค์น
WSL ์ค์น
Windows 10 ํ๊ฒฝ์์ Docker๋ Hyper-V ๋๋ WSL(Windows Subsystem for Linux)์ ์ด์ฉํ์ฌ ๊ตฌ๋ํ ์ ์๋ค.
ํ์ง๋ง Hyper-V๋ฅผ ์ด์ฉํ ๋ฐฉ์์ Windows 10 Pro ๋ฒ์ ์์๋ง ๊ฐ๋ฅํ๊ณ Home ๋ฒ์ ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์๋ค.
(๋ํ WSL์ ์ด์ฉํ ๋ฐฉ๋ฒ๋ณด๋ค ๋ถ์์ ํ๋ค๋ ํ๊ฐ๊ฐ ์์ด์ ์ฃผ๋ก WSL์ ์ด์ฉํ์ฌ ๊ตฌ๋ํ๋ค๊ณ ํ๋ค.)
WSL ์ค์น๋ฅผ ์ํด cmd ์ฐฝ์ ์ด์ด ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
wsl --install --web-download
์์ ๋ช ๋ น์ด๊ฐ ์ ์คํ๋์์ ๊ฒฝ์ฐ, Windows Subsystem for Linux๊ฐ ์ค์น๋์๋ค๋ ๋ฉ์์ง์ ํจ๊ป ๊ธฐ๋ณธ์ ์ผ๋ก Unbuntu๊ฐ ์ค์น๋ ๊ฒ์ด๋ค. (๊ทธ ํ ์ฌ๋ถํ ์ ํด์ผ ์ค์น๊ฐ ์๋ฃ๋๋ค.)
Docker ์ค์น
์๋์ ๋งํฌ์์ Dcoker ์ค์น ํ์ผ์ Windows ์ฉ์ผ๋ก ๋ค์ด ๋ฐ๋๋ค.
https://www.docker.com/products/docker-desktop/
DVWA ๊ตฌ๋
Docker๊ฐ ์ค์น๋ ์ํ์์ DVWA ์ด๋ฏธ์ง๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํด cmd ์ฐฝ์ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
docker run --rm -it -p 80:80 vulnerables/web-dvwa
๋ช ๋ น์ด๊ฐ ์คํ๋๋ฉด ์ด๋ฏธ์ง๋ฅผ ํ๋ ๊ฐ์ ธ์ค๊ณ , ์น ์๋ฒ์ ๋ก๊ทธ๊ฐ ํ์๋๊ธฐ ์์ํ๋ค.
๊ตฌ๋ ์ํ๋ Docker GUI ํจ๋์ด๋, cmd ์ฐฝ์์ ์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ก ํ์ธ ๊ฐ๋ฅํ๋ค.
docker ps
์๋์ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ์ง์ ์ ์๋ ๊ฐ๋ฅํ๋ค.
docker exec -it CONTAINER_ID /bin/bash
์์ ๊ฐ์ด ๊ตฌ๋์ด ์ ๋ ์ํ์์ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ ํ ์ฃผ์์ฐฝ์ localhost:80์ ์ ๋ ฅํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ด์ง๊ฐ ๋์จ๋ค.
DVWA๊ฐ ์คํ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ธฐ๋ณธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ ํ ์งํํ๋ค.
admin / password
๋ก๊ทธ์ธํ๋ฉด ์์ ๊ฐ์ด ๋์ค๊ฒ ๋๋๋ฐ Create / Reset Database ๋ฒํผ์ ๋๋ฌ์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์ตํ ์ ์๋ ์น์ ์ด ์๊ธฐ๋ฉฐ ์ค์น๊ฐ ์๋ฃ๋๋ค.
2. DVWA ์ค์ ๋ฐ ์ด๋ฏธ์ง(patched) ์ ์ฅ
Setup์ ๋ค์ด๊ฐ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์์์ ๋ณด๋ฉด ์ค์น ์งํ์ DVWA๋ ๋ค์์ ๋ ๊ฐ์ง ๊ธฐ๋ฅ PHP function allow_url_include: Disabled , reCAPTCHA key: Missing ์ด ๋นํ์ฑํ ๋์ด ์๋ ๊ธฐ๋ฅ์ ํ์ธํ ์ ์๋ค. ๊ฐ ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ํ์ฑํ ์์ ์ ์งํํ๊ณ ์ด ์์ ๋ด์ญ์ ์ ์ฅํด๋ณด๋ ค ํ๋ค.
PHP allow_url_include ํ์ฑํ
PHP ์ค์ ์ ์์ ํ๊ธฐ ์ํด cmd ์ฐฝ์์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ Docker ์ด๋ฏธ์ง ๋ด์ ํ์ผ์ Host PC๋ก ๊ฐ์ ธ์จ๋ค.
docker cp CONTAINER_ID:/etc/php/7.0/apache2/php.ini .
php.ini ํ์ผ์ ํ์ฌ ์์น์ ๋ณต์ฌํ์ฌ ๋ฉ๋ชจ์ฅ์์ ์์ ํ ๋ค์ ๋ถ์ฌ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์์ ํ๋ค.
(์ง์ ์ ์ํ์ฌ ํ์ผ์ ์์ ํ์ง ์๋ ์ด์ ๋ ๋ด๋ถ์ vi๊ฐ์ ๋ฌธ์ ํธ์ง๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.)
์์ ๊ฐ์ด allow_url_include ํญ๋ชฉ์ ๊ฒ์ํ์ฌ Off๋ก ์ค์ ๋์ด ์๋ ๊ฒ์ On์ผ๋ก ์์ ํ ์ ์ฅํ๋ค.
๊ทธ ํ cmd ์ฐฝ์์ docker cp ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ผ์ ๋ถ์ฌ๋ฃ๊ธฐ ํ ํ ์ง์ ์ ์ํ์ฌ ์์์ apache๋ฅผ ์ฌ์์ํ๋ค.
docker cp php.ini CONTAINER_ID:/etc/php/7.0/apache2/php.ini
docker exec -it CONTAINER_ID bash
# service apache restart
๊ทธ ํ DVWA์ ๋ค์ ์ ์ํ๋ฉด ์์ ๊ฐ์ด allow_url_include๊ฐ ํ์ฑํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
reCAPTCHA ํ์ฑํ
๋ค์ ๋งํฌ์ ์ ์ํ๋ค.
https://www.google.com/recaptcha/admin/create
์ฌ์ดํธ์์ ์์๊ฐ์ด ์ค์ ํ์ฌ ์์ฑํด์ค๋ค.
๋๋ฉ์ธ์ localhost๋ฅผ ์ถ๊ฐํด ์ฃผ์ด์ผ localhost ๋๋ฉ์ธ์์ ์๋ํ๋ค.
์ค์ ์ ์๋ฃํ๋ค๋ฉด ๊ณต๊ฐํค(์ฌ์ดํธํค)์ ๋น๋ฐํค๊ฐ ํ๋์ฉ ์ฃผ์ด์ง๊ฒ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ค์ ํ์ผ์ ๋ณต์ฌํด์์ ๊ณต๊ฐํค์ ๋น๋ฐํค๋ฅผ ์ ๋ ฅํด์ค ๋ค ์ ์ฅํ๊ณ docker cp๋ช ๋ น์ด๋ก ๋ค์ ๋ถ์ฌ๋ฃ์ด์ค๋ค.
docker cp CONTAINER_ID:/var/www/html/config/config.inc.php .
docker cp config.inc.php CONTAINER_ID:/var/www/html/config/config.inc.php
์ค์ ์๋ฃ ํ DVWA์ ์ฌ์ ์ํ๋ฉด reCAPTCHA key๊ฐ ์์ฑ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด CAPTCHA๊ฐ ์๋ํ๋ ๊ฒ๋ ํ์ธํ ์ ์๋ค.
Patched ๋ฒ์ ์ผ๋ก ์ด๋ฏธ์ง ์ ์ฅ
์์ ์์ ์ ๋ณ๋์ ์ด๋ฏธ์ง๋ก ์ ์ฅํ์ฌ, ์ถํ ์ฌ์ฉํ๋๋ก ํ๊ธฐ์ํด cmd ์ฐฝ์ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
docker commit CONTAINER_ID vulnerables/web-dvwa:patched
docker images
์์ ๊ฐ์ด TAG๊ฐ patched๋ก ๋ณ๊ฒฝ๋ ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ์์ฑ๋ ๊ฒ์ ํ์ธํ ์์๋ค.
ํด๋น ๋ฒ์ ์ผ๋ก ์คํํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด ๋๋ค.
docker run --rm -it -d -p 127.0.0.1:80:80 vulnerables/web-dvwa:patched
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์