Skip to main content
Korean only
This page is available in Korean only. An English version will be added later.

01. 실습 환경 구축

로컬에 취약 웹 애플리케이션을 띄워 실습 대상을 만든다. 외부에 노출하지 않는 것이 가장 중요한 원칙이다. (→ 00. 실습 원칙과 범위)

1. 실습 대상 비교​

환경성격추천 용도
OWASP Juice Shop현대적 SPA, 다양한 난이도의 챌린지전반적 실습, XSS·인젝션 등
DVWA (Damn Vulnerable Web App)전통적 PHP, 난이도(Low~Impossible) 조절취약/안전 코드 비교 학습
WebGoat가이드형 레슨개념 단계별 학습

이 시리즈는 Juice Shop(현대적 예시)과 DVWA(난이도별 코드 비교)를 함께 사용한다.

2. 사전 준비: Docker​

가장 간단한 방법은 Docker다. 설치 명령 한 줄로 환경이 뜨고, 컨테이너를 지우면 흔적 없이 정리된다.

  • Windows: Docker Desktop 설치 (docker.com)
  • 설치 후 확인
docker --version

3. OWASP Juice Shop 실행​

docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop

브라우저에서 http://localhost:3000 접속.

:::danger 포트 바인딩에 주의 -p 127.0.0.1:3000:3000 처럼 127.0.0.1 을 반드시 붙인다. -p 3000:3000 으로만 하면 같은 네트워크의 다른 기기에서도 접근 가능해져, 취약 환경이 외부에 노출된다. 127.0.0.1 로 바인딩하면 내 PC에서만 접속된다. :::

4. DVWA 실행​

docker run --rm -p 127.0.0.1:8080:80 vulnerables/web-dvwa
  • http://localhost:8080 접속
  • 초기 로그인: 화면 안내에 따라 DB 초기화(Create / Reset Database) 후 기본 계정으로 로그인
  • DVWA Security 메뉴에서 난이도(Low / Medium / High / Impossible)를 조절할 수 있다. 이 난이도별 소스 코드 비교가 학습의 핵심이다.

5. 안전 체크리스트​

실습을 시작하기 전에 확인한다.

  • 포트가 127.0.0.1 에 바인딩되어 있는가 (외부 비노출)
  • 회사·공용 네트워크가 아닌, 통제된 개인 환경인가
  • 실습이 끝나면 컨테이너를 정리하는가 (--rm 사용 시 자동)
  • 캡처·로그를 공개하기 전에 민감정보를 제거했는가

6. AI를 쓰는 지점​

이 단계에서 AI(Claude)는 이렇게 활용한다.

  • docker run 명령의 각 옵션이 무슨 의미인지 설명 요청
  • 컨테이너가 안 뜰 때 에러 메시지 해석
  • "이 포트 바인딩이 외부에 노출되는 설정인지" 검토 요청
tip

환경 구축 단계부터 AI에게 "이 설정이 안전한지" 를 먼저 묻는 습관을 들이면, 실습 내내 안전 범위를 벗어나지 않게 된다.

다음​