<TIL> 50. XSS(Cross Site Scripting)

YUJIN LEE·2023년 3월 6일
0

개발log

목록 보기
45/149

XSS

웹 해킹 공격 중 하나.
Cross Site Scripting의 약자지만 이미 CSS가 존재해 XSS라고 부른다.

XSS는 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입하여 개발자가 고려하지 않은 기능이 작동하게 하는 치명적인 공격.
대부분의 웹 해킹 공격 기법과는 다르게 클라이언트(사용자)를 대상으로 한 공격.

Reflected XSS

취약점이 존재하는 페이지를 미리 탐색 후, XSS 공격을 위한 스크립트가 포함 된 URL을 공격 대상자에게 노출시키는 방법으로 공격 수행

공격자가 미리 XSS 공격에 취약한 웹 사이트 탐색, XSS 공격을 위한 스크립트를 포함한 URL을 사용자에게 노출.
사용자가 해당 URL을 클릭할 시, 취약한 웹사이트의 서버에 스크립트가 포함된 URL을 통해 Request를 전송하고, 웹 서버에서는 해당 스크립트를 포함한 Response를 전송

Stored XSS

웹 사이트의 게시판에 스크립트 삽입하는 공격 방식
공격자는 게시판에 스크립트를 삽입한 후 공격 대상자가 해당 게시글을 클릭하도록 유도.
공격자가 미리 XSS 공격에 취약한 웹 사이트를 탐색 후 XSS 공격을 위한 스크립트를 포함한 게시글을 웹사이트에 업로드.
게시글의 URL을 사용자에게 노출하고 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송.
웹 서버에서 스크립트를 포함한 Response를 전송해 공격 수행

XSS 위험성

  1. 쿠키 정보 및 세션 ID 획득
    공격자는 XSS에 취약한 페이지 및 게시판에 XSS 공격을 수행함으로써 해당 페이지를 이용하는 사용자의 쿠키 정보나 세션ID 획득할 수 있다.
    쿠키는 웹 서버가 브라우저에 보내는 4KB 이하의 작은 text 파일, 사용자가 웹 사이트를 이용하는 동안 사용자 브라우저에 저장하는 파일.
    주로 사용자의 상태를 기록하기 위해 쿠키에 로그인 및 버튼 클릭 등 정보를 저장.
    만약 세션 ID 등을 쿠키에 포함하는 경우, XSS 공격을 통해 페이지 사용자의 세션 ID를 획득해 공격자가 불법적으로 정상 사용자인 척 가장할 수 있다.

  2. 시스템 관리자 권한 획득
    XSS 취약점이 있는 웹 서버에 다양한 악성 데이터를 포함시킨 후, 사용자의 브라우저가 악성 데이터를 실행하게 할 수 있따.
    공격자는 아칙 패치되지 않은 취약점에 대한 공격 코드가 실행되도록 하여 사용자의 시스템을 통제할 수 있다.

  3. 악성코드 다운
    XSS공격은 악성 스크립트 자체기 때문에 악성 프로그램을 다운할 수는 없음.
    하지만, 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도하여 악성 프로그램을 다운받는 사이트로 리다이렉트(Redirect) 하거나 트로이 목마 프로그램을 다운하도록 유도할 수 있다.

  4. 거짓 페이지 노출
    XSS 공격에 취약한 페이지일 경우, < script> 태그 뿐 아니라 < img>와 같은 그림을 표시하는 태그를 사용 해 원래 페이지와는 전혀 관련이 없는 페이지를 표시할 수 있다.
    기타 다른 태그도 사용이 가능할 경우, 원래 페이지의 일부를 변조 해 거짓 페이지를 노출할 수 있어 이를 통해 개인정보 유출 등 위험이 있다.

XSS 방지법

  1. Script 문자 필터링
    XSS 공격은 입력값에 대한 검증이 제대로 이루어지지 않아 발생.
    때문에 사용자의 모든 입력값에 대해 서버 측에서 필터링 해줘야함.

  2. htmlentities 사용

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글