개념 사전 · 프로그램
Mutillidae II
OWASP Mutillidae II · Mutillidae
여러 웹 취약점을 의도적으로 구현한 OWASP의 실습용 웹 애플리케이션이다. 취약한 기능과 힌트, 보안 설정을 이용해 원인 분석과 점검 절차를 연습한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 웹 입력·인증·세션·접근 통제 등 다양한 학습 대상을 한 환경에서 제공한다.
- 힌트와 소스 코드를 관찰하여 현상과 취약한 구현을 연결한다.
- 승인된 진단 도구의 결과를 사람이 재확인하는 실습 대상으로 사용한다.
02어떤 순서로 동작하나
- 구성 요소 확인
웹 서버, , 데이터 저장소의 구성과 배포 버전을 기록한다. 설치 방식에 따라 컨테이너와 추가 서비스 구성이 달라질 수 있다.
- 기능과 사용자 선택
학습할 기능, 로그인 사용자, 를 정한다. 권한과 상태가 다르면 같은 요청도 다르게 처리될 수 있다.
- 정상 요청 확보
입력 필드, , 쿠키와 응답을 기록해 비교 기준을 만든다.
- 처리 경로 분석
요청이 검증·질의·파일·출력 등 어느 처리에 도달하는지 코드와 관측으로 대조한다. 힌트는 원인을 설명하는 보조 자료로 사용한다.
- 방어 조건 비교
보안 설정 또는 개선 구현에서 동일한 기능을 다시 확인하고, 차이가 발생한 처리와 검증 기준을 보고서에 남긴다.
03먼저 알아둘 용어와 구성요소
- ·· 계열 데이터베이스· 등의 조합을 가리키는 서버 구성 표현이다.
- 교육용 애플리케이션이 취약한 구현과 방어가 적용된 구현을 선택하도록 제공하는 설정이다.
- 요청이 수행하려는 동작의 의미를 나타내는 항목이다. GET·POST 등이 있으며 메서드만으로 요청이 안전해지지 않는다.
- 요청에서 서버에 전달하는 이름과 값의 입력 항목이다.
- 취약점 판단을 뒷받침하는 요청·응답·코드·설정·로그 등의 자료다.
- 실제로는 해당 조건의 문제가 아닌데 진단 도구나 규칙이 문제라고 보고한 결과다.
04예제로 따라가기
- 가상 출력 과제: 제목 입력 A&B <C>를 태그 기능 없이 글자 그대로 보여 주어야 한다고 정한다. 특정 배포본에서 수행한 결과가 아닌 출력 문맥 비교다.
- 위험한 출력: 이 값을 HTML 문자열 안에 그대로 이어 붙이면 <C>가 요소 문법으로 파싱될 수 있다. 화면에 보이는 결과만 아니라 생성된 DOM도 비교한다.
- HTML 본문 출력: 서버 템플릿에서는 A&B <C>처럼 그 문맥에 맞게 인코딩하면 화면에는 원래 글자가 나타난다. 인코딩된 저장값을 반복 인코딩하지 않는다.
- 일반 DOM 텍스트 출력: div.textContent에는 원래 문자열을 전달한다. 이 API의 텍스트 노드 생성과 HTML 엔티티 인코딩은 서로 다른 처리이며 URL·스크립트 문맥에 그대로 재사용하지 않는다.
05혼동하기 쉬운 점과 확인 기준
- 특정 OWASP Top 10 연도에 맞춘 과제를 최신 분류 전체와 동일시하지 않는다.
- 실습 앱 초기화 기능과 운영 서비스의 데이터 복구 절차는 다르다.
- 문서에 나온 서비스 개수나 설치 경로는 선택한 배포 방식과 버전에 따라 확인한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.