KOROMOON

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

9/10/2025

[Root Me] WEB-Server_HTTP - Open redirect


( 1 ) 문제 정보



Find a way to make a redirection to a domain other than those showed on the web page.


웹 페이지에 표시된 도메인이 아닌 다른 도메인으로 리디렉션하는 방법을 찾으세요.


관련 리소스 : https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/understanding-and-discovering-open-redirect-vulnerabilities/




( 2 ) 문제 요점


Open Redirect 취약점과 관련이 있음.

h 매개변수값은 앞선 url 매개변수 값의 도메인을 Hex 값으로 변환된 값임.

Facebook, Twiter, Slack 도메인이 아닌 다른 도메인으로 설정해서 보내면 flag 값을 얻을 수 있음.




( 3 ) Open Redirect 취약점 (오픈 리다이렉트 취약점)



Open Redirect 취약점은 HTTP GET 요청이 매개변수 값이 리다이렉트 대상에 대한 검증 없이 사용자를 새 웹사이트로 리다이렉트하는 정보를 허용하는 경우, 해당 웹사이트는 오픈 리다이렉트에 취약해짐.

취약한 웹사이트의 아키텍처에 따라 로그인과 같은 특정 동작 후에 리다이렉션이 발생할 수도 있고, 페이지 로딩 즉시 발생할 수도 있음.


취약한 웹사이트의 링크의 예는 다음과 같음.

RelayState 매개변수는 로그인 성공 시 사용자를 어디로 보낼지 지정함.


https://www.example.com/login.html?RelayState=http://example.com/next 


그러나 웹사이트가 RelayState 매개변수 값을 검증하지 못해서 공격자가 의도된 웹사이트로 보낼 수 있음.

https://www.example.com/login.html?RelayState=http://EvilWebsite.com


Open Redirect 취약점은 웹사이트에 직접적인 피해를 입히지 않고 공격자가 회사 소유의 데이터를 직접 훔치지 않음.

이 취약점의 주요 용도 중 하나가 피싱 공격을 더욱 신뢰성 있고 효과적으로 만들 수 있음.


리다이렉션에 일반적으로 사용되는 매개변수 리스트

go

return

r_url

returnUrl

returnUri

locationUrl

goTo

return_url

return_uri

ref

referrer

backUrl

returnTo

successUrl

RelayState

ReturnUrl

RedirectUri

Return

Return_url

Redirect

Redirect_uri

Redirect_url

RedirectUrl

Forward

ForwardUrl

Forward_URL

SuccessUrl

Redir

Exit_url

Destination


참고로 Open Redirect 취약점을 찾기 위한 구글 해킹 리스트

allinurl:%3Dhttps*

allinurl:%253Dhttps*

allinurl:%3Dhttp*

allinurl:%253Dhttp*

allinurl:"<keyword>=https"

allinurl:"<keyword>=http"

allinurl:<keyword>=https

allinurl:<keyword>=http

allinurl:<keyword>%3Dhttps

allinurl:<keyword>%3Dhttps*

allinurl:<keyword>%253Dhttps

allinurl:<keyword>%253Dhttps*

allinurl:<keyword>%3Dhttp

allinurl:<keyword>%3Dhttp*

allinurl:<keyword>%253Dhttp

allinurl:<keyword>%253Dhttp*

allinurl:<keyword>


보통 아래와 같은 웹페이지 용도에서 Open Redirect 취약점을 찾음.

- 로그인 및 등록 페이지

- 애플리케이션 경로 또는 API 엔드포인트 로그아웃

- 비밀번호 재설정 (생성된 토큰 링크도 검사하세요. 리디렉션 매개변수가 포함되어 있을 수 있음.)

- 프로필 계정 페이지

- 이메일 확인 링크

- 오류 페이지

- 앱 내에서 여러 단계가 필요한 중요한 작업


Open Redirect 취약점 취약점을 피하는 가장 좋은 방법은 사용자가 제어하거나 GET 방식으로 제공되는 매개변수를 기반으로 리다이렉션을 하지 않는 것임.

리다이렉션이 불가피한 경우, 리다이렉션 대상을 검증하고 승인된 URL 화이트리스트를 사용하여 해당 URL을 정제함으로써 해결할 수 있음.




( 4 ) flag 찾기


1. 사이트 화면


2. 사이트 소스 보기

h 매개변수값은 앞선 url 매개변수 값의 도메인을 Hex 값으로 변환된 값임.

Facebook, Twiter, Slack 도메인이 아닌 다른 도메인으로 설정해서 보내면 flag 값을 얻을 수 있음.


3. Google 웹사이트의 유효한 MD5 해시를 생성한 다음 파이썬 코드로 flag 값 찾기

import requests

flag = requests.get\

("http://challenge01.root-me.org/web-serveur/ch52/\

?url=https://google.com&h=99999ebcfdb78df077ad2727fd00969f")

print(flag.text)




참고 사이트 : 

https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/understanding-and-discovering-open-redirect-vulnerabilities/

https://medium.com/pentesternepal/open-redirect-just-a-redirection-60d3c18d753c

https://www.intigriti.com/researchers/blog/hacking-tools/open-url-redirects-a-complete-guide-to-exploiting-open-url-redirect-vulnerabilities


댓글 없음:

댓글 쓰기