보안
HTTP Proxies
짱구는굿
2023. 8. 29. 17:20
프록시란 HTTP 클라이언트를 백엔드 리소스에 연결하는 일부 Forwarder 응용 프로그램이라고한다. 이렇게 쓰니까 뭔소린지 하나도 모르겠다. 내가 알고 있는 바를 설명하자면 프록시는 클라이언트 프로그램과 웹 서버가 통신을 할 때 직접적으로 서버와 통신하는 주체로, 클라이언트에게 필요한 정보를 전달하는 중간 전달자라고 말할 수 있다. 그래서 HTTP 프록시는 클라이언트 프로그램을 테스트할 때도 사용될 수 있다. 우리는 프록시서버의 기록을 보고 실제로 클라이언트로부터 전송된 요청이 어떻게 생겼는지 볼 수 있다. 웹프록시를 통해request/response 헤더와 payload를 볼 수 있다. 프록시는 클라이언트로부터 요청을 받고, 그것을 지연시킨다. 앞서 말했듯 서버로 가기 전에 중간자(man-in-the-middle)역할을 하는 것이다. 웹프록시는 클라이언트 프로그램과 브라우저가 자신을 신뢰하고 있는 상태에서는 HTTPS 의 유무와 관계없이 잘 작동한다. 그래서 우리는 클라이언트의 요청이나 서버의 응답을 변조하는 등의 웹해킹 실습을 할 때 웹프록시 도구들을 활용할 수 있다. |
- 포워드 프록시: 포워드 프록시, 또는 클라이언트 측 프록시로도 알려집니다. 이는 클라이언트(사용자 장치)와 인터넷 사이에 위치하여 클라이언트를 대신하여 서버에서 리소스를 가져옵니다. 포워드 프록시는 종종 콘텐츠 필터 우회나 클라이언트의 신원을 숨기는 용도로 사용됩니다.
- 리버스 프록시: 리버스 프록시, 또는 서버 측 프록시로도 알려집니다. 이는 클라이언트와 웹 서버 사이에 위치하며, 서버 대신 요청을 처리합니다. 종종 여러 서버를 서빙하는 역할을 하며, 로드 밸런싱, 보안(내부 서버 구조 숨김), 캐싱, SSL 종료 등에 사용됩니다.
- 익명 프록시: 익명 프록시는 클라이언트의 IP 주소를 서버에 숨겨 개인 정보 보호 수준을 제공합니다. 종종 차단된 콘텐츠에 접근하거나 더 개인적으로 인터넷을 브라우징하는 데 사용됩니다.
- 투명 프록시: 투명 프록시는 요청이나 응답 헤더를 수정하지 않으며 주로 캐싱 목적으로 사용됩니다. 클라이언트는 프록시를 통해 요청이 처리되는 것을 보통 알 수 없습니다.
- 캐싱 프록시: 캐싱 프록시는 요청된 리소스의 사본을 저장하고, 같은 리소스가 다시 요청될 경우 클라이언트에 직접 제공합니다. 이로써 원본 서버의 부하가 줄어들며 클라이언트의 응답 시간이 향상됩니다.
- 콘텐츠 필터링 프록시: 이 프록시는 데이터가 통과하는 동안 필터링하거나 수정하는 데 사용됩니다. 사전 정의된 규칙에 기반하여 특정 웹사이트나 콘텐츠 유형에 대한 액세스 차단에 사용될 수 있습니다.
- 로드 밸런싱 프록시: 로드 밸런서는 들어오는 트래픽을 여러 서버에 분산하여 효율적인 자원 활용을 보장하고, 어떤 하나의 서버가 과부하 상태가 되는 것을 방지합니다.
- SSL/TLS 프록시(SSL 종료 프록시): 이 프록시는 SSL/TLS 암호화와 복호화를 처리하여 백엔드 서버의 부담을 덜어주고 성능을 향상시킵니다.
- 웹 가속 프록시: 웹 가속기는 압축, 이미지 최적화 및 페이지 로드 시간을 줄이기 위한 다양한 기술을 적용하여 웹 콘텐츠 전달을 최적화합니다.
- 보안 프록시: 보안 프록시는 침입 탐지, 백신 스캐닝 및 데이터 유실 방지와 같은 기능을 제공하여 다양한 위협으로부터 클라이언트와 서버를 보호합니다.
ZAP을 설치해서 사용하지만, 여기에서는 Burp suit을 사용해보겠다. Request에 대한 패킷만 확인하기 위해 Proxy settings에서 두 번쨰 부분만 수정해준다 |
문제를 보면 ZAP를 사용에 대해 설명이지만, burp suit을 사용해 문제를 풀어 보았다 |
일단 먼저 Intercept를 on으로 켠준다 |
문제에서 요구하는 것을 살펴보자.
Submit를 눌러주면 요청이 버프스위트에 잡히게된다. |
우클릭 후 method를 바꿔준다 |
Forward를 보내면 성공 |