Bugbounty) 사례분석  XSS -1)
WEBHACKING/web

Bugbounty) 사례분석 XSS -1)

1. 구글 클라우드 XSS - 5000$ 짜리!!

https://blog.it-securityguard.com/bugbounty-sleeping-stored-google-xss-awakens-a-5000-bounty/

 

[BugBounty] Sleeping stored Google XSS Awakens a $5000 Bounty | Patrik Fehrenbach

Dear Readers, Today I want to share a short write-up about a stored cross-site scripting (XSS) issue I found on the Google Cloud Console. I consider it a lucky find. Some of you may remember the tweet I sent to  Frans Rosén  after he discovered a vulnerabi

blog.it-securityguard.com

 

구글 클라우드에서는 60일짜리 무료 체험을 실시한다고 하는데, 이 체험을 하기 위해서는 본인이 로봇이 아님을 증명해야하는 정보를 입력해야 한다고 한다. 그래서 이것저것 xss를 넣어봤지만 실패했다고 하는데.. 그러다가 

 ><img src= x onerror=javascript : alert(1) ; 이라는 제목을 가진 project를 삭제하면서 alert이 발생했다고 한다.

  : 이 공격은 > 괄호를 미리 닫아버림으로써 뒤 따라오는 script 태그를 허용해버리는 기법이다.

    x 가 유효한 url 이 아니므로, 즉시 error가 발생하면서 1이 얼럿되는 구조인 것 같다.

 

=> 이게 발생한 이유인 즉슨, 구글은 삭제되는 프로젝트의 에러 메세지를 필터링하고 있지 않았다고 한다.

   : 그리고 이게 단순 xss가 아니라 심각한 버그로 처리된 이유는, 클라우드 서비스 특성상 많은 사용자가 이용하게 되는데, 그 과정에서 유저가 치명적인 xss 프로젝트를 삽입하여 관리자가 프로젝트를 실행하거나 삭제할때 공격이 이뤄질수 있기 때문이다. malicious xss payload 의 예시로는 cookie stealer, Browser Exploitation Framework 등이 있겠다.

 

 +) 일단 삭제하면서 alert이 뜰수도 있다는게 상당히 흥미로운것 같다. 일단 삽입해서 실행해볼 생각만 했지, 삭제까지는 생각을 못했었던 것 같다.

 

 

 

2) 트위터 XSS

  https://hackerone.com/reports/150179 

 

Twitter disclosed on HackerOne: Html Injection and Possible XSS in...

Hi, I would like to report HTML Injection and possible cross site scripting (XSS) vulnerability in **sms-be-vip.twitter.com** ##Overview The **sms-be-vip.twitter.com** 404 error page appears to be vulnerable to XSS and HTML Injection as it doesn't encode t

hackerone.com

 

: 이 분은 일단 트위터의 404 에러 페이지가 xss에 취약한 것을 발견했다고 한다. (발상도 참 특이한듯)

 에러 페이지가 URL에서 "https://sms-be-vip.twitter.com/<h1>TEST</h1>" 등의 html 태그를 거르지 않는 것을 발견했다고 한다. 그렇지만 우선 IE11이상의 브라우저에서 html 코드가 모두 인코딩된다는 사실 때문에, html코드가 인코딩되지 않고 발생되도록 우회하는 방법을 찾았다고.

 

1) IE는 302 redirect에서 보내진 URL은 인코딩 하지 않는다.

2) 일단 심플한 php페이지를 만든다. 

<?php
$url = $_GET['x'];
header("Location: $url");
?> 

 

3) 그다음에 이 페이지의 끝에 취약한 페이지의 redirection이 되도록 URL을 달아 놓는다.

http://secgeek.net/POC/redir.php?x=https://sms-be-vip.twitter.com/<h1>TEST</h1>

: 여기서 일단은 브라우저가 html페이지 대신 HTTP 에러를 띄울 것이다.  이를 또 우회할수 있는 방안이 있다.

 

: HTTP 전송시에 에러메시지가 나타날 조건은 이러하다.

