웹해킹

웹 취약점 체이닝의 개념과 실제 버그 사례

이둥둥 2025. 3. 10. 21:42

XSS 취약점을 발견했다고 치면 단순히 스크립트 실행을 넘어서, 이 취약점으로 어떤 피해를 입힐 수 있는지를 보여주는 것이 좋다. (ex XSS공격의 영향으로 개발용 세션 정보가 실제 운영환경에서도 노출되는 경우)

세션 탈취가 어렵다면 open redirect, zero-day 취약점 등으로 시스템에 직접 접근하는 방법도 쓸 수 있겠다

 

XSS의 주된 목적은 사용자의 세션 탈취이고, HTTP Only 등의 옵션으로 방지 조치 가능

 

하나의 취약점이 아니라 여러 취약점을 연계해서 파급력을 키우는 것

→ 취약점 체이닝

 

 

2016년 Uber 우버에서 발견된 실제 취약점

 

셀프 XSS 공격은 일반적으로 공격자가 사용자를 속여 악성 코드를 브라우저의 DevTools 콘솔에 복사하여 붙여 넣도록 유도하는 것. 피해자 스스로가 스크립트를 실행해야 하므로 실행 가능성이 낮아 대부분의 버그바운티 프로그램에서는 scope에 인정하지 않지만, 다른 취약점과 연계한다면 파급력을 가질 수 있다. 실제 2016년에 우버에서 발견된 사례를 보자

 

m.uber.com에서 본인의 프로필 리소스를 수정해서 XSS 페이로드 삽입이 가능했는데, 자신에게만 영향이 미치므로 큰 위협이 아니었다. 그런데 여기에 더해서 파라미터 조작으로 Response Header, Set-Cookie 값을 조작할 수 있는 취약점이 있어 피해자 헤더 조작이 가능했다. 둘 다 사소한 취약점이지만 체이닝 해서 파급력을 높일 수 있었음.

 

예를 들어 공격자가 헤더 조작 취약점이 있는 URL을 피해자에게 전달하면 Set-Cookie header로 인해 공격자의 세션 ID로 공격자의 계정으로 로그인하게 된다. 그러므로 공격자가 미리 심어준 XSS 페이로드가 실행되고 피해자의 쿠키에 저장된 Oauth 토큰을 탈취해 공격자에게 전송하게 됨