Home XSS (Cross-Site Scripting)
Post
X

XSS (Cross-Site Scripting)

XSS (Cross-Site Scripting)

XSS는 웹 취약점 공격 방법중 하나로, 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우, 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입하는 공격 기법을 말합니다.

즉, 권한이 없는 사용자가 악의적인 용도로 웹 사이트에 스크립트를 삽입하는 공격 기법을 말합니다.

주로 여러 사용자가 보게 되는 전자 게시판에 악성 스크립트가 담긴 글을 올리는 형태로 이루어집니다.

xss-ex


위험성

  • 쿠키 및 세션정보 탈취

    XSS에 취약한 웹 게시판 등에 스크립트를 삽입하여 사용자들의 쿠키 및 세션 정보를 탈취할 수 있습니다.

  • 악성 프로그램 다운 유도

    XSS 자체는 악성 프로그램을 다운로드 시킬 수 없지만 스크립트를 통해 악성 프로그램을 다운받는 사이트로 리다이렉트 시켜서 악성 프로그램을 다운받도록 유도할 수 있습니다.

  • 의도하지 않은 페이지 노출

    XSS를 이용해 img 태그 등을 삽입하여 원본 페이지와는 전혀 관련 없는 페이지를 노출할 수 있습니다.


공격 종류

  • Stored XSS (저장형 XSS)

    공격자가 취약한 웹 서버에 악성 스크립트를 저장하면 피해자가 해당 자료를 요청할 떄 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식이다.

    공격자는 웹 서버의 DB에 악성 스크립트가 포함된 정보를 저장하여 해당 글을 열람하는 유저의 정보를 탈취합니다.

    stored-xss

  • Reflected XSS (반사형 XSS)

    외부에 있는 악성 스크립트가 피해자의 액션에 의해 취약한 웹서버로 요청되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어 클라이언트 측에서 동작하는 방식입니다.

    유저에게 악의적인 스크립트가 담긴 URL을 누르게 유도해, 유저의 정보를 탈취합니다.

    reflected-xss

  • DOM Based XSS (XSS)

    피해자의 브라우저가 HTML 페이지를 분석하여 DOM을 생성할 때, URL 등에 포함된 악성 스크립트가 동작하는 방식입니다.

    서버의 응답 내에는 악성 스크립트가 포함되지 않지만 브라우저의 응답 페이지에 정상적인 스크립트가 실행되면서 악성 스크립트가 추가되서 실행되는 특징이 있습니다.

    DOM-xss


대응 방안

  • 입력 값 제한

    사용자의 입력 값의 길이를 (이메일, 아이디, 패스워드 등 목적에 맞게) 제한하여 스크립트틀 삽입하지 못하도록 합니다.

  • 입력 값 치환

    XSS 공격은 기본적으로 script 태그를 사용하기 때문에 태그 문자(<, >) 등 특수문자 입력 시 replace 등의 함수를 이용하여 HTML entity로 치환하여 처리합니다.

    HTML entity를 이용하면 <&lt;로, >&gt;로 변경되어 넘어가기 떄문에 <script>를 입력할 경우 서버로는 &lt;script;&gt;로 입력값이 넘어갑니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.