Burp Proxy 에서 실시간으로 HTTP 요청 수정하기

Beginner
지금 연습하기

소개

이 실습에서는 웹 애플리케이션 보안 테스트에 가장 인기 있는 도구 중 하나인 Burp Suite 를 사용하여 웹 트래픽을 가로채고 수정하는 기본 사항을 배우게 됩니다. HTTP 요청을 가로채고, 서버에 도달하기 전에 내용을 변경한 다음, 응답을 관찰하는 능력은 파라미터 변조 (parameter tampering) 및 안전하지 않은 직접 객체 참조 (insecure direct object references) 와 같은 광범위한 취약점을 발견하는 데 필수적인 기술입니다.

Burp Proxy 를 사용하여 브라우저에서 요청을 캡처하고, URL 파라미터를 실시간으로 수정하여 로컬에서 실행되는 간단한 웹 애플리케이션으로 전달할 것입니다. 이 실습은 프록시가 클라이언트와 서버 간의 통신을 조작하는 데 어떻게 사용될 수 있는지 보여줄 것입니다.

프록시 탭에서 가로채기 모드 활성화하기

이 단계에서는 Burp Suite 를 실행하고 트래픽 가로채기를 위한 핵심 기능을 활성화합니다. Burp Proxy 는 브라우저와 대상 웹 서버 사이에서 중간자 역할을 하여, 이를 통과하는 모든 트래픽을 보고 수정할 수 있게 해줍니다.

먼저, 데스크톱 왼쪽 상단의 애플리케이션 실행기를 열고 Burp Suite 를 시작합니다.

  1. **"Temporary project"**를 클릭한 다음 **"Next"**를 클릭합니다.
  2. **"Use Burp defaults"**를 선택하고 **"Start Burp"**를 클릭합니다.

Burp Suite 가 열리면 Proxy 탭으로 이동합니다. 이곳에서 HTTP 트래픽 가로채기를 제어합니다.

Proxy 탭 안에는 여러 하위 탭이 있습니다. Intercept 하위 탭에 있는지 확인하세요. 여기에는 가로채기를 켜고 끄는 토글 버튼이 있습니다. 기본적으로 꺼져 있을 수 있습니다.

**"Intercept is off"**라고 표시된 버튼을 클릭하여 활성화합니다. 버튼의 텍스트가 **"Intercept is on"**으로 변경되고 눌린 것처럼 보일 것입니다.

이제 Burp Proxy 는 이 실습 환경에서 사전 구성된 브라우저가 만드는 다음 HTTP 요청을 적극적으로 기다리고 있습니다.

브라우저에서 요청 가로채기

이 단계에서는 웹 브라우저에서 HTTP 요청을 생성하고 Burp Suite 에서 이를 캡처합니다. 가로채기 모드가 활성화되어 있으므로, Burp 는 요청을 서버로 보내지 않고 보유하며 사용자의 다음 조치를 기다립니다.

실습 환경에서 제공되는 웹 브라우저를 엽니다. 이 브라우저는 이미 127.0.0.1:8080에서 실행 중인 Burp Proxy 를 통해 트래픽을 보내도록 구성되어 있습니다.

브라우저의 주소 표시줄에 설정 스크립트에 의해 시작된 간단한 웹 애플리케이션으로 이동합니다. 다음 URL 을 입력하고 Enter 키를 누릅니다.

http://127.0.0.1:5000/search?q=books

브라우저 탭에 로딩 아이콘이 표시되고 페이지가 로드되지 않는 것을 볼 수 있습니다. 이는 예상된 동작입니다. Burp Proxy 가 요청을 성공적으로 가로챘고 사용자의 조치를 기다리고 있음을 나타냅니다.

이제 Burp Suite 창으로 다시 전환합니다. Proxy -> Intercept 탭에서 브라우저가 방금 보낸 HTTP 요청의 원시 내용을 볼 수 있습니다.

GET /search?q=books HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
...

이제 요청이 목적지에 도달하기 전에 HTTP 요청을 성공적으로 캡처했습니다.

'Raw' 요청 보기에서 매개변수 값 변경하기

이 단계에서는 가로챈 HTTP 요청을 수정합니다. 이것이 실시간 요청 조작의 핵심입니다. 메서드, 경로, 헤더 또는 본문을 포함하여 요청의 어떤 부분이든 변경할 수 있습니다. 이 실습에서는 URL 매개변수를 변경합니다.

요청이 Proxy -> Intercept 탭에 표시된 상태에서 Raw 보기에 있는지 확인합니다. 이 보기는 요청의 일반 텍스트를 보여주므로 직접 편집하기 쉽습니다.

