정보보안기초 · 14분 읽기
Kali·Burp로 웹 요청 관찰하기
실습 도구는 요청과 응답의 구조를 드러내는 관찰 수단이다. 격리된 대상과 정상 요청을 기준으로 한 번에 하나의 조건을 확인한다.
개념부터 찾아보기
정의·역할·동작 원리를 독립 페이지에서 확인하세요. 본문의 밑줄 용어에도 설명이 있습니다.
이 노트에서 설명할 수 있게 되는 것
- 브라우저·프록시·서버 사이의 두 연결을 구분한다.
- 요청 이력과 재전송 도구를 이용해 하나의 가설을 시험한다.
- 토큰 만료·요청 보류·상태 변경이 결과에 주는 영향을 설명한다.
01개념과 구성 요소
- 보안 진단·포렌식 도구를 제공하는 이며 도구 설치 자체가 진단 정확성을 증명하지 않는다.
- Burp Proxy브라우저와 서버 사이의 요청·응답을 관찰하고 허가된 실습에서 바꿔 비교하는 중간 지점이다.
- 도구 역할는 대기·수정, 는 기록, 는 선택한 요청의 반복 비교를 맡는다.
02프록시에서 HTTPS 요청을 관찰하는 순서
- 수신 경로 연결브라우저 프록시 주소와 Burp listener를 맞추고 다른 서비스와 주소·포트가 충돌하지 않게 한다.
- 실습 CA 신뢰허가된 실습 브라우저에서 프록시가 발급하는 인증서를 검증할 신뢰를 구성한다.
- 첫 연결브라우저가 프록시가 제시한 대상 이름의 인증서를 검증하며 프록시와 를 맺는다.
- 두 번째 연결프록시가 실제 서버와 별도로 를 맺는다. 두 연결의 키와 인증 검증 문맥은 다르다.
- 요청 비교에서 forward/drop을 선택하고 ·에서 메서드·본문·쿠키·응답을 비교한다.
03실습 환경은 요청 경로를 통제하는 장치
- 는 보안 진단과 포렌식 도구를 묶은 기반 이다. 도구를 설치했다는 사실과 진단 결과가 정확하다는 사실은 별개다.
- 실습 구성분석용 클라이언트·중간 프록시·의도적으로 취약한 실습 애플리케이션을 분리하면 요청의 생성과 처리 위치를 관찰하기 쉽다.
- 망 격리Host-only·내부 네트워크·전용 은 실습 대상과 관찰 위치를 고정한다. 패키지 갱신을 위한 경로가 있다고 해서 대상 서버까지 외부에 공개해야 하는 것은 아니다.
- 범위 스냅샷은 파일·설정 복구의 기준이고, 프록시 기록과 애플리케이션 로그는 요청 재현의 기준이다. 이 둘을 함께 두어야 이전 실험 상태가 다음 실험 결과를 바꾸는 혼동을 줄인다.
04Forward·Reverse·Intercepting Proxy
- 프록시 종류Forward proxy는 클라이언트가 선택한 중계 서버이고 는 서비스의 앞에서 백엔드로 요청을 전달한다. Burp의 학습용 interception은 브라우저와 대상 사이에 HTTP 처리 지점을 만들어 요청을 잠시 멈추고 내용을 관찰하는 방식이다.
- 패킷 캡처와 차이네트워크의 모든 패킷을 자동으로 잡는 수동 센서와는 다르다.
- Listener·포트브라우저의 프록시 설정이 실제 listener를 가리키고 listener가 그 인터페이스에서 실행되어야 요청이 Burp에 도달한다. 와 프록시가 같은 주소·포트에서 동시에 수신하려 하면 충돌하므로 한쪽 listener를 다른 포트로 옮겨야 한다.
- 바인딩 범위프록시를 모든 인터페이스에 공개하는 것과 브라우저가 접근할 주소 하나에 바인딩하는 것은 노출 범위가 다르다.
05HTTPS interception은 두 개의 TLS 연결
- 두 구간HTTPS를 관찰할 때 브라우저↔Burp와 Burp↔대상 사이에 별도의 연결이 생긴다. 브라우저는 대상 이름을 담은 Burp 발급 인증서를 검증하고, Burp는 실제 서버와 를 협상한다.
- 각 구간의 검증따라서 브라우저가 실습 CA를 신뢰하지 않으면 경고가 발생하며, 정상적인 패킷 캡처만으로 평문을 읽는 방식과 구별된다.
- 와 평문클라이언트의 인증서 고정이나 mTLS, 지원하지 않는 프로토콜 조건은 interception을 막을 수 있다. 이 실패는 웹 애플리케이션 자체가 중단되었다는 증거가 아니다.
- CA 신뢰내장 브라우저 또는 전용 프로필을 쓰면 실습 신뢰 저장소의 범위를 분명히 할 수 있다. 프록시가 를 종료하는 순간 프로젝트 기록에는 평문 쿠키·본문이 남을 수 있으므로 캡처 화면에는 가상 값만 사용한다.
06Intercept·History·Repeater의 역할
- On에서 요청을 보류하면 대상 서버는 아직 해당 요청을 받지 않는다. Forward는 현재 요청을 다음 단계로 전달하고 Drop은 폐기한다.
- Off는 자동 전달 상태이며 HTTP 기록까지 반드시 꺼진다는 뜻은 아니다. 화면이 멈춘 것처럼 보일 때 보류 중인 요청이 원인일 수 있다.
- 는 선택한 요청의 한 필드를 바꾸어 반복하고 응답을 비교하는 도구다. Cookie를 제거한 요청, 객체 ID만 바꾼 요청, 토큰을 제거한 요청은 서로 다른 가설을 시험한다.
- 요청 상태여러 필드를 동시에 바꾸면 어느 변화가 결과를 만들었는지 설명하기 어렵다. HTTP 응답 코드와 함께 본문·redirect·길이·서버 상태 변화를 읽는다.
LEARN THROUGH PRACTICE
Burp에서 멈춘 요청과 서버에 도착한 요청 구분하기
프록시가 요청을 잡는 위치를 이해하고 브라우저 대기·전달·응답을 한 흐름으로 설명한다.
실습 구성과 전제
- 자신이 운영하는 격리 와 전용 브라우저 프로필을 사용한다.
- 브라우저 프록시가 Burp 리스너를 향하도록 설정하고 운영 계정·실제 비밀번호는 입력하지 않는다.
Intercept가 요청을 보류하는 상태를 본다
- 브라우저에서 로그인 페이지를 열고 가 켜져 있는지 확인한다. 프록시에서 멈춘 요청은 아직 서버 응답을 받지 않은 상태다.
- Forward는 보류 요청을 다음 홉으로 보내고 Drop은 버린다. 브라우저가 멈춘 것처럼 보여도 우선 프록시의 대기 요청을 확인한다.
원본 크기로 보기 ↗- Proxy→Intercept가 선택돼 있고 Intercept on·Forward·Drop 버튼이 보인다.
- 목록의 요청은 GET이며 login.php를 향한다. 이 화면만으로 로그인 처리가 완료됐다고 볼 수 없다.
확인 기준Forward 전후 브라우저 상태와 HTTP 에 응답이 생기는지를 비교한다.
헤더와 폼 본문을 나누어 읽는다
- Content-Type이 application/x-www-form-urlencoded이면 본문은 이름=값 쌍이다. Cookie는 세션 식별 자료이고 본문의 user_token은 애플리케이션이 별도로 검사할 수 있다.
- Content-Length는 글자 수가 아니라 전송 바이트 길이와 연결된다. 한글이나 URL 인코딩을 포함하면 보이는 문자열 길이와 다를 수 있다.
원본 크기로 보기 ↗- 요청 헤더와 빈 줄 아래 폼 본문이 나뉘며 Content-Type·Cookie·Referer를 볼 수 있다.
- 본문에는 로그인 입력과 user_token이 함께 있다. 이 값들은 실습 때 새로 받은 값으로 다뤄야 한다.
확인 기준실제 계정·세션 값은 보고서에 붙이지 않고 필드 이름과 처리 결과만 기록한다.
한 필드씩 바꾼 요청을 비교한다
- 에는 정상 요청을 기준본으로 보관한다. 무해한 테스트 입력 하나만 바꾸고 메서드·경로·쿠키·토큰·응답 상태를 비교한다.
- 로그인 화면으로 돌아오면 입력 검증 실패뿐 아니라 세션 만료나 토큰 불일치를 함께 점검한다. 응답 길이 차이만으로 성공을 판정하지 않는다.
확인 기준브라우저의 정상 기능과 같은 세션 조건에서 요청이 처리되는지 확인한다.
실습에서 확인한 동작 원리
- 프록시 보류는 서버 장애와 다르다.
- 요청의 메서드·헤더·본문·세션 상태를 함께 보존해야 비교가 재현된다.
설정·출력 추가로 확인하기 70장
아래 화면을 펼쳐 위 실습의 설정값, 명령과 확인 기준을 비교해 보세요. 각 묶음은 별도 실습 기록입니다.
실습 화면 묶음 01 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 02 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 03 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 04 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 05 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 06 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 07 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 08 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 09 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 10 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 11 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 12 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 13 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 14 1장
원본 크기로 보기 ↗- 학습 원본 · Burp Proxy·브라우저 프록시 실습의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 15 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 hydra에 수록된 화면·도식이다.
실습 화면 묶음 16 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 hydra에 수록된 화면·도식이다.
실습 화면 묶음 17 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 BurpSuite에 수록된 화면·도식이다.
실습 화면 묶음 18 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 BurpSuite에 수록된 화면·도식이다.
실습 화면 묶음 19 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 예시 비밀번호 복붙으로 해보기에 수록된 화면·도식이다.
실습 화면 묶음 20 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 예시 비밀번호 복붙으로 해보기에 수록된 화면·도식이다.
실습 화면 묶음 21 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 예시 비밀번호 복붙으로 해보기에 수록된 화면·도식이다.
실습 화면 묶음 22 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 예시 비밀번호 복붙으로 해보기에 수록된 화면·도식이다.
실습 화면 묶음 23 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 예시 비밀번호 복붙으로 해보기에 수록된 화면·도식이다.
실습 화면 묶음 24 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 칼리 내 txt파일을 작성하여 브루트포스 공격시 불러오는 방법에 수록된 화면·도식이다.
실습 화면 묶음 25 1장
원본 크기로 보기 ↗- 학습 원본 · Burp·Hydra 격리 로그인 실습의 칼리 내 txt파일을 작성하여 브루트포스 공격시 불러오는 방법에 수록된 화면·도식이다.
실습 화면 묶음 26 12장
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「방화벽이 있다면 기본 리버스 쉘이 막힐 수 있다.」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「시나리오 : 기본 리버스 쉘 페이로드」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건. 원문에서 「실행」에 배치된 그림 또는 화면이다.
원본 크기로 보기 ↗- 수업 원본 자료 · 허가된 실습 환경의 모듈 선택·옵션·연결 및 실패 조건.
실습 화면 묶음 27 1장
원본 크기로 보기 ↗- 학습 원본 · WebGoat HTTP 메시지 학습의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 28 1장
원본 크기로 보기 ↗- 학습 원본 · WebGoat HTTP 메시지 학습의 HTTP Message·Method·Status·보안 Header · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 29 1장
원본 크기로 보기 ↗- 학습 원본 · WebGoat HTTP 메시지 학습의 HTTP Message·Method·Status·보안 Header · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 30 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 교육용 메일·초기화 흐름의 WebWolf Mailbox 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 31 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 교육용 메일·초기화 흐름의 WebWolf Mailbox 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 32 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 교육용 메일·초기화 흐름의 WebWolf Mailbox 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 33 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 교육용 메일·초기화 흐름의 WebWolf Phishing Landing·Incoming Request 실습 · 챗지피티-사용자 합…에 수록된 화면·도식이다.
실습 화면 묶음 34 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 교육용 메일·초기화 흐름의 WebWolf Phishing Landing·Incoming Request 실습 · 챗지피티-사용자 합…에 수록된 화면·도식이다.
실습 화면 묶음 35 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 요청 수집 교육 실습의 WebWolf Phishing Landing·Incoming Request 실습 · 챗지피티-사용자 합…에 수록된 화면·도식이다.
실습 화면 묶음 36 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 요청 수집 교육 실습의 WebWolf Phishing Landing·Incoming Request 실습 · 챗지피티-사용자 합…에 수록된 화면·도식이다.
실습 화면 묶음 37 1장
원본 크기로 보기 ↗- 학습 원본 · WebWolf 요청 수집 교육 실습의 WebWolf Phishing Landing·Incoming Request 실습 · 챗지피티-사용자 합…에 수록된 화면·도식이다.
실습 화면 묶음 38 1장
원본 크기로 보기 ↗- 문서 문맥에 삽입된 원본 실습·개념 참고 화면이다. Kali·Burp로 웹 요청 관찰하기 학습 내용과 함께 당시 구성·설정·관찰 결과를 비교할 수 있다.
실습 화면 묶음 39 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 40 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 41 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 42 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 43 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 44 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 45 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 46 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 47 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 48 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 49 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 Browser DevTools 보안 검증 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 50 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 HTTP Message·Method·Status·보안 Header · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 51 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 HTTP Message·Method·Status·보안 Header · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 52 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 HTTP Message·Method·Status·보안 Header · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 53 1장
원본 크기로 보기 ↗- 학습 원본 · 브라우저 개발자 도구의 HTTP·콘솔 관찰의 HTTP Proxy·HTTPS Interception 실습 · 학습 자료에 수록된 화면·도식이다.
실습 화면 묶음 54 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 DVWA에 수록된 화면·도식이다.
실습 화면 묶음 55 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 DVWA에 수록된 화면·도식이다.
실습 화면 묶음 56 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 DVWA에 수록된 화면·도식이다.
실습 화면 묶음 57 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 WebGoat에 수록된 화면·도식이다.
실습 화면 묶음 58 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 WebGoat에 수록된 화면·도식이다.
실습 화면 묶음 59 1장
원본 크기로 보기 ↗- 학습 원본 · 웹 보안 실습 환경 준비의 WebGoat에 수록된 화면·도식이다.
07POST와 GET의 입력 위치 비교
- 메서드·입력 위치form body의 changeMe 필드를 query로 옮기고 메서드를 바꾸면 입력 위치가 달라진 요청을 비교할 수 있다. 이것은 메서드 이름만 바꾸는 일이 아니다.
- 서버 처리 차이서버가 파라미터를 query와 body 중 어디에서 읽는지, Content-Type에 따라 어떤 파서를 쓰는지, 라우트가 어떤 메서드를 허용하는지에 따라 결과가 달라진다.
- 가상 요청아래는 무해한 학습 값을 사용한 비교다. body를 제거하면 Content-Length도 현재 바이트 길이에 맞게 갱신하거나 제거해야 한다.
- HTTP 경계헤더와 본문 사이 빈 줄은 HTTP/1.1 메시지 구조를 나누므로 유지된다. 도구가 길이를 자동 계산하는지에 따라 편집 화면과 실제 전송 바이트가 달라질 수 있다.
text
POST /training/echo HTTP/1.1
Host: app.example.test
Content-Type: application/x-www-form-urlencoded
Content-Length: 14
message=lesson
비교 요청:
GET /training/echo?message=lesson HTTP/1.1
Host: app.example.test
[본문 없음]원리를 설명하는 가상 학습 예시입니다.
원리 심화
08프록시가 보여 주는 표현과 실제 전송 바이트
- 본문 길이HTTP/1의 Content-Length는 본문 바이트 수다. 화면의 글자 수나 디코딩된 입력 길이를 세면 다중 바이트·퍼센트 인코딩에서 달라진다.
- 자동 보정의 Update Content-Length 설정은 본문 변경에 따라 길이를 갱신한다. 사람이 적은 헤더와 실제 송신값이 같은지 확인해야 한다.
- 표현 계층URL·폼·JSON은 각각 다른 직렬화 규칙을 갖는다. 사람이 읽기 쉬운 Inspector 값과 Raw 요청의 바이트 표현을 구분한다.
- 이동 정책Redirect 자동 추적과 이동 응답의 쿠키 처리 설정은 후속 요청을 바꿀 수 있다. 한 번 전송 버튼을 눌렀다고 요청이 반드시 한 건인 것은 아니다.
- 관측 범위HTTPS 프록시는 브라우저와 서버 사이에서 를 각각 종료한다. 서버 인증서· 협상·HTTP 본문 중 어느 연결의 값을 보고 있는지 명시한다.
예제로 추적
09가상 폼 label=가의 길이 추적
- 문자열 선택교육용 입력 이름은 label, 값은 한글 가라고 가정한다. 실제 대상에 전송하지 않는 바이트 계산 예제다.
- 표현가의 은 3바이트이며 label=은 ASCII 6바이트다. 단순 문자열 label=가는 9바이트다.
- 폼 직렬화퍼센트 인코딩된 폼 본문 label=%EA%B0%80은 ASCII 15바이트다. HTTP 본문 길이는 이 전송 표현을 기준으로 계산한다.
- 서버 해석폼 디코딩 후 애플리케이션에는 가라는 값이 전달된다. 서버의 입력 문자 수와 네트워크 본문 길이가 달라도 정상일 수 있다.
- 비교 기록Raw 요청·Content-Type·Content-Length·서버의 파싱 결과를 함께 기록하면 인코딩 오류와 애플리케이션 검증 오류를 구분할 수 있다.
http
POST /training/echo HTTP/1.1
Host: lab.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
label=%EA%B0%80가상 요청의 표현 예시. 본문 뒤 줄바꿈을 추가하지 않은 15바이트를 계산했으며 실제 전송하지 않았다.
검증·예외
10Repeater 결과를 원래 브라우저와 비교하는 조건
- 인증 상태쿠키· 토큰·세션 만료를 비교한다. 오래된 요청을 다시 보내 받은 거부는 입력값 자체의 효과가 아닐 수 있다.
- 요청 변형Content-Length 갱신·줄바꿈 정규화·HTTP 버전 변환 설정을 기록한다. 편집기에서 보이는 문자열만으로 실제 바이트를 단정하지 않는다.
- 응답 계층자동 압축 해제가 적용된 본문 길이와 Content-이 있는 원래 응답 길이를 구분한다.
- 재현 단위첫 요청과 Redirect 뒤의 요청을 나누어 보존한다. 최종 200 응답만 남기면 중간 302·쿠키 갱신·거부 경로를 잃을 수 있다.
11Intruder의 입력 조합이 요청 수를 바꾼다
- PitchforkPitchfork와 Cluster bomb는 여러 입력 위치를 조합하는 방식이 다르다. Pitchfork는 여러 목록에서 같은 순번을 하나씩 꺼내 각 위치에 넣는다.
- Cluster bomb두 목록이 [A,B]와 [1,2]라면 A/1, B/2가 된다. Cluster bomb는 조합을 모두 시험하므로 A/1, A/2, B/1, B/2의 네 가지가 된다.
- 조합 수순회 순서보다 입력 공간이 곱으로 커진다는 사실이 핵심이다.
- Sniper·Battering ramSniper는 한 위치씩 같은 입력 집합을 바꾸며 다른 위치를 기준 상태로 유지하고, Battering ram은 같은 입력을 지정한 모든 위치에 동시에 넣는다. 정상 형식 검증 실습에서도 위치 선택과 조합 방식이 잘못되면 의미 없는 실패가 대량 발생한다.
- 관찰 변수각 요청이 상태를 바꾸거나 세션 토큰을 소모한다면 단순 조합 반복의 결과를 독립 표본처럼 볼 수 없다.
12프록시 관찰의 한계와 재현 자료
- 상태 코드 한계프록시에서 200을 보았다는 사실은 권한 검사가 성공했는지, DB 상태가 바뀌었는지까지 말해주지 않는다. 응답에 오류 메시지가 포함된 200, 로그인 페이지로 이동하는 302, 비동기 작업의 202는 각각 다른 의미다.
- 요청·로그 연결요청 ID·시각·변경 필드를 서버 로그와 연결하면 요청 전달과 업무 결과를 구분할 수 있다.
- 재현 자료실습을 다시 할 때 필요한 자료는 도구 버전, 대상 애플리케이션 버전, 기준 요청, 수정된 필드, 응답 차이, 서버 상태, 초기화 방법이다. 실제 세션 값을 재사용 가능한 학습 자료에 남기는 대신 토큰 위치와 역할을 가상 값으로 표시한다.
- 환경과 결과환경을 복구한 뒤 기준 요청이 다시 동일한 결과를 내야 실험의 전제도 복원된 것이다.
설명과 함께 보는 보조 도식
메시지 순서
모식도 · Burp 프록시의 두 통신 구간
시험 브라우저에서 신뢰를 설정한 HTTPS 관찰 환경이다.
01
첫 번째 TLS 연결
시험 브라우저는 프록시가 제시한 인증서를 검증한다.
전체 단계를 한 번에 읽기
- 01
첫 번째 TLS 연결
시험 브라우저는 프록시가 제시한 인증서를 검증한다.
- 02
두 번째 TLS 연결
프록시가 대상 서버와 별도의 연결을 만든다.
- 03
요청 수신·보류
필요하면 Intercept에서 요청 전달을 멈춘다.
- 상태
- 보류 시 서버 미도달
- 04
요청 전달
허용된 시험 요청을 서버로 전달한다.
- 05
서버 응답 수신
서버 응답이 서버와 프록시 사이의 연결로 돌아온다.
- 06
브라우저로 응답 중계
프록시가 브라우저와의 별도 연결로 응답을 전달한다.
- 증거
- 요청 이력 + 서버 로그
학습 확인
이해했는지 확인하기
- 실습 대상과 격리·복구 지점을 확인한다.
- 프록시에서 정상 요청의 메서드·쿠키·본문·응답을 읽는다.
- 한 조건씩 비교하고 서버 로그와 실제 상태 변화를 확인한다.
