
traefik CVE의 영향을 이해하기 위한 개념 증명
Shadow Corp Capture the Flag (CTF) 챌린지에 오신 것을 환영합니다! 이 챌린지는 보안 헤더 및 HTTP 프록시 동작과 관련된 취약점을 식별하고 악용하는 능력을 테스트합니다. 여러분의 임무는 보호를 우회하고 Shadow Corp 웹 애플리케이션에 숨겨진 비밀을 찾아내는 것입니다.
당신은 악명 높은 은밀한 사이버 스파이 조직인 Shadow Corp의 공개 웹 인터페이스를 발견했습니다. 소문에 따르면, 신뢰할 수 있는 내부자만 접근할 수 있는 보호된 엔드포인트를 확보했다고 합니다. 하지만 적절한 기술을 사용하면 시스템을 속여 이 숨겨진 엔드포인트를 드러내고 Shadow Corp의 비밀을 폭로할 수 있다는 소문이 있습니다.
당신의 임무: 보호된 엔드포인트에 접근하여 숨겨진 플래그를 검색하세요!
이 CTF는 로컬로 실행할 수 있으며, 웹 애플리케이션을 설치 및 구성해야 합니다.
Docker Compose가 이 애플리케이션을 실행하는 데 필요합니다. curl은 엔드포인트를 쿼리하고 테스트하는 데 권장됩니다.
저장소를 클론하고 프로젝트 디렉토리로 이동하세요:
cd traefik-CVE-2024-45410-poc
CTF 실행하기
docker compose up
주요 목표는 /protected 엔드포인트에 접근하여 비밀 플래그를 검색하는 것입니다. 그러나 특정 조건이 충족되지 않으면 직접 접근이 차단된다는 것을 알 수 있습니다. 시스템은 헤더를 검증하여 신뢰할 수 있는 소스를 확인합니다.
X-Forwarded-Host애플리케이션은 localhost(127.0.0.1)에서만 접근을 허용하도록 설계되었습니다. 하지만 HTTP 헤더를 주의 깊게 살펴보면 서버를 속여 신뢰할 수 있는 소스로 믿게 하는 방법을 발견할 수 있을 것입니다. HTTP 프록시 헤더와 이를 조작하는 방법을 살펴보세요.
홉-바이-홉(hop-by-hop) 헤더를 탐색해 본 적이 있나요? 이 헤더는 프록시가 전달된 요청의 동작을 제어하거나 수정하는 데 일반적으로 사용됩니다. 이러한 헤더를 올바르게 조작하면 실제로는 그렇지 않더라도 신뢰할 수 있는 위치에서 오는 것처럼 서버를 설득할 수 있을 것입니다.
Connection 헤더는 판도를 바꿀 수 있습니다. 시스템이 암묵적으로 신뢰하는 헤더를 도입할 수 있다면 어떨까요? 서버가 예상치 못한 방식으로 X-Forwarded-Host를 포함하도록 요청 헤더를 수정하는 방법을 탐색해보세요.
예제 명령(해결책 아님) 다음은 curl로 실험을 시작하는 방법의 예입니다:
curl -i http://localhost:5000/protected
이렇게 하면 기본적으로 접근이 거부된다는 것을 확인할 수 있습니다.
일부 시스템에서 특정 헤더는 홉-바이-홉으로 간주되며, 이는 HTTP 요청 체인의 각 중간 노드의 동작을 제어한다는 의미입니다. 이러한 헤더는 프록시에 의해 제거되거나 변경됩니다. 그러나 헤더를 교묘하게 조작하고 올바른 홉-바이-홉 헤더를 지정하면 특정 보안 메커니즘을 우회할 수 있는 방법을 찾을 수 있을 것입니다. Connection 헤더가 어떻게 작동하는지, 그리고 일반적으로 단일 홉 이상으로 전달되지 않는 다른 헤더에 영향을 줄 수 있는 방법에 초점을 맞추세요. 이는 서버를 속여 신뢰할 수 있는 클라이언트라고 생각하게 하는 데 도움이 될 수 있습니다.
접근 권한을 얻기 위해 요청을 어떻게 조정할지 생각해보세요. 답은 애플리케이션이 신뢰할 수 있는 호스트 헤더를 처리하는 방식에 있습니다. 헤더 조작이 이 CTF를 해결하는 열쇠가 될 수 있음을 기억하세요.