Hack The World

행아웃 open rediection $7500 본문

BugBounty/Write up

행아웃 open rediection $7500

Talkative 2020. 4. 19. 12:42
  • $7500 의 포상금

  • 행아웃 프로그램 설치시 Electron 앱인것을 확인

Electron 이란?

Electron은 native 애플리케이션이며 크롬과 node.js 를 1개의 런타임으로 통합하여 JavaScript,Html,Css 만 가지고 데스크톱 애플리케이션을 만들 수 있도록 해주는 편리한 프레임워크.

  • Native 어플리케이션이란? 특정한 플랫폼이나 디바이스를 이용하기 위해 개발된 소프트웨어 프로그램으로서, 우리가 흔히 말하는 어플리케이션

실제로 데스크톱 앱은 https://chat.google.com 에서 호스팅되는 웹 애플리케이션 만 표시.

따라서 Electron 앱에서 보안 문제를 찾는 것이 웹 버전과 다르지 않을 수 있음.

웹 버전은 브라우저에 표시 될 때 URL 을 표시

URL은 실제로 사용자가 도메인을 신뢰하는지 여부를 알 수있는 유일한 곳

그러나 Electron 앱에서 주소 표시 줄이 없다.

이는 사용자가 애플리케이션 자체가 https://chat.google.com의 콘텐츠를 제공한다는 것을 신뢰해야하지만 이를 확인하는 신뢰할만한 지표가 없음.

시나리오

따라서 공격자는 이 시점에서 응용 프로그램을 chat.google 이외의 외부 도메인으로 리디렉션하는 방법을 찾아서 안정적인 피싱을 허용 할 수 있다고 생각

최종적으로 Googe의 원래 로그인 창과 매우 유사한 로그인 창을 사용하여 공격자가 제어하는 ​​외부 도메인으로 리다이렉션. Electron 에는 주소 표시 줄이 없어서 사용자가 패널이 위조되었음을 알 수 없음.


먼저 채팅에 외부도메인을 입력하여 앱에서 클릭해보았지만 앱에서 열리지않고 웹사이트 링크로 넘어가게됨.

지속적으로 공격을 해본 결과 chat.google.com에 대한 링크가 Electron 앱에서 직접 열린 것으로 나타남.

 

그런데 사용자가 200 이외의 코드를 반환하는 링크 (예 : https://chat.google.com/webchannel/events )를 클릭하면 400에러 창이 뜨지만 뒤로가기 버튼이 없는것을 확인.

URL 액세스 규칙을 우회하는 가장 일반적인 방법은 리디렉션을 악용하는 것 (코드 3xx로 응답).

https://chat.google.com/test123 와 같이 존재하지 않는 링크를 들어갈시

https://chat.google.com/u/0/?hasBeenRedirected=true 로 리다이렉트 되는것을 확인

그래서 Burp에서 match / replace 규칙을 정의하여 "hasBeenRedirected = true"URL을 sekurak.pl에 다시 써서 어떻게되는지 확인

그결과 https://chat.google.com/test123 링크 클릭시 유도해두었던 사이트로 이동됨

이를 통해 채팅창에서 302 리다이렉션이 취약한것을 확인


공격자는 사용자의 의심을 없애기 위해 로그인 창이 뜨는 링크를 찾아봄

https://chat.google.com/accounts 아래의 모든 URL은 https://accounts.google.com으로 리다이렉션되는것을 확인.

ex) https://chat.google.com/accounts/random-urlhttps://accounts.google.com/random-url

최종 리다이렉션 URl

https://chat.google.com/accounts/ServiceLogin?continue=https://appengine.google.com/_ah/conflogin?continue=http://bentkowski.info/&service=ah

그 후에 google 로그인창과 유사한 페이지를 만들어서 피싱사이트 제작

 

웹에서는 접속시 다음과 같이 주소가 나와서 피싱사이트가 판별되지만 앱상에서는 주소가 나오지않기에

피싱이 가능.

Comments