반응형

[Bug Bounty] 카테고리에 해커원에서 발표한 취약점을 정리하려고 했는데,, 이제야 첫 글을 쓰네요ㅠ

 

위 취약점은 https://www.forescout.com 사이트에서 발견되었으며, DOM Based XSS 취약점입니다.

해커는 바운티로 $1,000를 받았네요. 타 사이트에 비해 XSS 취약점 바운티로 큰 금액을 받은 것 같습니다.

 

DOM Based XSS(Cross Site Scripting)란?

DOM(Document Object Model)은 HTML 및 XML 문서에 접근하는 방법을 표준으로 정의하는 문서 객체 모델입니다.

즉, 구조화된 문서를 표현하는 방식으로 W3C의 공식 표준입니다.

 

DOM Based XSS(=type-0 XSS)는 피해자의 브라우저에서 DOM 환경을 수정하여 클라이언트 측 코드가 예상치 못한 방식으로 공격 구문이 실행되는 XSS(Cross Site Scripting) 공격입니다. 즉, 페이지 자체(HTTP 응답)는 변경되지 않지만, 페이지에 포함된 클라이언트 측 코드는 DOM환경에서 발생한 악의적인 변조로 인해 공격 구문이 실행됩니다.

 

익히 알고 있는 Stored XSS, Reflected XSS 취약점인 경우 서버 측 결함으로 인해 응답 페이지에 악성 스크립트 구문이 포함되어 브라우저로 전달되는 것이지만, DOM Based XSS 취약점인 경우 서버와 관계없이 브라우저에서 발생합니다.

 

DOM Based XSS(Cross Site Scripting) 공격 시나리오

1. 아래와 같은 URL로 호출되는 페이지가 존재한다고 가정

http://www.test.com/page.html?default=English

2. Attacker에 의해 DOM Based XSS 공격 페이로드 전송

http://www.test.com/page.html?default=<script>alert(document.cookie);</script>

3. 피해자가 2번 링크를 클릭하면, 브라우저가 다음 요청을 전송

/page.html?default=<script>alert(document.cookie);</script>

4. 서버(www.test.com)에서 위 자바 스크립트 코드가 포함된 페이지로 응답/브라우저는 페이지에 대한 DOM 객체 생성

http://www.test.com/page.html?default=<script>alert(document.cookie);</script>

5. 브라우저에 의해 Attacker의 악성 스크립트 구문 실행

alert(document.cookie);

 

즉, 서버에서 전송된 HTTP 응답 값에는 Attacker의 공격 구문이 포함되어 있지 않으며, DOM 객체 생성 시 클라이언트 측 스크립트에 포함되는 것입니다.

 

Bug Bounty Case

이번에는 실제 버그 바운티 사례를 보도록 하겠습니다.

 

https://www.forescout.com/#<img src=x onerror=alert('XSS')>

간단합니다. 해커는 단순히 위의 공격 페이로드를 이용해 DOM Based XSS 취약점을 유발시켰습니다.

 

그러나, 해당 취약점은 Microsoft Edge와 Internet Explorer 브라우저에서만 실행 가능했다고 합니다.

크롬이나 파이어폭스 브라우저일 경우, 기본적으로 system hash url 인코딩 기능이 적용되어있었기 때문입니다.

 

아래는 취약한 코드입니다. window.location.hash 함수에 대한 입력값 필터링이 없어 악성 스크립트 구문이 실행 가능합니다.

jQuery(window).load(function() {
jQuery('a.fancybox-inline[href="' + window.location.hash + '"]:first').each(function() {
jQuery(this).delay(700).trigger('click');
});
});

 

 

위 사진은 해커가 업로드한 해당 사이트에서 발생한 DOM Based XSS 취약점 증적입니다.

 

DOM Based XSS 영향

  • 피해자의 브라우저에 악성 코드 주입 및 실행 가능
  • 악성 사이트로 리다이렉트 처리 가능(피싱)
  • 피해자의 인증 정보(쿠키 등) 탈취 가능

 


[참고 자료]

- https://hackerone.com/reports/704266

- https://owasp.org/www-community/attacks/DOM_Based_XSS

- https://berr-my.tistory.com/entry/XSS-%EA%B3%B5%EA%B2%A9

- https://portswigger.net/web-security/cross-site-scripting/dom-based

- https://gotowebsecurity.com/dom-based-cross-site-scripting-fix/

반응형

'Study > Bug Bounty' 카테고리의 다른 글

[XSS]Blind XSS(Cross Site Scripting)  (2) 2021.01.20
#1. Bug Bounty Platform  (0) 2020.02.21

+ Recent posts