웹해킹 버그바운티 분석 - 오픈 리디렉션(open redirection) 취약점

oolongeya

·

2022. 7. 24. 22:52

- 오픈 리디렉션(open redirection) 취약점

 

* 공격 대상이 웹 사이트를 방문했을 때 해당 웹 사이트가 다른 도메인의 URL을 브라우저로 전달하는 경우 발생할 수 있다.

* 다른 공격과 활용하여 OAuth 토큰을 훔치거나, 악성 사이트에서 멀웨어를 배포할 수 있다.

* 사용자만 리디렉션하기 때문에 영향력이 적고 보상금이 작다.


- 작동 방식

 

* 공격자가 조작하는 입력값을 개발자가 맹신하여 발생함 (URL 파라미터, HTML <meta> 태그, DOM 윈도우 위치속성)

* 다수의 웹 사이트가 기존 URL에서 목표 URL을 파라미터로 배치해 의도적으로 사용자를 리디렉션함

* 해당 애플리케이션은 이 파라미터를 사용해 브라우저가 목표 URL로 GET 요청을 보내도록 지시함

 

작동 예제

https://www.google.com/?redirect_to=https://www.gmail.com 

위의 URL에 방문하면 구글은 HTTP 요청을 수신하고 redirect_to 파라미터의 값을 이용해 브라우저에게 리디렉션 하도록 지시하는 상태 코드와 함께 HTTP 응답을 반환한다. 

 

https://www.google.com/?redirect_to=https://www.attacker.com 

이와 같이 공격자는 파라미터를 이용하여 공격자의 URL로 사용자를 리디렉션할 수 있다.

 

<meta http-equiv="refresh" content="0; url=https://www.google.com/">

파라미터 기반 공격 외에도 HTML태그와 자바스크립트를 사용해 브라우저를 리디렉션할 수 있다.
즉 공격자는 content 속성을 제어하거나, 태그를 인젝트할 수 있는 상황에 이러한 리디렉션 동작을 사용한다.


예제에 나오는 content 속성은 브라우저가 두 가지 방법으로 HTTP 요청을 하는 방법을 정의한다.

1. URL에 HTTP 요청을 보내기 전에 브라우저가 대기하는 시간을 정의 (0 = 0초)
2. 브라우저가 GET 요청을 하는 웹 사이트의 URL 파라미터를 지정

 

window.location = https://www.google.com/ 
window.location.href = https://www.google.com 
window.location.replace(https://www.google.com) 

공격자는 자바스크립트를 사용해 DOM(Document Object Model)으로 window의 location 속성을 수정해 리디렉션할 수도 있다.
DOM은 개발자가 웹 페이지의 구조, 스타일, 콘텐츠를 수정할 수 있게 해주는 HTML과 XML 문서용 API이다.
location 속성은 요청을 리디렉션해야 하는 위치를 나타내기 때문에, 브라우저는 이 자바스크립트를 즉시 해석하고 지정된 URL로 리디렉션한다. 즉 공격자는 위의 3가지 스크립트중 한 가지로 window의 location 속성을 수정할 수 있다.

* 일반적으로 window.location 값을 설정할 수 있는 기회는 오로지 공격자가 XSS 취약점을 통해 자바스크립트를 실행하거나
웹 사이트에서 리디렉션하려는 URL을 정의하도록 허용한 경우에만 발생한다.

 


- 보고서 분석

 

1. shopify 테마 설치 open redirection

https://www.hackerone.com/reports/101962/ 

https://app.shopify.com/services/google/themes/preview/supply--blue?domain_name=attack.com

shopify 서비스는 나만의 인터넷 상점을 만들고 판매할 수 있는 커머스 플랫폼이다.

관리자가 테마를 변경의 스토어의 모양과 느낌을 수정할 수 있는 기능에서 취약점을 찾았다.

기능 사용시 스토어 쇼유자를 URL로 리디렉션해 미리 보기 기능을 제공했는데 해당 URL의 취약점을 이용한다.

 

shopify는 domain_name이 항상 사용자의 상점일 것으로 예상하고 shopify 도메인의 일부에 해당하는지 검증하지 않았다.

공격자는 파라미터를 악용해 http://attacker.com/admin/ 으로 리디렉션할 수 있다. 


2. shopify 로그인 열기 open redirection

https://www.hackerone.com/reports/103772/

http://mystore.myshopify.com/account/login?checkout_url=.attacker.com

공격대상이 위 URL을 방문할 경우 http://mystore.myshopify.com.attacker.com 으로 리디렉션 된다. 

URL은 .attack.com으로 끝나고 DNS 조회는 가장 오른쪽 도메인 레이블을 사용하기 때문에 attacker.com 으로 리디렉션 된다. 특수 문자를 조작할 수 있는 값을 추가해 리디렉션을 할 수 있다.


 

반응형