Burp Proxy 에서 실시간으로 HTTP 응답 수정하기

Beginner
지금 연습하기

소개

Burp Suite 는 웹 애플리케이션의 보안 테스트를 수행하기 위한 강력한 플랫폼입니다. 핵심 구성 요소 중 하나인 Burp Proxy 는 브라우저와 대상 웹 서버 간의 중간자 역할을 합니다. 이를 통해 양방향으로 이동하는 원시 트래픽을 가로채고, 검사하고, 수정할 수 있습니다.

요청을 가로채는 것은 일반적인 작업이지만, 응답을 가로채고 수정하는 것 또한 보안 테스트에 중요합니다. 이를 통해 클라이언트 측 애플리케이션이 서버로부터 예상치 못한 또는 조작된 데이터를 어떻게 처리하는지 테스트할 수 있습니다.

이 랩에서는 Burp Proxy 를 구성하여 서버 응답을 가로채고, 브라우저에 표시되기 전에 웹 페이지의 HTML 콘텐츠를 수정하는 방법을 배우게 됩니다. 이 시연을 위해 간단한 로컬 웹 서버를 사용할 것입니다.

Proxy > Options > Intercept Server Responses 로 이동

이 단계에서는 웹 서버로부터의 응답 가로채기를 활성화하도록 Burp Suite 를 구성합니다. 기본적으로 Burp Proxy 는 브라우저에서 나가는 요청만 가로챕니다.

먼저 Burp Suite 를 실행해야 합니다. 애플리케이션 메뉴에서 찾거나 검색하여 실행할 수 있습니다.

Burp Suite 가 열리면 다음을 수행합니다.

  1. 창 상단의 Proxy 탭을 클릭합니다.
  2. Proxy 탭 내에서 Options 하위 탭을 클릭합니다.
  3. 옵션을 스크롤하여 Intercept Server Responses라는 제목의 섹션을 찾습니다.

이 섹션에는 Burp Proxy 가 들어오는 HTTP 응답을 가로챌지 여부와 방법을 제어하는 설정이 포함되어 있습니다. 이제 다음 단계를 위한 필요한 구성 영역을 찾았습니다.

'Intercept responses based on the following rules' 체크박스 활성화

이 단계에서는 응답 가로채기 기능을 활성화합니다.

이전 단계에서 찾은 Intercept Server Responses 섹션에서 체크박스를 볼 수 있습니다.

  1. Intercept responses based on the following rules 레이블 옆의 체크박스를 클릭합니다.

이 상자를 선택하면 Burp Proxy 는 아래에 정의된 규칙과 일치하는 서버 응답을 가로채도록 구성됩니다. 기본 규칙인 Is a response to a request that was intercepted는 자동으로 추가되며 우리의 요구에 완벽합니다. 이 규칙은 프록시가 가로챈 요청에 대한 응답인 경우에만 응답을 가로채도록 Burp 에 지시합니다. 이를 통해 Burp 가 배경 이미지나 스크립트와 같은 모든 응답에서 일시 중지되는 것을 방지하고 적극적으로 검사하는 트래픽에만 집중할 수 있습니다.

요청 가로채기 및 전달

이 단계에서는 Burp 의 내장 브라우저를 사용하여 로컬 웹 서버에 요청을 보내고 이를 가로챕니다.

  1. Proxy > Intercept 하위 탭으로 이동합니다.
  2. 버튼이 Intercept is on이라고 표시되는지 확인합니다. "Intercept is off"라고 표시되면 클릭하여 가로채기를 활성화합니다.
  3. Open Browser 버튼을 클릭합니다. Burp Proxy 를 사용하도록 사전 구성된 새 Chromium 브라우저 창이 열립니다.
  4. 브라우저의 주소 표시줄에 http://127.0.0.1:8000을 입력하고 Enter 키를 누릅니다.

