웹해킹 버그바운티 분석 - 오픈 리디렉션(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 으로 리디렉션 된다. 특수 문자를 조작할 수 있는 값을 추가해 리디렉션을 할 수 있다.
'네트워크, 웹 (Network & Web) > Exploit' 카테고리의 다른 글
TCP SYN Flooding, TCP Connection Flooding (모의 실습) (0) | 2021.08.25 |
---|---|
DNS Spoofing (ettercap 모의 실습) (0) | 2021.08.25 |
ARP Spoofing (ettercap 모의 실습) (0) | 2021.08.25 |
ARP Spoofing (arpspoof 모의 실습) (0) | 2021.08.25 |