바로가기 메뉴
컨텐츠 바로가기
주메뉴 바로가기
하단정보 바로가기

Is Your Website Hackable?
70% are. Detect and Action with Acunetix

XSS의 유형: 저장된 XSS, 반사된 XSS, 그리고 DOM 기반의 XSS

XSS를 매우 다양한 방법으로 사용하여 심각한 문제를 야기할 수 있습니다. 기존의 (그리고 위험한) XSS 사용은 공격자가 세션 쿠키를 도용하여 피해자인 척 가장할 수 있도록 하는 것입니다. 그러나, 단순히 쿠키를 도용하는 것 뿐만 아니라, XSS를 사용하여 소셜 네트워크를 파괴하고, 멀웨어를 유포하고, 웹사이트를 훼손하거나 기밀 정보를 빼돌리고, 심지어 소셜 엔지니어링 기법과 함께 사용하여 더 심각한 피해를 주는 공격으로 확대할 수 있습니다.

크로스 사이트 스크립팅은 세 가지 주요 카테고리로 분류할 수 있습니다 - 저장된 XSS, 반영된 XSS, 그리고 DOM 기반의 XSS.

저장된 XSS (Stored XSS)

XSS 중 가장 큰 피해를 주는 유형은 저장된 XSS (지속되는 XSS) 입니다. 저장된 XSS 공격은 대상 어플리케이션 (예를 들면, 데이터베이스 내)에 영구적으로 저장된 (지속되는) 스크립트 (페이로드라고도 함)를 주입하는 공격자와 관련이 있습니다. 고전적인 예시로는 블로그나 포럼 포스트의 명령어 필드에 공격자가 주입하는 악성 스크립트가 있습니다.

피해자가 브라우저에서 영향을 받은 웹 페이지를 돌아다닐 때, XSS 페이로드가 웹 페이지의 일부로서 서비스됩니다 (마치 합법적인 명령어인 것처럼). 이는 브라우저에 페이지가 나타나게 되면 피해자가 의도치 않게 악성 스크립트를 실행하게 된다는 것입니다.

반사된 XSS (Reflected XSS)

두 번째, 그리고 훨씬 더 일반적인 유형의 XSS는 반사된 XSS입니다. 여기서, 공격자의 페이로드 스크립트는 웹 서버로 전송되고 HTTP 응답이 HTTP 요청으로부터 받은 페이로드를 포함하는 방식으로 다시 반사되는 요청의 일부분이어야 합니다. 피싱 이메일 및 기타 소셜 엔지니어링 기법을 사용하여, 공격자는 피해자가 의도치 않게 XSS 페이로드가 포함된 서버로 요청을 보내고 브라우저 내에서 반사되어 실행되는 스크립트를 실행하도록 유혹합니다. 반사된 XSS는 지속적인 공격이 아니기 때문에, 공격자는 각 피해자에게 페이로드를 전달해야 합니다. 종종 소셜 네트워크를 편리하게 사용하여 이러한 공격을 퍼뜨립니다.

DOM 기반의 XSS

DOM 기반의 XSS는 고급 유형의 XSS 공격으로, 웹 어플리케이션의 클라이언트 측 스크립트가 문서 객체 모델 (DOM)에 사용자게 제공하는 데이터를 쓰는 경우에 가능해 집니다. 그 후 웹 어플리케이션은 DOM에서 받은 데이터를 읽고, 브라우저로 출력합니다. 데이터를 올바르게 취급하지 않으면, 공격자가 페이로드를 주입할 수 있으며, 이를 DOM의 일부로 저장하고 DOM에서 데이터를 다시 읽을 때 이를 실행하게 됩니다. DOM 기반의 XSS에 대한 더 많은 정보는, 이 곳을 참고하세요. »

이 공격에서 가장 위험한 부분은 때로 클라이언트 측 공격이며, 공격자의 페이로드는 서버에 결코 전송되지 않습니다. 이로 인해서 웹 어플리케이션 방화벽 (WAF)과 서버의 로그를 분석하는 보안 엔지니어가 공격을 결코 볼 수 없기 때문에 탐지하기가 훨씬 더 어렵게 됩니다.

DOM을 구성하는 다양한 객체들 중, 공격자가 XSS 조건을 생성하기 위해서 조작할 수 있는 몇 가지 객체가 있습니다. 그러한 객체로는 URL (document.URL), 해시 뒤 URL 일부 (location.hash), 그리고 참조자 (document.referrer)가 있습니다.