오늘은 웹 프록시 도구중 아주아주 유명한 버프 스위트에 대해 알아보겠습니다.
이야기 했듯 버프 스위트는 웹 프록시 도구인데 여기서 프록시란 무엇일까요?
초등학교를 다닐 때 서로 크게 싸운 친구 A와 B가 있고 그 사이에 친구 C가 있을 때, A와 B 사이에서 C가 말을 대신 전해주는 모습을 본 적이 있지 않으신가요? 프록시는 이 친구 C입니다. 웹 브라우저 A와 웹 서버 B 사이에서 그 둘의 말을 듣고 대신 전해주는 친구죠.
그럼 많은 사람들이 이 웹 프록시 도구를 사용하는 이유는 무엇일까요?
그 이유는 웹 브라우저와 웹 서버 사이에 오가는 패킷을 자세하게 살펴볼 수도 있고, 심지어 중간에 데이터를 수정해서 보내는 등 다양한 것이 가능해서입니다.
사용하기 전에 먼저 세팅에 대해 알아보겠습니다.
프록시 메뉴에 들어가서 프록시 세팅 버튼을 누르면 가장 먼저 프록시 리스너라는 것이 나옵니다. 리스너라는 것은 프록시로 포트를 열어두고 누가 거기에다 패킷을 보낼 때! 귀가 있어야 들을 수 있는데 이 귀를 여는 것이 리스너를 여는 행위입니다. 즉 리스너를 열지 않으면 프록시를 열어도 소용이 없다는 것이지요.
해당 메뉴에서 add, edit, remove 버튼을 이용해 자유롭게 수정할 수 있습니다. 그 중 add 버튼을 누르면 Bind to pord 옵션에서 지정할 port번호를 입력하고, Bind to adderess 옵션에서 주소를 지정해야하는데 3가지 옵션이 나옵니다.
이렇게 수동으로 프록시를 설정할 수도 있고, 프록시 메뉴에서 open browser 버튼을 눌러 버프 스위트에서 자동으로 프록시를 설정해준 브라우저를 이용할 수도 있습니다.
버프 스위트에 모든 기능은 아니더라도 자주 쓰는 주요 기능에 대해서 알아보겠습니다.
인터셉트는 프록시가 브라우저에서 웹 서버로 보내는 패킷을 의도적으로 가로채서 해당 브라우저에서 응답을 받는 것을 막는 기능입니다. Intercept is off 라고 되어있는 버튼을 누르면 Intercept is on 으로 바뀌면서 패킷을 가로챕니다. 그 상태에서 Forward 버튼을 누르면 요청을 하나씩 보내주고 다시 인터셉트를 멈추면 막아놓은 요청을 전부 보내줍니다. 여기서 중요한 것은 가로챈 요청내용을 우리가 직접 수정해서 보낼 수 있다는 것입니다.
히스토리는 버프 스위트를 킨 이후 지나간 사이트들의 요청과 결과값을 확인할 수 있는 메뉴입니다. 로그인 과정이 궁금하다던가 할 때 히스토리를 이용하면 자세히 알아볼 수 있습니다.
리피터는 요청 부분에서 무언가 데이터를 바꿔서 보내야 할 때, 예를 들면 1~100 사이에 정해진 값을 입력해야 하는데 값을 모를 때 등 반복해서 요청을 해야할 때 사용할 수 있습니다. 히스토리에서 필요한 부분에 우클릭 후 send to repeater를 누르면 리피터 메뉴에 해당 요청이 나오고, 거기에서 데이터를 수정하고 send 버튼을 누르면 보낼 수 있습니다.
디코더는 버프 스위트에서 텍스트를 붙여넣어서 문자를 인코딩, 디코딩할 수 있게 해주는 기능입니다. 요청 패킷들을 살펴보다 인코딩된 부분이 있으면 실시간으로 빠르게 디코딩할 수도 있고, 수정하고 싶으면 수정할 단어를 인코딩해서 해당 부분을 수정할 수도 있습니다.
컴페어러는 요청을 수정하거나 했을 때 결과값이 바뀌었는지 확인할 수 있습니다. 긴 코드속에서 바뀐 부분이 적다면 그것을 살펴보는것만 해도 큰일인데, 바뀌기 전 코드와 바뀐 후 코드를 붙여넣고 Words 버튼을 누르면 수정된 부분, 삭제된 부분, 추가된 부분을 색으로 칠해줘서 간단하게 찾아낼 수 있습니다.