브라우저가 무한정 로드되는 것처럼 보일 것입니다. 이는 Burp 가 HTTP 요청을 가로챘기 때문입니다. Burp Suite 창으로 다시 전환합니다. Proxy > Intercept 탭에서 원시 HTTP 요청을 볼 수 있습니다.

GET / HTTP/1.1
Host: 127.0.0.1:8000
... (other headers)

이것은 브라우저에서 로컬 서버로 보내는 요청입니다. 서버로 진행되도록 하려면 Forward 버튼을 클릭합니다. 요청을 전달한 후 Burp 는 이제 서버에서 돌아오는 응답을 가로채기 위해 대기합니다.

가로챈 응답의 HTML 본문 수정

이 단계에서는 브라우저로 전송되기 전에 HTTP 응답의 내용을 편집합니다.

이전 단계에서 응답 가로채기를 활성화하고 요청을 전달했기 때문에, Proxy > Intercept 탭에는 이제 서버의 응답이 들어 있습니다. 다음과 유사하게 보일 것입니다.

HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.6
Date: ...
Content-type: text/html
Content-Length: ...

<h1>Welcome to the Original Page!</h1><p>This is the content you will modify.</p>

주요 텍스트 영역은 편집 가능합니다. 이곳에서 응답을 실시간으로 수정할 수 있습니다.

  1. 응답 본문 텍스트 영역에서 <h1>Welcome to the Original Page!</h1> 줄을 찾습니다.
  2. 텍스트를 <h1>Welcome to the Modified Page!</h1>로 변경합니다.
  3. 원하는 경우 단락 텍스트를 예를 들어 <p>This content has been changed by Burp Proxy.</p>와 같이 변경할 수도 있습니다.

이제 서버의 응답을 변경했습니다. 이 응답은 여전히 Burp Proxy 에 의해 보유 중이며 아직 브라우저에 도달하지 않았습니다.

수정된 응답 전달 및 브라우저에서의 변경 사항 관찰

이 마지막 단계에서는 수정된 응답을 브라우저로 보내고 결과를 확인합니다.

수정된 응답은 여전히 Proxy > Intercept 탭에서 대기 중입니다.

  1. 마지막으로 Forward 버튼을 클릭합니다. 이렇게 하면 응답이 해제되고 수정된 버전이 브라우저로 전송됩니다.
  2. 이전에 로드 중이던 Burp Browser 창으로 다시 전환합니다.

페이지가 이제 로드를 완료하지만, 원래 내용 대신 입력한 텍스트가 표시됩니다. 다음과 같이 표시되어야 합니다.

Welcome to the Modified Page!
This content has been changed by Burp Proxy.

축하합니다! HTTP 응답을 성공적으로 가로채고, 전송 중에 내용을 수정했으며, 브라우저에서 변경 사항을 관찰했습니다. 이는 웹 애플리케이션 보안 테스트의 기본적인 기능을 보여줍니다. 이제 "Intercept is on" 버튼을 클릭하여 가로채기를 끌 수 있습니다.

요약

이 실습에서는 Burp Suite 의 핵심 기능에 대한 실습 경험을 쌓았습니다. 다음을 배웠습니다.

  • 기본적으로 비활성화되어 있는 서버 응답 가로채기를 위해 Burp Proxy 를 구성하는 방법.
  • 요청 가로채기, 전달, 그리고 해당 응답을 잡는 워크플로우를 따르는 방법.
  • 브라우저에 도달하기 전에 HTTP 응답 본문을 실시간으로 수정하는 방법.
  • 렌더링된 웹 페이지에 대한 응답 수정의 직접적인 영향을 관찰하는 방법.

이 기법은 웹 애플리케이션의 프론트엔드 코드가 서버로부터 예상치 못한 또는 악의적인 데이터를 어떻게 처리하는지 테스트하는 데 있어 웹 보안의 기본입니다. 이를 통해 Cross-Site Scripting (XSS) 또는 Broken Access Control 과 같은 취약점을 발견할 수 있습니다.