Skip to content

Latest commit

 

History

History
48 lines (33 loc) · 2.35 KB

XSS.md

File metadata and controls

48 lines (33 loc) · 2.35 KB

XSS

  • 공격자가 입력한 악성스크립트가 사용자 측에서 응답하는 취약점
  • 게시물 또는 URL을 통해 삽입한 악성스크립트가 사용자의 요청에 의해 사용자 측에서 응답하게 되어 발생
  • 사용자의 입력 값을 받는 모든 곳에서 발생 가능
  • 불특정 다수를 대상으로 공격을 시도할 수 있음

발생 원인

  • 입력값에 대한 검증 미흡
  • 출력시 필터링 되지 않음

발생할 수 있는 피해

  • 사용자 쿠키 값 탈취를 통한 권한 도용과 세션 토큰 탈취
  • 피싱 사이트로 접근 유도 하게 함.
  • keylogger 스크립트 삽입으로 키보드 입력값 탈취

종류

Stored XSS (저장형 크로스사이트 스크립팅)

  • 공격자의 악성스크립트가 데이터베이스에 저장 ⇒ 이 값을 출력하는 페이지에서 피해 발생
  • 공격 대상의 범위가 큼
    • 악성스크립트가 서버에 저장되어 불특정 다수를 대상으로 공격하기 때문

Reflected XSS (반사형 크로스사이트 스크립팅)

  • 사용자가 요청한 악성스크립트가 사용자 측에서 반사되어 동작하는 취약점
  • 데이터베이스에 저장되지 않고 즉시 출력되면서 피해 발생
  • 공격자는 악성스크립트가 포함된 URL을 이메일 혹은 메신저를 통해 클릭하도록 유도해서 악성 스크립트 실행

DOM Based XSS

  • Stored XSS와 ReflectedXSS는 서버에서 악성스크립트가 실행되지만 DOM Based XSS는 서버와 상호작용 없이 브라우저에서 악성스크립트가 실행되고 공격이 이뤄진다.

보안 대책

  • 입력값 검증을 통해 악성 스크립트 삽입을 방지해야함.
    • 악성스크립트가 입력되어도 동작하지 않도록 출력값 무효화 해야함
  • 입력값 필터링의 경우 데이터베이스에 악성스크립트가 저장되는 것을 원천적으로 차단해야 함.
    • 악성스크립트가 삽입되어도 동작하지 않도록 출력 값 검증필요
    • 입력 값 검증
      • 스크립트에 쓰이는 문자 입력될 경우 의미 없는 일반 문자로 치환해야함
        • <>’”()
      • xss 필터 관련 외부 라이브러리를 사용할 수도 있음.