개념 사전 · 프로그램

bWAPP

a buggy web application

와 로 만든 의도적으로 취약한 웹 애플리케이션이다. 다양한 웹 보안 문제를 선택하여 입력 처리·인증·세션·권한 검사의 실패 원인을 배우는 교육용 대상이다.

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

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

  • 여러 웹 취약점 사례를 분리된 과제로 실습한다.
  • 브라우저 요청과 애플리케이션 처리, 서버 설정의 상호작용을 살핀다.
  • 가 미리 설치된 을 사용해 실습 환경을 구성할 수도 있다.

02어떤 순서로 동작하나

  1. 애플리케이션과 구분

    는 웹 애플리케이션이고 는 이를 미리 설치한 배포본이다. 선택한 이미지와 프로그램 버전을 기록한다.

  2. 격리와 복구 준비

    실습망의 접근 범위를 정하고 가상 데이터를 준비한다. 반복 실습에 사용할 이나 초기 상태를 확보한다.

  3. 과제 조건 확인

    선택한 취약점의 입력 위치, 보안 수준, 로그인 상태와 정상 요청을 기록한다.

  4. 결과와 처리 위치 비교

    응답·애플리케이션 코드·로그를 대조해 입력이 어느 처리 단계에 영향을 주었는지 확인한다.

  5. 방어 원리로 정리

    실습에서 관측한 결과를 원인·영향·방어·재검증 조건으로 나누어 설명한다. 과거 구성의 결과를 현재 제품의 기본 동작으로 일반화하지 않는다.

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

와 실습 구성 요소를 미리 설치해 배포하는 이다. 프로그램 자체와 동일한 개념은 아니다.
의 특정 시점 상태를 기록해 실습을 되돌리는 데 사용하는 기능이다. 별도 백업과 보존 정책을 대신하지는 않는다.
실습 대상과 접근 범위를 제한해 다른 운영 서비스와 분리한 네트워크다.
브라우저가 보낸 데이터를 서버에서 다시 검사하는 처리다. 화면의 입력 제한만으로 대체할 수 없다.
이전 세대의 소프트웨어·설정 조합이다. 학습에는 유용하지만 현재 권장 구성과 구별해야 한다.
문제가 발생했을 때 기밀성·무결성·가용성이나 사용자 권한에 생기는 결과다.

04예제로 따라가기

  • 가상 저장형 과제: 사용자 A가 댓글에 <b>표본</b>라는 무해한 문자열을 저장하고 B가 나중에 댓글 목록을 조회한다고 정한다. 실제 실습 실행 기록은 아니다.
  • 저장 경로: B의 조회 요청에 댓글 입력 자체가 없어도 이전에 저장된 값이 응답에 나타난다. 입력이 현재 요청에만 반사되는 경로와 구별하는 단서다.
  • 파서 관찰: 글자 그대로 보여 줄 정책인데 굵게 표시되는 요소가 생성되면 외부 값이 HTML로 해석된 것이다. 이 무해한 표본만으로 스크립트 실행 가능 여부 전체를 입증하지는 않는다.
  • 방어·복구: HTML 본문 문맥에 맞는 출력 인코딩을 적용하면 태그 문자 자체가 보여야 한다. 반복 비교 때 DB 댓글도 초기화되는지 확인하며 이 외부 DB까지 복구한다고 가정하지 않는다.

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

  • 와 를 동의어로 취급하면 구성 문제와 웹 앱 문제를 혼동한다.
  • 오래된 취약한 이미지의 동작을 최신 ·운영체제·웹 서버 전체에 그대로 적용하지 않는다.
  • 실습용 애플리케이션이나 이미지는 이 정적 노트 사이트의 공개 배포 대상이 아니다.

06상세 노트 · 실습 자료

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

공식 문서 · 표준

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