개념 사전 · 프로그램

Mutillidae II

OWASP Mutillidae II · Mutillidae

여러 웹 취약점을 의도적으로 구현한 OWASP의 실습용 웹 애플리케이션이다. 취약한 기능과 힌트, 보안 설정을 이용해 원인 분석과 점검 절차를 연습한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 웹 입력·인증·세션·접근 통제 등 다양한 학습 대상을 한 환경에서 제공한다.
  • 힌트와 소스 코드를 관찰하여 현상과 취약한 구현을 연결한다.
  • 승인된 진단 도구의 결과를 사람이 재확인하는 실습 대상으로 사용한다.

02어떤 순서로 동작하나

  1. 구성 요소 확인

    웹 서버, , 데이터 저장소의 구성과 배포 버전을 기록한다. 설치 방식에 따라 컨테이너와 추가 서비스 구성이 달라질 수 있다.

  2. 기능과 사용자 선택

    학습할 기능, 로그인 사용자, 를 정한다. 권한과 상태가 다르면 같은 요청도 다르게 처리될 수 있다.

  3. 정상 요청 확보

    입력 필드, , 쿠키와 응답을 기록해 비교 기준을 만든다.

  4. 처리 경로 분석

    요청이 검증·질의·파일·출력 등 어느 처리에 도달하는지 코드와 관측으로 대조한다. 힌트는 원인을 설명하는 보조 자료로 사용한다.

  5. 방어 조건 비교

    보안 설정 또는 개선 구현에서 동일한 기능을 다시 확인하고, 차이가 발생한 처리와 검증 기준을 보고서에 남긴다.

03먼저 알아둘 용어와 구성요소

·· 계열 데이터베이스· 등의 조합을 가리키는 서버 구성 표현이다.
교육용 애플리케이션이 취약한 구현과 방어가 적용된 구현을 선택하도록 제공하는 설정이다.
요청이 수행하려는 동작의 의미를 나타내는 항목이다. GET·POST 등이 있으며 메서드만으로 요청이 안전해지지 않는다.
요청에서 서버에 전달하는 이름과 값의 입력 항목이다.
취약점 판단을 뒷받침하는 요청·응답·코드·설정·로그 등의 자료다.
실제로는 해당 조건의 문제가 아닌데 진단 도구나 규칙이 문제라고 보고한 결과다.

04예제로 따라가기

  • 가상 출력 과제: 제목 입력 A&B <C>를 태그 기능 없이 글자 그대로 보여 주어야 한다고 정한다. 특정 배포본에서 수행한 결과가 아닌 출력 문맥 비교다.
  • 위험한 출력: 이 값을 HTML 문자열 안에 그대로 이어 붙이면 <C>가 요소 문법으로 파싱될 수 있다. 화면에 보이는 결과만 아니라 생성된 DOM도 비교한다.
  • HTML 본문 출력: 서버 템플릿에서는 A&amp;B &lt;C&gt;처럼 그 문맥에 맞게 인코딩하면 화면에는 원래 글자가 나타난다. 인코딩된 저장값을 반복 인코딩하지 않는다.
  • 일반 DOM 텍스트 출력: div.textContent에는 원래 문자열을 전달한다. 이 API의 텍스트 노드 생성과 HTML 엔티티 인코딩은 서로 다른 처리이며 URL·스크립트 문맥에 그대로 재사용하지 않는다.

05혼동하기 쉬운 점과 확인 기준

  • 특정 OWASP Top 10 연도에 맞춘 과제를 최신 분류 전체와 동일시하지 않는다.
  • 실습 앱 초기화 기능과 운영 서비스의 데이터 복구 절차는 다르다.
  • 문서에 나온 서비스 개수나 설치 경로는 선택한 배포 방식과 버전에 따라 확인한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.