KOROMOON

착한 사마리아인이 되고 싶습니다.

9/10/2025

[Root Me] WEB-Server_HTTP-IP restriction bypass


( 1 ) 문제 정보



Dear colleagues,

We’re now managing connections to the intranet using private IP addresses, so it’s no longer necessary to login with a username / password when you are already connected to the internal company network.

Regards,

The network admin


이제 사설 IP 주소를 사용하여 인트라넷 연결을 관리하고 있습니다. 따라서 이미 회사 내부 네트워크에 연결되어 있는 경우 사용자 이름/비밀번호로 로그인할 필요가 없습니다.

감사합니다.

네트워크 관리자


관련 리소스 : https://datatracker.ietf.org/doc/html/rfc1918




( 2 ) 문제 요점


HTTP 헤더 삽입 기법을 이용하여 IP 필터링을 우회함.

X-Forwarded-For 헤더에 사설 IP를 인위적으로 삽입하여 flag 값 찾음.




( 3 ) X-Forwarded-For 헤더


1. 설명

X-Forwarded-For 헤더는 HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 사실상의 표준 헤더임.

클라이언트와 서버 중간에서 트래픽이 프록시나 로드 밸런서를 거치면, 서버 접근 로그에는 프록시나 로드 밸런서의 IP 주소만을 담고 있음.

클라이언트의 원 IP주소를 보기위해 X-Forwarded-For 요청 헤더가 사용됨.


이 헤더는 디버깅, 통계, 그리고 위치 종속적인 컨텐츠를 위해 사용되고, 클라이언트의 IP 주소 등과 같은 민감한 개인정보를 노출시킴.

그러므로 이 헤더를 사용할 때에는 사용자의 프라이버시를 주의해야 함.


이 헤더의 표준화된 버전은 HTTP Forwarded 헤더임.

링크 : 

https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Headers/Forwarded


X-Forwarded-For 은 이메일 메시지가 다른 계정으로부터 포워딩되었음을 나타내는 이메일 헤더이기도 하다.


2. 문법

X-Forwarded-For: <client>, <proxy1>, <proxy2>


3. 지시자

<client>

클라이언트 IP 주소


<proxy1>, <proxy2>

하나의 요청이 여러 프록시들을 거치면, 각 프록시의 IP 주소들이 차례로 열거됨.

즉, 가장 오른쪽 IP 주소는 가장 마지막에 거친 프록시의 IP 주소이고, 가장 왼쪽의 IP 주소는 최초 클라이언트의 IP 주소임.


4. 예제

X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348

X-Forwarded-For: 203.0.113.195

X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178


다른 비표준 형태가 있음.

# 몇몇 구글 서비스에서 사용된다

X-ProxyUser-Ip: 203.0.113.19




( 4 ) 사설 IP 대역


Internet Assigned Numbers Authority(IANA) 에서는 다음과 같은 세 개의 IP 주소 공간들을 Private 네트워크를 위해서 할당했음.


10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)

172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)

192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)


모든 기업들은 해당 주소 범위를 사용할 수 있으며 이 "private" 주소 공간의 IP 주소들은 하나의 기업 안에서는 고유한 값을 가져야 함.

만약 서로 다른 기업들이 같은 "private" 네트워크 내에서 통신하기로 결정하였다면 두 기업들은 위의 주소 범위 내에서 서로 겹치지 않는 IP 주소를 가져야 함.


이전과 마찬가지로 글로벌하게 고유한 IP 주소 공간이 필요한 모든 기업은 인터넷 레지스트리에서 주소를 얻어야 함.

외부 연결을 위해 IP 주소를 요청하는 기업에서는 위의 세 블럭에 해당하지 않는 주소를 할당받음.




( 5 ) flag 찾기


1. 사이트 화면


2. Login 과 Password 란에 임의의 계정 정보를 입력한 후 login 버튼 클릭


3. Burp Suite 툴의 Intercept 기능을 통해서 요청 헤더에 "X-Forwarded-For: 192.168.100.100" 삽입한 후 포워딩함.


4. 응답 페이지에 flag 값 나옴.


참고 사이트 : 

https://datatracker.ietf.org/doc/html/rfc1918

https://developer.mozilla.org/ko/docs/Web/HTTP/Reference/Headers/X-Forwarded-For


댓글 없음:

댓글 쓰기