mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
Translated ['pentesting-web/h2c-smuggling.md'] to kr
This commit is contained in:
parent
c033b19c47
commit
1d75dfe9a7
1 changed files with 26 additions and 26 deletions
|
@ -2,57 +2,57 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 **제로부터 영웅이 되는 AWS 해킹을 배우세요**!</summary>
|
||||
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 **제로**부터 **히어로**로 **AWS 해킹**을 배우세요!</summary>
|
||||
|
||||
HackTricks를 지원하는 다른 방법:
|
||||
|
||||
* **회사가 HackTricks에 광고되길 원하거나** **PDF로 HackTricks를 다운로드**하고 싶다면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
||||
* **회사를 HackTricks에서 광고**하거나 **PDF로 HackTricks 다운로드**하려면 [**구독 요금제**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
||||
* [**공식 PEASS & HackTricks 스왜그**](https://peass.creator-spring.com)를 구매하세요
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 우리의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
|
||||
* **💬 [**디스코드 그룹**](https://discord.gg/hRep4RUj7f)에 가입하거나 [**텔레그램 그룹**](https://t.me/peass)에 가입하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
|
||||
* **HackTricks** 및 **HackTricks Cloud** 깃허브 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요, 당사의 독점 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션
|
||||
* **💬 [Discord 그룹](https://discord.gg/hRep4RUj7f)** 또는 [텔레그램 그룹](https://t.me/peass)에 **가입**하거나 **트위터** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**를 팔로우**하세요.
|
||||
* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
|
||||
|
||||
</details>
|
||||
|
||||
## H2C 스머글링 <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
### H2C 스머글링 <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
### HTTP2 Over Cleartext (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
#### 평문(HTTP2 Over Cleartext) (H2C) <a href="#http2-over-cleartext-h2c" id="http2-over-cleartext-h2c"></a>
|
||||
|
||||
H2C 또는 **http2 over cleartext**는 일반적인 HTTP **연결을 지속 연결로 업그레이드**하여 일시적인 HTTP 연결의 표준에서 벗어납니다. 이 업그레이드된 연결은 단일 요청 형태의 평문 HTTP 대신 지속적인 통신을 위해 http2 이진 프로토콜을 활용합니다.
|
||||
H2C 또는 **평문 http2**는 표준 HTTP **연결을 지속 연결로 업그레이드**하여 일시적인 HTTP 연결의 일반적인 규칙에서 벗어납니다. 이 업그레이드된 연결은 단일 요청 형태의 평문 HTTP 대신 지속적인 통신을 위해 http2 이진 프로토콜을 활용합니다.
|
||||
|
||||
스머글링 문제의 핵심은 **리버스 프록시**의 사용으로 발생합니다. 일반적으로 리버스 프록시는 HTTP 요청을 처리하고 백엔드로 전달하여 그 후에 백엔드의 응답을 반환합니다. 그러나 HTTP 요청에 `Connection: Upgrade` 헤더가 포함되어 있는 경우 (웹소켓 연결에서 일반적으로 볼 수 있음), 리버스 **프록시는 클라이언트와 서버 사이에 지속적인 연결을 유지**하여 특정 프로토콜에서 필요로 하는 지속적인 교환을 용이하게 합니다. H2C 연결의 경우 RFC 준수를 위해 세 가지 특정 헤더가 있어야 합니다:
|
||||
```
|
||||
스머글링 문제의 핵심은 **리버스 프록시**의 사용으로 발생합니다. 일반적으로 리버스 프록시는 HTTP 요청을 처리하고 백엔드로 전달하여 그에 대한 응답을 반환합니다. 그러나 HTTP 요청에 `Connection: Upgrade` 헤더가 포함되어 있는 경우 (웹소켓 연결에서 자주 볼 수 있음), 리버스 **프록시는 클라이언트와 서버 사이에 지속적인 연결을 유지**하여 특정 프로토콜에서 필요로 하는 지속적인 교환을 용이하게 합니다. H2C 연결의 경우 RFC 준수를 위해 세 가지 특정 헤더가 있어야 합니다:
|
||||
```
|
||||
Upgrade: h2c
|
||||
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
|
||||
Connection: Upgrade, HTTP2-Settings
|
||||
```
|
||||
### 취약한 프록시 <a href="#exploitation" id="exploitation"></a>
|
||||
|
||||
취약점은 `Upgrade` 및 때로는 `Connection` 헤더를 처리하는 역방향 프록시의 처리 방식에 의존합니다. 다음 프록시는 프록시 패스 중에 이러한 헤더를 기본적으로 전달하여 H2C 스머글링을 자동으로 활성화합니다:
|
||||
취약점은 `Upgrade` 및 때로는 `Connection` 헤더를 처리하는 역방향 프록시의 처리 방식에 의존합니다. 다음 프록시는 프록시 패스 중에 이러한 헤더를 기본적으로 전달하여 H2C 스머글링을 활성화합니다:
|
||||
|
||||
- HAProxy
|
||||
- Traefik
|
||||
- Nuster
|
||||
* HAProxy
|
||||
* Traefik
|
||||
* Nuster
|
||||
|
||||
반면, 다음 서비스는 프록시 패스 중에 두 헤더를 기본적으로 전달하지 않습니다. 그러나 `Upgrade` 및 `Connection` 헤더를 필터링하지 않고 전달할 수 있도록 불안전하게 구성될 수 있습니다:
|
||||
|
||||
- AWS ALB/CLB
|
||||
- NGINX
|
||||
- Apache
|
||||
- Squid
|
||||
- Varnish
|
||||
- Kong
|
||||
- Envoy
|
||||
- Apache Traffic Server
|
||||
* AWS ALB/CLB
|
||||
* NGINX
|
||||
* Apache
|
||||
* Squid
|
||||
* Varnish
|
||||
* Kong
|
||||
* Envoy
|
||||
* Apache Traffic Server
|
||||
|
||||
### 이용 <a href="#exploitation" id="exploitation"></a>
|
||||
#### 이용 <a href="#exploitation" id="exploitation"></a>
|
||||
|
||||
준수하는 H2C 연결 업그레이드에 필요한 헤더를 기본적으로 전달하지 않는 서버도 있음을 주의해야 합니다. 따라서 AWS ALB/CLB, NGINX, Apache Traffic Server 등의 서버는 기본적으로 H2C 연결을 차단합니다. 그러나 일부 백엔드가 표준을 준수하지 않을 수 있으므로 `Connection: Upgrade` 변형으로 테스트하는 것이 좋습니다.
|
||||
준수하는 H2C 연결 업그레이드에 필요한 헤더를 기본적으로 전달하지 않는 서버도 있음을 주의해야 합니다. 따라서 AWS ALB/CLB, NGINX, Apache Traffic Server 등의 서버는 기본적으로 H2C 연결을 차단합니다. 그러나 일부 백엔드가 표준을 준수하지 않을 수 있으므로 `Connection: Upgrade` 변형을 사용하여 테스트하는 것이 좋습니다.
|
||||
|
||||
{% hint style="danger" %}
|
||||
`proxy_pass` URL에서 지정된 특정 **경로**에 관계없이(예: `http://backend:9999/socket.io`), 설정된 연결은 기본적으로 `http://backend:9999`로 설정됩니다. 이는 이 기술을 활용하여 해당 내부 엔드포인트 내의 모든 경로와 상호 작용할 수 있도록 합니다. 따라서 `proxy_pass` URL에서 경로를 지정해도 액세스가 제한되지 않습니다.
|
||||
`proxy_pass` URL에서 지정된 특정 **경로**에 관계없이 (예: `http://backend:9999/socket.io`), 설정된 연결은 기본적으로 `http://backend:9999`로 설정됩니다. 이로 인해 내부 엔드포인트 내의 모든 경로와 상호 작용할 수 있으며 이 기술을 활용할 수 있습니다. 따라서 `proxy_pass` URL에서 경로를 지정해도 액세스가 제한되지 않습니다.
|
||||
{% endhint %}
|
||||
|
||||
[**BishopFox의 h2csmuggler**](https://github.com/BishopFox/h2csmuggler) 및 [**assetnote의 h2csmuggler**](https://github.com/assetnote/h2csmuggler) 도구는 H2C 연결을 설정하여 프록시가 적용한 보호를 우회하고, 이로써 프록시로 보호된 리소스에 액세스할 수 있도록 하는 시도를 용이하게 합니다.
|
||||
[**BishopFox의 h2csmuggler**](https://github.com/BishopFox/h2csmuggler) 및 [**assetnote의 h2csmuggler**](https://github.com/assetnote/h2csmuggler) 도구는 H2C 연결을 설정하여 프록시가 적용한 보호를 우회하고 프록시에 의해 보호되는 리소스에 액세스할 수 있도록 하는 시도를 용이하게 합니다.
|
||||
|
||||
이 취약점에 대한 자세한 정보, 특히 NGINX에 대한 정보는 [**이 자세한 리소스**](../network-services-pentesting/pentesting-web/nginx.md#proxy\_set\_header-upgrade-and-connection)를 참조하십시오.
|
||||
|
|
Loading…
Reference in a new issue