Information Security ˗ˋˏ ♡ ˎˊ˗

Security/WebHacking

[HackCTF Web] Input Check (X-Forwarded-For 헤더)

토오쓰 2021. 2. 3. 18:08

ctf.j0n9hyun.xyz/challenges#Home

 

HackCTF

Do you wanna be a God? If so, Challenge!

ctf.j0n9hyun.xyz

문제

풀이

처음에는 해당 IP주소를 크롬 브라우저를 통해서 들어가 보았을 때 큰 힌트를 얻을 수 없었다.

 

이후에는 문제 페이지의 소스코드를 살펴보았다.

 

해당 소스코드에서도 힌트를 찾을 수 없었다.

문제를 보면 강조된 머리말이라는 단어에 집중하기로 했다.

IP 주소와 머리말을 살펴보았을 때, Header를 생각할 수 있었고 구글에 다양한 방식으로 검색을 해봤다.

 

검색창에 http header ip를 입력했을 때, X-Forwarded-For(XFF)가 나오는 것을 볼 수 있었다.

 

아래에서 자세히 살펴보겠지만, 간략하게 

X-Forwarded-For(XFF)란?

- HTTP Header 중 하나로 HTTP Server에 요청한 client의 IP를 식별하기 위한 사실상의 표준 헤더이다. 

- 예제로, X-Forwarded-For: 203.0.113.195

 

문제를 해결하기 위해서 XFF 헤더가 필요한 것으로 판단하였고 BurpSuite를 사용한다.

BurpSuite 원래 페이지

여기에 X-Forwarded-For: 127.0.0.1을 추가해주었고 flag 값이 나오는 것을 볼 수 있었다.

BurpSuite 수정된 페이지

 

 

 

알게 된 지식

X-Forwarded-For(XFF)란?

- XFF는 HTTP Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준이다.

- 웹 서버나 WAS 앞에 스위치(L4) 같은 Load balancers Proxy server, caching server 등의 장비가 있을 경우 이들이 얻는 Client IP는 실제 얻고자 하는 Client IP가 아닐 수도 있다. XFF는 이러한 문제를 해결해주며 웹서버는 Proxy server나 장비 IP에서 접속한 것으로 인식한다.

- 웹서버는 실제 클라이언트 IP가 아닌 앞단에 있는 Proxy 서버 IP를 요청한 IP로 인식하고, Proxy 장비 IP로 웹로그를 남긴다.

- X-Forwarded-For는 다음과 같이 콤마를 구분자로 Client와 Proxy IP 가 들어가게 되므로 첫 번째 IP를 가져오면 클라이언트를 식별할 수 있다.

--> 사용방법 X-Forwarded-For: client, proxy1, proxy2

 

로드밸런싱

- 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.- 네트워크 로드밸런서 종류에서 L2, L3, L4 그리고 L7이 있다.--> L4: Transport Layer(IP+Port) Load Balancing, TCP와 UDP 프로토콜, Port 기반 스위칭을 지원, VIP를 이용하여 여러 대를 한대로 묶어서 부하 분산한다.--> L7: Application Layer(사용자 Request) Load Balancing, 예시로 IP+PORT+패킷 내용.

 

참고

www.lesstif.com/software-architect/proxy-client-ip-x-forwarded-for-xff-http-header-20775886.html

 

Proxy(프락시) 환경에서 client IP 를 얻기 위한 X-Forwarded-For(XFF) http header

X-Real-IP 헤더를 사용하는 제품일 경우 %{x-forwarded-for}i 대신 %{x-real-ip}i 사용

www.lesstif.com

blog.plura.io/?p=6597

 

X-Forwarded-For(XFF) 란?

X-Forwarded-For(XFF) 란? XFF는 HTTP Header 중 하나로 HTTP Server에 요청한 Client의 IP를 식별하기 위한 표준입니다. 웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server, caching server 등의 장비가 있을 경우 웹

blog.plura.io