4.7 KiB
헤더 스머글링 업그레이드
htARTE (HackTricks AWS Red Team Expert)을 통해 **제로부터 영웅까지 AWS 해킹 배우기**
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 PDF로 HackTricks 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왹 획득
- The PEASS Family를 발견하십시오. 당사의 독점 NFTs 컬렉션
- **💬 디스코드 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm에서 팔로우하세요.
- HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
H2C 스머글링
평문 HTTP2 (H2C)
H2C 또는 평문 http2는 표준 HTTP 연결을 지속 연결로 업그레이드하여 일시적인 HTTP 연결의 일반적인 규칙에서 벗어납니다. 이 업그레이드된 연결은 평문 HTTP의 단일 요청 방식과 달리 지속적인 통신을 위해 http2 이진 프로토콜을 활용합니다.
스머글링 문제의 핵심은 리버스 프록시의 사용에서 발생합니다. 일반적으로 리버스 프록시는 HTTP 요청을 처리하고 백엔드로 전달하여 그 후에 백엔드의 응답을 반환합니다. 그러나 HTTP 요청에 Connection: Upgrade
헤더가 포함되어 있는 경우 (웹소켓 연결에서 일반적으로 볼 수 있음), 리버스 프록시는 클라이언트와 서버 사이에 지속적인 연결을 유지하여 특정 프로토콜에서 필요로 하는 지속적인 교환을 용이하게 합니다. H2C 연결의 경우 RFC 준수를 위해 세 가지 특정 헤더가 있어야 합니다:
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings
취약한 프록시
취약점은 Upgrade
및 때로는 Connection
헤더를 처리하는 역방향 프록시의 처리 방식에 의존합니다. 다음 프록시는 프록시 패스 중에 이러한 헤더를 기본적으로 전달하여 H2C 스머글링을 가능하게 합니다:
- HAProxy
- Traefik
- Nuster
반면, 다음 서비스는 프록시 패스 중에 두 헤더를 기본적으로 전달하지 않습니다. 그러나 Upgrade
및 Connection
헤더를 필터링하지 않고 전달할 수 있도록 불안전하게 구성될 수 있습니다:
- AWS ALB/CLB
- NGINX
- Apache
- Squid
- Varnish
- Kong
- Envoy
- Apache Traffic Server
이용
중요한 점은 모든 서버가 준수하는 H2C 연결 업그레이드에 필요한 헤더를 기본적으로 전달하지 않는다는 것입니다. 따라서 AWS ALB/CLB, NGINX, Apache Traffic Server 등의 서버는 기본적으로 H2C 연결을 차단합니다. 그러나 일부 백엔드가 표준을 준수하지 않을 수 있으므로, Connection: Upgrade
변형을 사용하여 테스트하는 것이 좋습니다. 이 변형은 Connection
헤더에서 HTTP2-Settings
값을 제외합니다.
{% hint style="danger" %}
proxy_pass
URL에서 지정된 특정 경로에 관계없이 (예: http://backend:9999/socket.io
), 설정된 연결은 기본적으로 http://backend:9999
로 기본화됩니다. 이로 인해 이 기술을 활용하여 내부 엔드포인트 내의 모든 경로와 상호 작용할 수 있습니다. 따라서 proxy_pass
URL에서 경로를 지정해도 액세스가 제한되지 않습니다.
{% endhint %}
BishopFox의 h2csmuggler 및 assetnote의 h2csmuggler 도구는 H2C 연결을 설정하여 프록시가 적용한 보호를 우회하고, 이를 통해 프록시로 보호된 리소스에 액세스할 수 있도록 시도하는 데 도움을 줍니다.
이 취약점에 대한 자세한 정보, 특히 NGINX에 대한 정보는 이 자세한 리소스를 참조하십시오.