요청의 첫 번째 줄을 찾습니다.

GET /search?q=books HTTP/1.1

q=books 부분은 URL 매개변수입니다. 서버 측 애플리케이션은 q의 값 (현재 books) 을 사용하여 응답을 생성합니다.

이제 텍스트 영역에서 이 값을 직접 편집합니다. Raw 보기를 클릭하고 booksdvds로 변경합니다.

수정된 첫 번째 줄은 이제 다음과 같이 보여야 합니다.

GET /search?q=dvds HTTP/1.1

전송 중인 요청 데이터를 성공적으로 변경했습니다. 브라우저는 이 변경 사항을 인지하지 못합니다. 브라우저는 여전히 q=books로 페이지를 요청했다고 생각합니다. 서버는 아직 어떤 요청도 받지 못했습니다.

수정된 요청 전달하기

이 단계에서는 수정된 요청을 Burp Proxy 에서 해제하고 웹 서버로 계속 보내도록 합니다.

Intercept 탭에서 요청을 편집한 후에는 어떻게 처리할지 결정해야 합니다. 보기 상단의 버튼을 통해 세 가지 주요 옵션이 있습니다.

  • Forward: 요청을 (현재 상태, 수정되었을 수 있는 상태로) 서버로 보냅니다.
  • Drop: 요청을 완전히 삭제합니다. 브라우저는 결국 시간 초과됩니다.
  • Action: 요청을 다른 Burp 도구로 보내는 것과 같은 다른 작업 메뉴를 제공합니다.

수정된 요청을 서버로 보내려면 Forward 버튼을 클릭합니다.

요청을 전달한 후 Burp 는 동일한 탭에 서버의 응답을 표시합니다. Forward를 다시 클릭하여 이 응답을 브라우저로 다시 전달할 수 있습니다.

관심 있는 요청을 처리한 후에는 후속 요청 (예: 파비콘) 을 가로채는 것을 피하기 위해 가로채기를 끄는 것이 좋습니다. "Intercept is on" 버튼을 클릭하여 **"Intercept is off"**로 다시 전환합니다. 이렇게 하면 다른 모든 트래픽이 자유롭게 흐를 수 있습니다.

수정된 요청에 대한 서버 응답 관찰하기

이 단계에서는 브라우저와 Burp Suite 의 기록 모두에서 작업 결과를 관찰합니다. 이를 통해 서버가 수정된 데이터를 처리했음을 확인할 수 있습니다.

먼저 웹 브라우저로 다시 전환합니다. 이전에 로딩 중 멈춰 있던 페이지가 이제 완전히 로드되어야 합니다. 페이지에 표시된 내용을 살펴보십시오. 다음과 같이 읽어야 합니다.

You searched for: dvds

이는 서버가 원래 값 (books) 이 아닌 수정된 매개변수 값 (dvds) 을 수신하고 처리했음을 확인시켜 줍니다. 서버를 속여 다른 콘텐츠를 표시하게 만드는 데 성공했습니다.

다음으로, 더 자세한 보기를 위해 Burp Suite 로 돌아갑니다. Proxy 탭을 클릭한 다음 HTTP history 하위 탭을 클릭합니다. 이 탭은 프록시를 통과한 모든 요청과 응답을 기록합니다. GET /search?q=dvds에 대한 항목이 표시되어야 합니다. 이를 클릭하면 보낸 전체 요청과 서버가 반환한 해당 응답을 볼 수 있으며, 상호 작용에 대한 완전한 기록을 제공합니다.

이 간단한 연습은 강력한 개념을 보여줍니다. 클라이언트 측에서 오는 데이터는 Burp Suite 와 같은 프록시 도구를 사용하여 공격자가 쉽게 조작할 수 있으므로 절대 신뢰해서는 안 됩니다.

요약

이 실습에서는 Burp Proxy 를 사용하여 HTTP 요청을 실시간으로 수정하는 필수 기술을 배웠습니다.

다음과 같은 작업을 성공적으로 수행했습니다.

  • Burp Proxy 에서 인터셉트 모드 활성화
  • 브라우저에서 라이브 HTTP 요청 캡처
  • 원시 요청 보기에서 URL 매개변수 수정
  • 변조된 요청을 웹 서버로 전달
  • 서버의 응답이 수정된 데이터를 기반으로 함을 관찰

이 기법은 웹 애플리케이션 보안 테스트의 기본적인 구성 요소로, 클라이언트 - 서버 통신을 조작하여 다양한 취약점을 탐색할 수 있게 해줍니다.