1.The HTTP Status code must be [400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505]
2.The HTTP Response body’s byte length must be shorter than a threshold value

 

4) HTTP Response의 최대 바이트 값은 512바이트 인데, 이를 넘기면서 URL을 전송하면 뒤는 잘리고, 앞 내용은 그대로 전송이 될수가 있다. BOF와 좀 비슷한 것 같다.

http://secgeek.net/POC/redir.php?x=https://sms-be-vip.twitter.com/<h1>TEST</h1>.....
....................................................................................
....................................................................................
....................................................................................
....................................................................................
....................................................................................
...........................................................................

: 이를 악용하여 "http://sms-be-vip.twitter.com/<script>eval(atob(base-64 encoded XSS injection))</script>"이런 식으로 공격을 전송하면, 404 에러 페이지 대신에 xss 공격이 실행될 수 있다.

 

+) 에러 페이지에도 xss를 실행시켜서 취약점이 된다는 점이 상당히 흥미롭고, HTTP 규약을 잘 이용한 공격인 것 같다.

 

 

 

3) Google Command Injection: 6000$!! 구글은 통이 크다!

http://www.pranav-venkat.com/2016/03/command-injection-which-got-me-6000.html

 

Command injection which got me "6000$" from #Google

Hey all , Few months back I found a command injection bug in Google Cloud shell  Since the title goes by the name "command inject...

www.pranav-venkat.com

이 역시 구글 클라우드 쉘에서 발생한 취약점인데, URL을 잘 이용한듯 하다.

 

1) 필자는 구글 클라우드에서 테스팅 중에 URL에서 패턴을 발견했다고 한다.

=> https://console.cloud.google.com/home/dashboard?project="name of the project" 

 

2) 여기에 파라미터를 조작하여

https://console.cloud.google.com/home/dashboard?project="XSS vector" (not vulnerable to XSS)

이러한 내용으로 넣었지만, 문법 오류가 발생했다.

 

3) 그러던 와중에 project=; 의 delimiter를 넣었더니 오류가 발생하지 않았고, cloud shell이 성공적으로 발생했다고 한다.  ; 뒤에 ping google.com 의 리눅스 명령어를 넣었더니 실행이 되는 등 ; 뒤의 명령어를 인식해 버린 것 같다.

 

cat /etc/passwd 등의 치명적인 명령어도 잘 실행된다. 

: 이를 악용해서 피해자에게 "https://console.cloud.google.com/home/dashboard?project=;sudo rm -rf /" 등의 명령어를 보내면 파일이 삭제되는 등의 공격이 실행될 것이다. 

 

+) 애초에 클라우드에 쉘이 있다는 것 자체가 딱 공격하기 좋아보이긴 한 것 같다. url을 잘 이용한 command injection인 것 같다. 되도록이면 url은 파라미터를 가리도록 합시다.

 

 

4) Ebay XSS

https://whitton.io/archive/persistent-xss-on-myworld-ebay-com/

 

Persistent XSS on myworld.ebay.com

Bug Bounty & Application Security

whitton.io

=> html 코드를 입력할수 없는 곳을 뚫은게 상당히 흥미로워서 가지고 옴. 그렇지만 오래된 자료라 지금은 잘 모르겠다.

 

이베이에서 정보를 입력할 때에는 html태그를 모두 필터링 한다고 한다. 그래서 필자는 더이상 사용하지 않는 html 태그인 <plaintext>, <fn>, <credit> 을 입력했더니 통과가 되었다고 한다.

  => 이에 맞게 html을 inject할 수 있는 방법을 찾았으니, string을 받는 fn 태그를 이용해 js 부분을 인코딩해서 넣어주면 공격이 실행된다고 한다.

 

 => xss 공격을 통해 쿠키들을 모두 빼내는 등의 공격을 할 수 있다.

 => 이 보고 이후에 ebay가 모든 html 태그를 인코딩하는 것으로 패치되었다고 한다. 

 

: 요즘은 꺽쇠 하나까지 다 필터링해버려서 쓰기 어려운것 같지만, 사라진 태그를 이용하는 방식이 상당히 흥미로웠다.