본문 바로가기
보안

🚨 HTTP Request Smuggling: 서버와 프록시 간 요청 해석 차이를 악용한 보안 공격 🚨

by IT 분석가 2025. 2. 19.
반응형

스머글링 공격

📌 목차

  1. HTTP Request Smuggling이란?
  2. 공격 원리와 작동 방식
  3. 주요 공격 기법 (CL.TE, TE.CL)
  4. HTTP Request Smuggling의 위험성
  5. 방어 방법 및 대응 방안

🕵️‍♂️ HTTP Request Smuggling이란?

HTTP Request Smuggling(HTTP 요청 스머글링)은 서버와 프록시 간의 요청 해석 차이를 악용하여 공격자가 악의적인 요청을 삽입하는 기법이다.

이 공격은 주로 리버스 프록시(Reverse Proxy)나 로드 밸런서(Load Balancer)를 사용하는 웹 애플리케이션에서 발생하며,
서버와 프록시가 HTTP 요청의 길이를 해석하는 방식이 서로 다를 때 공격이 가능하다.


주요 목적

✔️ 세션 하이재킹: 다른 사용자의 요청을 가로채거나 변조
✔️ 캐시 중독: 악성 콘텐츠를 캐시에 주입
✔️ 방화벽 우회: 보안 시스템을 속여 필터링을 우회


⚙️ 공격 원리와 작동 방식

HTTP 요청을 해석하는 방법은 보통 두 가지 방식이 있다.

  1. Content-Length(CL) 헤더를 사용한 길이 지정
  2. Transfer-Encoding: chunked(TE) 헤더를 이용한 청크 방식

서버와 프록시가 각각 다르게 해석하면 공격이 가능하다.
예를 들어,

  • 프록시는 Content-Length를 우선 해석하고,
  • 백엔드 서버는 Transfer-Encoding을 우선 해석하는 경우

이 차이를 이용하면 하나의 요청 안에 추가적인 숨겨진 요청을 삽입할 수 있다.


🚨 주요 공격 기법 (CL.TE, TE.CL)

1️⃣ CL.TE(Content-Length 우선 처리, Transfer-Encoding 후 처리)

📌 공격 방식

  • 프록시는 Content-Length를 신뢰하여 요청을 완전히 수신했다고 판단
  • 그러나 백엔드 서버는 Transfer-Encoding: chunked를 기준으로 추가 데이터를 읽음
  • 그 결과 숨겨진 두 번째 요청이 백엔드 서버에 전달됨

공격 예시

POST / HTTP/1.1  
Host: vulnerable.com  
Content-Length: 13  
Transfer-Encoding: chunked  

5  
SMUGG  
3  
LED  
0  

GET /admin HTTP/1.1  
Host: vulnerable.com
 

🚨 결과: 백엔드 서버는 GET /admin 요청을 처리하지만, 프록시는 이를 인식하지 못함


2️⃣ TE.CL(Transfer-Encoding 우선 처리, Content-Length 후 처리)

📌 공격 방식

  • 프록시는 Transfer-Encoding: chunked를 신뢰하여 데이터를 수신
  • 하지만 백엔드 서버는 Content-Length를 기반으로 요청을 해석
  • 이로 인해 프록시가 처리한 데이터와 백엔드의 해석이 달라지면서 공격자가 추가 요청을 보낼 수 있음

공격 예시

POST / HTTP/1.1  
Host: vulnerable.com  
Transfer-Encoding: chunked  
Content-Length: 6  

0  

GET /admin HTTP/1.1  
Host: vulnerable.com
 

🚨 결과: GET /admin 요청이 정상적인 요청으로 처리됨


⚠️ HTTP Request Smuggling의 위험성

보안 위협

  • 🔓 세션 탈취: 로그인된 사용자의 요청을 가로채기 가능
  • 🎭 사용자 스푸핑: 요청을 변조하여 다른 사용자의 권한을 탈취
  • 🚀 방화벽 우회: 보안 장비가 정상적인 요청으로 인식하여 차단 불가
  • 💣 DDoS 공격: 서버에 추가 요청을 삽입해 과부하 유발

실제 발생 사례

  1. 2019년 Netflix 및 여러 웹사이트에서 발견된 취약점
    • Netflix는 HTTP Request Smuggling을 통해 요청 조작이 가능하다는 취약점을 공개
  2. 2020년 Amazon에서 발생한 공격
    • 공격자가 HTTP Request Smuggling을 이용해 API를 우회하고 내부 데이터에 접근

🔐 방어 방법 및 대응 방안

1. 프록시 및 서버의 요청 해석 방식 일관화

  • Content-Length와 Transfer-Encoding을 혼합 사용하지 않도록 설정
  • 보안 패치를 적용하여 CL.TE, TE.CL 취약점을 차단

2. 웹 애플리케이션 방화벽(WAF) 적용

  • HTTP 요청에서 Transfer-Encoding: chunked가 사용될 때 경고

3. 최신 보안 패치 적용

  • Apache, Nginx 등 웹 서버의 최신 패치 적용

4. Penetration Testing 수행

  • Burp Suite 등 보안 툴을 사용하여 테스트 수행

 

#HTTP #RequestSmuggling #보안취약점 #웹보안 #프록시 #해킹 #웹방화벽 #서버보안

반응형