🚫 XSS

작업을 하다가 CORS 이슈가 발생했고, CORS 이슈를 해결하는 방법에 대해 공부를 했다.
CORS 이슈 → SOP 로 인해 CORS 정책 허용 → 보안정책 왜 필요해? → XSS 취약점 대비 → XSS…
이렇게 꼬리에 꼬리를 물었다. XSS라는 것 부터 정확히 알아야 할 것 같아서 공부하게되었다.

XSS

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

세가지 유형으로 분류

  • Reflected XSS
  • Stroed XSS
  • DOM Based XSS

Reflected XSS

공격자가 미리 XSS 공격에 취약한 웹 사이트를 탐색하고 XSS 공격을 위한 스크립트를 포함 한 URL을 사용자에 노출.

사용자는 해당 URL 클릭 시 취약한 웹 사이트의 서버에 스크립트가 포함 된 URL을 통해 Request 전송하고 웹 서버에서는 해당 스크립트를 포함한 Response를 전송하여 공격 시작.

Reflected XSS(반사된 XSS)

Stroed XSS

Reflected XSS와 달리 웹 사이트의 게시판에 스크립트 삽입하는 공격 방식.
XSS 공격을 위한 스크립트를 포함한 게시글을 웹사이트에 업로드.

게시글의 URL을 사용자에게 노출하고 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송.
웹 서버에서는 스크립트 포함한 Response를 전송하며 공격 시작.

DOM base XSS

개발자가 작성한 스크립트 코드 취약점을 이용한 공격.

공격자가 공격 스크립트가 담긴 DOM을 작성 또는 수정한 후 다른 사용자가 해당 페이지를 열어보게 하여 실행되는 공격.
페이지 원본의 소스는 변경되지 않지만, 클라이언트 사이드에 생성된 DOM을 직접 조작하여 공격
Reflected XSS 또는 Stored XSS 어느 형태로든 나타날 수 있다.

XSS로 인한 피해

  1. 쿠키 정보 및 세션 ID 획득
    쿠키는 웹 서버가 브라우저에게 보내는 4KB 이하의 작은 텍스트 파일로, 사용자가 웹 사이트를 이용하는 동안 브라우저에 저장하는 파일.
    주로 사용자의 상탤를 기록하기 위해 쿠키에 로그인 및 버튼 클릭 등에 대한 정보를 저장하는데,
    만약 세션 ID 등이 쿠키에 포함되는 경우, XSS 공격을 통해 페이지 사용자의 세션 ID를 획득 해 공격자가 불법적으로 정상 사용자인 척 할 수 있음.
  2. 시스템 관리자 권환 획득
    웹 서버에 다양한 악성 데이터를 포함시킨 후 브라우저가 악성 데이터를 실행하게 할 수 있음.
    공격자는 아직 패치되지 않은 취약점에 대한 공격 코드가 실행되도록 해 사용자의 시스템을 통제.
    회사 개인 PC가 해킹 될 경우, 조직 내부로 악성 코드가 이동 해 내부의 중요 정보가 탈취 될 수 있음.
  3. 악성 코드 다운로드
    XSS 공격 자체로 악성 프로그램을 다운로드 할 순 없지만,
    사용자가 URL을 클릭하도록 유도 해 악성 프로그램을 다운받게 할 수 있음.
  4. 거짓 페이지 노출
    <script>, <img> 등 html 태그를 사용해 원래 페이지와 전혀 관련 없는 페이지를 표시하여 거짓 페이지를 노출 할 수 있고 이를 통해 개인정보 유출 등의 위험이 있음.