GN⁺: 초보자용 익스플로잇으로 Chess.com을 해킹한 방법
(skii.dev)체스닷컴에서의 XSS 발견
- 체스를 취미로 즐기며 기술을 가지고 놀던 중, 체스닷컴에서 XSS 취약점을 발견함.
- 체스닷컴은 1억 명 이상의 회원을 보유한 인터넷 상의 최대 체스 사이트임.
개요
- 2023년 초 체스닷컴에서 많이 놀기 시작함.
- 친구를 사이트에 가입시키고 친구 기능을 사용하여 즉시 친구가 됨.
- MySpace 웜과 유사한 방식으로 자동 친구 추가가 가능한지 궁금해짐.
- 새 계정을 만들고 개발자 도구의 네트워크 탭을 확인하여 자동 친구 추가 URL을 발견함.
중반 게임
- TinyMCE 리치 텍스트 에디터를 사용하여 XSS를 시도함.
- Burp 프록시를 사용하여 'About' 설명에 직접 HTML 코드를 삽입함.
- TinyMCE 설정을 확인하고
background-image
스타일 속성을 이용하여 XSS 페이로드를 생성함. - 여러 기호를 테스트하여 XSS를 실행하는 방법을 찾아냄.
- 최종적으로 쿠키와 자바스크립트 객체를 추출할 수 있는 방법을 개발함.
엔드게임
- XSS를 완전히 실행하기 위해 노력함.
-
srcset
속성을 이용하여 더 넓은 JS 구문을 사용할 수 있는 새로운 방법을 찾아냄. - Base64 인코딩을 사용하여 XSS 페이로드를 직접 실행함.
- TinyMCE 에디터가 사이트 전반에 사용되고 있어 영향이 큼.
분석
- 취약점의 근본 원인은 이미지 재업로드 기능임.
- 체스닷컴의 도메인 이름을 포함하여 이미지 호스팅 검사를 우회할 수 있음.
- 리치 텍스트 에디터는 다양한 HTML 요소를 허용하기 때문에 XSS를 달성하기에 좋음.
- TinyMCE는 최신 상태였으나, 최종 HTML에 대한 살균 처리가 누락됨.
- 체스닷컴은 사용자에게 보여지는 최종 HTML에 대해 살균 처리를 해야 함.
GN⁺의 의견:
- 이 블로그 포스트는 체스닷컴과 같은 대규모 온라인 플랫폼에서 발생할 수 있는 보안 취약점을 발견하고 이를 보고하는 과정을 흥미롭게 설명함.
- XSS 취약점은 웹사이트의 보안에 심각한 위협이 될 수 있으며, 이러한 취약점을 찾아내고 해결하는 것은 웹사이트 사용자의 개인정보 보호에 매우 중요함.
- 이 글은 소프트웨어 개발자와 보안 전문가들에게 리치 텍스트 에디터와 같은 웹 애플리케이션 구성 요소의 취약점을 인식하고 이를 방지하기 위한 중요성을 강조함.
Hacker News 의견
-
원글 작성자(OP) 소개 및 배경 정보
- 17세 영국 학생으로 A-Levels을 수행 중이며 대학과 학위 견습 옵션을 고민 중임.
- GitHub 프로필에서 HashPals의 핵심 멤버이자 Search-That-Hash의 창작자, ReMarkable 태블릿용 무료 소프트웨어 오픈소스 저장소의 유지 관리자임을 확인할 수 있음.
- lichess.org에 대한 긍정적인 평가와 기술적 관심사 공유에 대한 언급이 있음.
-
MySpace 웜과 관련된 기능에 대한 댓글
- 2005년경의 MySpace 웜을 언급하며, 작성자는 당시 태어나지 않았음을 밝힘.
- 다른 사용자가 자신의 체스 게임에서 움직임을 통제하는 현상을 목격하고 기록했으며, chess.com에서 이 문제를 보고했으나 해결되지 않았음을 지적함.
-
XSS 취약점과 관련된 기술적 질문
- PHPSESSID 쿠키가 HttpOnly가 아닌 이유와 알려진 XSS 취약점이 왜 수정되지 않았는지에 대한 의문 제기.
- XSS 버그 바운티 보고서에 대한 관심과 그 과정의 어려움에 대한 인식 표현.
-
chess.com의 리치 텍스트 에디터에 대한 의견
- 리치 텍스트 에디터를 "성배"라고 부르는 것에 대한 재미있는 반응과, 큰 웹사이트임에도 불구하고 이러한 기능이 취약점을 가질 수 있다는 우려 표현.
-
기술적 약어에 대한 질문
- "OSRF"의 의미에 대한 질문과 이것이 CSRF와 유사한 "Own-Site Request Forgery"를 의미하는지에 대한 추측.
-
서브도메인 리다이렉션과 관련된 기술적 질문
- 서브도메인(chess.com.foo.bar)에서의 리다이렉션이 어떻게 동일 출처 정책(same-origin policy)을 우회했는지에 대한 설명 요청.