상세 컨텐츠

본문 제목

[보안 공부] 9주 차 - XSS(크로스 사이트 스크립팅), 보고서 작성

컴퓨터/보안 수업(Segfault)

by 디멘터 2024. 6. 19. 20:55

본문

※ 주의 : 보안 관련 학습은 자유이지만, 학습 내용을 사용한 경우 법적 책임은 행위자에게 있습니다.
(Note: Security-related learning is allowed, but the individual is solely responsible for any legal consequences arising from the use of the acquired knowledge.)

※ 공부 기록용 포스트이며, 검수를 하고 올리지만 간혹 잘 못된 정보가 있을 수도 있습니다.

[보안 공부] 9주 차 - XSS(크로스 사이트 스크립팅), 보고서 작성


XSS(Cross Site Scripting), 보고서 작성

 

1. XSS란?

  • XSS란?
    Cross Site Scripting
    웹 페이지에 스크립트를 삽입하여 사용자에게 스크립트를 실행시키는 것
  • 어떤 결과를 초래하는가?
    • 사용자 정보 탈취
      쿠키, 세션, 사용자 데이터 탈취 가능
    • 피싱 공격
      사용자가 접속하는 신뢰하는 사이트이므로 피싱 사이트로 유도 가능
    • 웹 페이지 변조
      웹 사이트 내용 변조나 광고 삽입 등 가능
    • 악성 소프트웨어 배포
      XSS를 통해 악성 소프트웨어 배포 가능
    • DoS 공격에 사용
      스크립트로 서버에 과도한 요청 가능

 

2. XSS 유형

  • 저장형 XSS (Stored XSS)
    스크립트가 서버에 저장되어 접속하는 사용자에게 실행 (ex.게시판)
  • 반사형 XSS (Reflected XSS)
    스크립트가 서버로부터 반사되어 사용자에게 돌아오는 유형 (ex. 입력한 ~id는 이미 존재합니다!)
  • DOM 기반 XSS (DOM-based XSS)
    클라이언트 측의 DOM(Document Object Model) 환경에서 실행되는 유형.
    브라우저란 웹 페이지를 보여주기 위한 HTML, CSS, Javascript 해석기라고 볼 수 있는데,
    DOM은 HTML 문서를 구조화된 객체 모델로 표현한 것으로, 브라우저의 중요 기능 중 하나이다.
    그런 DOM을 악의적으로 조작하여 사용자 측에서 새롭게 악성 스크립트를 생성하고 실행하게 한다. 일종의 브라우저 기능을 악용하는 것이라고 생각할 수 있다. 주로 이를 위해 악성코드가 심어진 'URL'을 사용한다.
    (이 경우 서버까지 갈 필요도 없다. 서버까지 가지 않고 사용자 브라우저 단에서 끝난다.)

 

4. XSS 취약점 확인 방법

XSS 공격은 어떻게든 사용자 단에서 스크립트로 작동하게 만들면 된다! 그 부분을 찾으면 된다!

  • 스크립트로 작동할 수 있는 코드를 웹 페이지에 심던지(저장형 XSS), 반사 받는 기능(반사형 XSS)을 이용하던지, URL에 악성 스크립트를 심어서 DOM을 조작하던지 (DOM-based XSS) 방법은 다양하다.
  • 그렇다면 확인 방법은 스크립트가 실행되는지 확인하면 된다.
    어떤 게시판에 <script>alert('xss!!')</script>를 입력하고 게시글을 열람하는데 아래와 같이 브라우저에서 alert 창이 뜬다면 스크립트로 코드가 실행된 것이니 취약점인 것이다.
    alert('xss!!')스크립트 실행 모습
  • 입력 시 특수문자 < > Left, Right Angle Bracket, 따옴표 ' " Single, Double Quotation mark를 거르지 않고 받고, HTML로 출력하는 곳을 찾는다.
  • 찾았으면, alert, prompt, confirm 같은 기본적인 스크립트를 삽입해 보고 스크립트가 실행되는지 확인해 본다.
  • 자세한 예시는 아래 XSS 취약점 보고서(과제) 참고

 

5. XSS 방어

  방어는 어떻게든 스크립트로 실행되지 않도록 막으면 된다!

  • 입력 검증(Input Validation), 출력 이스케이프(Output Escaping), HTML entity로 특수문자 거르기
  • 보안 라이브러리 사용
  • 자바스크립트 프레임워크 사용 (요즘 프레임워크는 XSS 공격 방지 기능 기본 탑재)
  • HTTPOnly 및 Secure 플래그 설정 (XSS 공격을 당했을 경우 쿠키 탈취 방지)
  • 서버 측에서, 사용자가 스크립트를 넣지 못쓰도록 설정(Content Security Policy, CSP)

 

6. XSS 취약점 보고서 (과제) 작성

 

  첨부파일로 대체

XSS 취약점 보고서_b.pdf
1.86MB
표지

관련글 더보기