Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

HW_chick hacker

Smuggling - H4cKing game 본문

Activity/H4cking Game

Smuggling - H4cKing game

{{HW}} 2022. 12. 27. 17:15

HTTP request smuggling이란?

HTTP 1.1을 사용하는 Front-end 서버와 Back-end 서버로 이루어진 웹 어플리케이션을 대상으로하여, 변조된 패킷을 일반 사용자가 접근할 수 없는 Back-end 서버로 직접 보내 중요 정보 획득, XSS 공격 유도, 서버 웹 캐시 포이즈닝 등의 공격을 수행할 수 있습니다.

패킷은 Content-Length, Transfer-Encoding: chunked 헤더 등을 변조하여 Front-end 서버와 Back-end 서버가 패킷의 길이를 다르게 해석케 할 수 있으며, 다른 패킷을 포함할 수 있습니다.

Bacj-end 서버에서 악의적으로 포함된 패킷을 해석할 경우에 공격이 가능합니다.

 

Content-Length

Content-length는 아래 패킷과 같이 직접적으로 나타냅니다.

message body의 길이를 bytes롤 나타낸다.

Transfer-Encoding: chunked

Transfer-Encoding: chunked 헤더는 데이터를 분할하여 보내게 됩니다.

"/r/n 를 제외한 문자의 길이, 데이터, 다음 라인의 데이터 크기" 가 반복하여 포함됩니다.

0은 패킷의 끝을 나타냅니다.


 

  • 헤더의 값이 chunk이면, 메시지 body 값이 하나 이상의 chunk 데이터가 존재한다는 의미이다.
  • Burp Suite에서는 Content-Length를 자동으로 계산하여 수정하므로 해당 기능을 꺼야 공격을 수행할 수 있습니다.

-> 1개의 메시지에 2개의 메시지 구분 방식을 사용할 수 있고 충돌의 이유로 두 헤더가 같이 쓰이면 Content-Length헤더를 무시해야 한다.

 

- H4cking Game 실습

- 게임 링크 실행시 Burp suite 툴을 사용해 프록시를 가져오니 오른쪽처럼 'Hello! Our Team is TeamH4C'라고 출력된다.

 

- 왼쪽 빨강 박스를 보면 '/flag' 값을 입력시 flag를 되돌려준다고 나왔지만 오른쪽 빨간 박스는 '/flag'값에 대해 거부하겠다고 설정 되어 있다.

 

- '/flag'값 입력시 HTTP Status Code 즉 오류코드가 확인된다.

 

KEY: HTTP status code, smuggling, URL Encoding

1) CL.TE의 취약성이용 풀이

여기서 프런트 엔드 서버는Content-Length header와 백엔드 서버는,Transfer-Encoding header를 클릭합니다.다음과 같이 간단한 HTTP request smuggling을 실행할 수 있습니다.

실행 시 첫 줄 GET변수에 '/flag' URL 인코딩 값으로 변환하였다.

 

- 리피터를 이용하여 프런트 엔드 서버에 SMUGGLED 이 요구를 벡엔드 서버로 전송하여 처리한다.

Transfer-Encoding을 사용하여 부호화 첫 번째 '0'은 길이가 제로로 처리 되어 요청을 종료하는 것으로 간주된다.

따라서 SMUGGLED 는 처리되지 않은 상태로 유지되며 벡엔드 서버는 다음 요청 시 데이터를 처리한다.

 

2) 다른 문제 풀이

- 해당 페이지를 burp suite 이용하여 프록시를 가져와 '/flag'값을 URL 인코딩 값으로 넣어 Forward 할 때 해당 페이지가 '/falg'를 우회하여 flag값이 출력된다.

- '/flag'값을 URL 인코딩을 이용해 프록시에 우회 값을 넣어 flag값 출력하는 것은 Smuggling 취약점이랑 거리가 멀다.