Web Proxy
DATE : 2023/11/16
Last updated
DATE : 2023/11/16
Last updated
원래는 client와 server가 소통할 때, 서로 packet을 주고 받았다면
web proxy는 이들 중간에서 packet을 대신 전달해주는 역할을 한다.
"Packet을 대신 전달해준다"라는 건
(1) client가 web server에게 보낼 Packet을 Proxy server를 통해 전달 (= request)
(2) server가 client에게 보내는 Packet 또한 Proxy server를 거치게 된다는 의미이다. (= response)
그도 그럴 것이 web Server 입장에서는 요청을 보낸 게 Proxy이기 때문에
응답을 Proxy에게 하지, Proxy를 거쳐 요청을 보낸 client를 찾아서 직접 전달해주지는 않는다.
자! 그렇다면 우리가 Proxy를 사용하기 위해서는 어떻게 해야 할까??
만약 우리가 packet을 보내려고 하는데 Proxy가 귀를 닫고 "아아, 아무것도 안 들림" 이러고 있다면
Packet을 web Server에게 보낼 수 있을까?? 정답은 NO!!
Proxy를 사용해 소통하기 위해서는 우선, Listener 라는 친구가 필요하다.
생각해보면 Proxy도 결국엔 client와 소통하고, web server와 소통하는 것이므로
소통의 창구를 열어야 들어오는 정보를 알아차릴 수 있다!
이때 열어두는 소통의 창구가 바로, Listener인 셈이다.
(1) 포트를 지정해 listener를 열어주고
(2) 해당 주소&포트로 proxy 설정을 한 web browser에서는
모든 request를 web server가 아닌 web proxy에게 보내게 된다.
이때 (2)에서 proxy를 설정하는 건, web browser에게
"너! 혼자 모든 request를 처리할 생각 말고 앞으로는 내가 정해준 web Proxy에게 전달해라! 모.든.걸"
이라고 말하는 것과 같다.
이렇게 해서 Proxy 연결이 정상적으로 이루어지게 된다면 client에서 보내는 request는
순으로 처리 되어진다.
말로만 들으면 이해하기 어려우니 대표적인 Web Proxy Tool,
Burp Suite로 수동 Proxy 설정을 해보도록 하자! 😏
Burp suite - Proxy tab으로 가면 Proxy settings 메뉴를 볼 수 있다.
(버전에 따라 디자인은 조금 다를 수 있음)
Proxy settings 메뉴를 누르면 위와 같은 창이 끄는 데 제일 상단에 나오는 게 Proxy listeners이다.
기본 listener는 127.0.0.1:8080으로 설정되어 있고
추가적으로 listener를 열고 싶다! 하면 좌측에 Add 버튼을 클릭!
Add 버튼을 누르면 이처럼 추가할 listener에 대해 port, address를 설정하도록 되어있다.
용도에 따라 address를 지정해주고 사용할 포트를 입력해서 OK를 누르면
새로 만든 listener가 추가된 걸 확인할 수 있다!!
이제 사용할 browser에서 설정 - 프록시 Tab - 수동 Proxy 를 통해
방금 만들어준 listener의 주소와 포트를 입력하면 끝!
그러면 프록시를 설정한 browser에서 보내는 request와 그에 대한 response 내용을
Proxy - HTTP history 부분에서 확인할 수 있을 것이다.
(현재 browser에 설정한 listener port가 8888이었기 때문에 listener 정보가 8888이다.)
사실 Burp suite에서는 직접 proxy 설정을 하지 않아도 자동으로 위의 과정을 처리해
Browser를 열어주는 기능이 존재한다!!
Proxy - intercept tab에서 Open browser를 눌러주기만 하면!
이렇게 Burp suite title의 페이지가 뜨게 되고 이 browser로 이용한 request & response 내용은
HTTP history에서 확인 가능하다.
(+) 위에서도 봤듯이HTTP history 부분에 맨 마지막 값이 listener인데
여기에 나오는 값은 사용한 listener의 포트 번호를 나타낸다.
이렇게 해서 간단하게 Proxy 개념에 대해 알아보았다.
다음으로 Burp suite에 어떤 기능이 있는지 살펴볼 수 있는 CTF 문제를 풀어보도록 하자.