1. OWASP Juice Shop (가장 현대적인 웹 취약점 연습)
- 간단한 설명
- 최신 모던 웹 기술(Angular, Node.js)로 만들어진 가장 세련된 가상 쇼핑몰입니다.
- 실제 운영되는 사이트처럼 보이지만 수많은 보안 허점이 숨겨져 있습니다.
- 구성 환경
- Node.js, Express, Angular (SPA 구조)
- 다운로드 주소
- 공부할 수 있는 취약점
- OWASP Top 10 전체, 비즈니스 로직 오류, XSS, SQL Injection, 불충분한 접근 제어 등 100개 이상의 챌린지.
- 장단점
- (장점) 실제 최신 웹 환경과 가장 유사함. 게임처럼 점수판(Scoreboard)이 있어 성취감이 높음.
- (단점) 초보자에게는 구조가 다소 복잡하게 느껴질 수 있음.
- 기타
- Docker로 설치하는 것이 가장 간편합니다(docker pull bkimminich/juice-shop). Burp Suite와 같은 프록시 도구 사용법을 익히기에 최적입니다.
2. DVWA (Damn Vulnerable Web App)
- 간단한 설명
- 웹 해킹 입문자의 '수학의 정석'과 같은 존재입니다.
- PHP 기반으로 만들어졌으며, 사용자가 보안 난이도(Low, Medium, High, Impossible)를 조절하며 연습할 수 있습니다.
- 구성 환경
- PHP, MySQL, Apache
- 다운로드 주소
- 공부할 수 있는 취약점
- Brute Force, Command Injection, CSRF, File Inclusion, SQL Injection, XSS 등.
- 장단점
- (장점) 난이도 조절 기능 덕분에 공격 코드와 방어 코드를 비교하며 학습하기 좋음.
- (단점) UI가 구식이며 최신 프레임워크 기반의 취약점은 다루지 않음.
- 기타
- 소스 코드를 보면서 '왜 이 입력값이 취약한지' 분석하는 화이트박스 테스트 연습에 좋습니다.
3. Metasploitable 2 (취약한 운영체제 그 자체)
- 간단한 설명
- 특정 웹 앱 하나가 아니라, 온갖 취약점이 존재하는 서비스들이 열려 있는 '리눅스 운영체제' 가상 머신입니다.
- DVWA와 Mutillidae가 내장되어 있습니다.
- 구성 환경
- Ubuntu Linux (오래된 버전), 각종 취약한 서비스 데몬
- 다운로드 주소
- 공부할 수 있는 취약점
- 웹 취약점뿐만 아니라 네트워크 서비스(FTP, SSH, Telnet, SMB 등) 취약점, 백도어 활용 등 인프라 해킹 전반.
- 장단점
- (장점) 웹뿐만 아니라 서버/네트워크 해킹까지 폭넓게 연습 가능.
- (단점) OS 버전이 매우 낮아 최신 커널 취약점 연습에는 부적합.
- 기타
- VM(가상머신) 형태로 구동해야 합니다. 절대 인터넷망(공유기 포트포워딩 등)에 노출시키지 마세요.
4. bWAPP (bee-box)
- 간단한 설명
- 'bee-box'라는 리눅스 VM에 설치되어 배포되는 웹 앱으로, 100가지가 넘는 방대한 종류의 버그를 다룹니다.
- 구성 환경
- PHP, MySQL (bee-box VM 내장)
- 다운로드 주소
- 공부할 수 있는 취약점
- Heartbleed, Shellshock 같은 유명한 CVE 취약점부터 각종 웹 취약점까지 매우 방대함.
- 장단점
- (장점) 다루는 취약점의 종류가 압도적으로 많음.
- (단점) UI와 구성이 다소 올드함.
- 비고
- DVWA보다 더 다양한 케이스를 다루고 싶을 때 추천합니다. VM으로 통째로 내려받는 'bee-box' 버전을 추천합니다.
5. OWASP crAPI (Completely Ridiculous API)
- 간단한 설명
- 최근 중요도가 급상승한 'API 보안'을 연습하기 위해 만들어진 마이크로서비스 아키텍처 기반 앱입니다.
- 차량 정비소 앱을 시뮬레이션합니다.
- 구성 환경
- Docker 기반의 마이크로서비스 (Java, Python, Go 등 혼합)
- 다운로드 주소
- 공부할 수 있는 취약점
- OWASP API Top 10 (BOLA, Broken User Authentication, Mass Assignment 등).
- 장단점
- (장점) 최신 트렌드인 API 취약점(특히 BOLA/IDOR)을 제대로 익힐 수 있음.
- (단점) Docker Compose를 사용해야 하며 시스템 리소스를 꽤 차지함.
- 기타
- Postman 같은 API 테스팅 도구 활용 능력이 필수적으로 요구됩니다.
6. WebGoat
- 간단한 설명
- OWASP에서 만든 교육용 Java 웹 애플리케이션입니다.
- 단순한 해킹 대상이 아니라, "설명 → 실습 → 해결"의 강의 형식을 띠고 있습니다.
- 구성 환경
- Java (Spring Boot)
- 다운로드 주소
- 공부할 수 있는 취약점
- Java 기반 웹 앱의 특성, 직렬화(Deserialization) 취약점, 접근 제어 등.
- 장단점
- (장점) 교과서처럼 체계적으로 배울 수 있음. 힌트 시스템이 잘 되어 있음.
- (단점) 자유도가 낮고 정해진 답을 찾아야 하는 방식.
- 기타
- 독립 실행형 JAR 파일이나 Docker로 실행하는 것이 편리합니다.
- Java 언어 특유의 취약점을 이해하기 좋습니다.
7. Mutillidae II
- 간단한 설명
- 다양한 기능을 가진 종합 웹 해킹 연습장입니다.
- 힌트 기능이 강력하고, 사용자가 직접 "Secure/Insecure" 모드를 전환할 수 있습니다.
- 구성 환경
- PHP, MySQL
- 다운로드 주소
- 공부할 수 있는 취약점
- OWASP Top 10의 과거 및 현재 항목 대부분.
- 장단점
- (장점) 툴팁 형태의 힌트 제공이 잘 되어 있어 독학에 유리함.
- (단점) 디자인이 매우 복잡하고 산만해 보일 수 있음.
- 기타
- SQLMap 같은 자동화 도구를 테스트해 보기에 좋은 환경을 제공합니다.
8. DVGA (Damn Vulnerable GraphQL Application)
- 간단한 설명
- 기존 REST API가 아닌, 페이스북이 만든 쿼리 언어인 'GraphQL'의 보안 취약점을 연습하는 데 특화된 앱입니다.
- 구성 환경
- Python, GraphQL
- 다운로드 주소
- 공부할 수 있는 취약점
- GraphQL 인트로스펙션(Introspection), 과도한 쿼리 깊이(DoS), 권한 우회 등.
- 장단점
- (장점) 희소성 있는 GraphQL 전문 연습 환경.
- (단점) GraphQL 문법을 모르면 접근하기 어려움.
- 기타
- 최신 기업들이 GraphQL을 많이 도입하고 있어 취업 준비생에게 매우 유용한 포트폴리오가 됩니다.
9. DVNA (Damn Vulnerable Node App)
- 간단한 설명
- DVWA의 Node.js 버전이라고 생각하면 됩니다.
- Juice Shop이 너무 복잡하다면, 더 단순한 구조의 DVNA로 Node.js 취약점을 익힐 수 있습니다.
- 구성 환경
- Node.js, Express, MySQL
- 다운로드 주소
- 공부할 수 있는 취약점
- Node.js 특유의 취약점, NoSQL Injection 등은 아니지만 MySQL과 연동된 Node 앱의 보안 이슈.
- 장단점
- (장점) 코드가 간결하여 Node.js 시큐어 코딩 공부에 좋음.
- (단점) Juice Shop에 비하면 업데이트나 커뮤니티가 작음.
- 기타
- 기본형(SQL DB)과 NoSQL형을 구분해서 실습하고 싶다면 대안으로 DVNWA(NoSQL 버전)를 찾아보는 것도 좋습니다.
10. XVWA (Xtreme Vulnerable Web Application)
- 간단한 설명
- DVWA 처럼 PHP 기반이지만, DVWA가 잘 다루지 않는 몇 가지 취약점들을 더 심도 있게 다루는 엉성하게 코딩된 앱입니다.
- 구성 환경
- PHP, MySQL
- 다운로드 주소
- 공부할 수 있는 취약점
- SQL Injection, OS Command Injection, XML Entity Injection (XXE), Server Side Template Injection (SSTI).
장단점
- (장점) XXE나 SSTI 같은 중급 이상의 취약점을 연습하기 좋음.
- (단점) 설치 과정이 완전 자동화되어 있지는 않아 수동 설정이 일부 필요할 수 있음.
- 기타
- ISO 이미지보다는 소스를 받아 로컬 웹서버(XAMPP 등)나 Docker에 올리는 것을 추천합니다.
◎ 침투 테스트 연습 시 꼭 필요한 추가 내용
- 가상화 환경 구축 필수
- 위의 앱들은 절대 본인의 메인 운영체제(윈도우/맥)에 직접 설치해서 서버를 열면 안 됩니다. 해킹당할 위험이 큽니다.
- VirtualBox나 VMware에 Kali Linux를 공격자 머신으로 설치하고, 별도의 VM이나 Docker Desktop을 이용해 위 앱들을 피해자(타겟) 머신으로 구동하세요.
- 최근에는 Docker를 이용해 원명령어(docker run ...) 한 줄로 실행하고 연습 후 삭제하는 방식이 가장 선호됩니다.
- 필수 도구 준비
- 웹 프록시 도구: Burp Suite Community Edition (필수 중의 필수)
- API 테스트 도구: Postman
- 공격 운영체제: Kali Linux (대부분의 도구가 내장됨)
- 네트워크 격리
- 연습용 가상환경의 네트워크 설정은 NAT Network 또는 Host-only 모드로 설정하여 외부 인터넷과 차단된 내부망에서만 통신되도록 하는 것이 안전합니다.
◎ 기타( Metasploitable 2 추천 이유)
- Metasploitable 3가 존재함에도 불구하고 Metasploitable 2를 먼저 추천드린 이유는 크게 설치의 간편함과 학습 효율성(진입 장벽) 때문입니다.
- 두 버전의 핵심적인 차이를 정리해 드리면 다음과 같습니다.
1. 설치 및 구축 난이도 (결정적 이유)
- Metasploitable 2 (추천)
- 간편함: 이미 다 만들어진 가상머신 파일(.vmdk 등)을 다운로드받아 실행만 하면 끝입니다.
- 초보자가 가상환경 설정(Vagrant, Packer 등)에 시간을 쏟지 않고, 바로 해킹 연습에 집중할 수 있습니다.
- Metasploitable 3
- 복잡함: 라이선스 문제(Windows 포함)로 인해 완성된 이미지를 배포하지 않습니다.
- 사용자가 직접 스크립트(Packer, Vagrant)를 돌려 이미지를 빌드(생성)하는 과정이 필요합니다.
- 이 과정에서 오류가 자주 발생하며, 빌드 시간도 오래 걸려(30분~1시간 이상) 시작하기도 전에 지칠 수 있습니다.
2. 시스템 요구 사양
- Metasploitable 2
- 매우 가볍습니다. 오래된 리눅스 기반이라 저사양 노트북에서도 부담 없이 Kali Linux와 동시에 띄워놓고 연습할 수 있습니다.
- Metasploitable 3
- Windows Server 버전과 Ubuntu 버전 두 가지로 나뉘며, 특히 윈도우 버전은 시스템 리소스(RAM, 용량)를 훨씬 많이 차지합니다.
3. 학습 목적의 차이
- Metasploitable 2
- "기본적인 취약점 원리 이해"에 최적화되어 있습니다.
- 오래되었지만 침투 테스트의 교과서적인 취약점들이 명확하게 드러나 있어 입문용으로 더 적합합니다.
- Metasploitable 3
- "현실적인 시나리오"에 가깝습니다.
- 방화벽 설정이나 최신 환경(PowerShell 등)이 적용되어 있어, 기초를 뗀 후 중급자 이상이 도전하기에 좋습니다.
4. 결론 및 추천 방향
- 입문 단계에서는 환경 구축 스트레스 없이 바로 실습할 수 있는 Metasploitable 2로 시작하는 것이 훨씬 효율적입니다.
- 이후 2번 버전이 너무 쉽거나 익숙해졌다면, 그때 Metasploitable 3 (특히 Windows 취약점 연습용) 구축에 도전해보시는 것을 추천합니다.
'OFFENSIVE > Vulnerable Web Application' 카테고리의 다른 글
| [WAPT] 웹 애플리케이션 모의해킹 Gobuster 가이드 (0) | 2025.12.13 |
|---|---|
| [WAPT] 웹 애플리케이션 모의해킹 Nmap 심화 가이드 (0) | 2025.12.13 |
| [WAPT] 웹 애플리케이션 모의해킹 Nmap 가이드 (0) | 2025.12.13 |
| 웹 애플리케이션 모의해킹(Web Application Penetration Testing)의 정석적인 절차 (0) | 2025.12.13 |
| 웹 애플리케이션 모의해킹(Web Application Penetration Testing) 방법론(Methodology) (0) | 2025.12.13 |
