본문 바로가기
🗂️CS & Other/Security

[Security] XSS

by inbeom 2023. 8. 30.
728x90

💡 XSS (Cross-Site Scripting)

  • XSS(Cross-Site Scripting)이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법이다.
  • 악의적인 사용자가 리다이렉션 스크립트를 주입하기도 하고, 사용자의 쿠키를 탈취하여 세션 하이재킹(Session Hijacking) 공격을 수행하기도 한다.

 

1. Persistent(or Stored) XSS

  • 지속적으로 피해를 입히는 XSS 공격 기법
  • 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고, 악성 스크립트를 삽입 (게시판)
  • 삽입된 스크립트는 데이터베이스에 저장이 되어 사용자들의 쿠키를 탈취하거나 다른 사이트로 리다이렉션 시키는 공격을 한다.
<script>alert("hi jerry")</script>

사용자의 입력에 대한 검증이 없기 때문에 발생.

 

2. Reflected XSS

  • 사용자의 요청에 포함된 스크립트가 서버로부터 그대로 반사되어 응답 메시지에 포함돼 브라우저에서 스크립트를 실행되는 공격 기법이다.
  • 사용자에게 입력 받은 검색어를 그대로 보여주는 곳이나 사용자가 입력한 값을 에러 메시지에 포함하여 주는 곳에 악성 스크립트가 삽입되면, 서버가 사용자의 입력 값을 포함해 응답해 줄 때 스크립트가 실행된다.
<script>alert("Reflected XSS Test")</script>
<script>alert(document.cookie)</script>

 

💡 CSRF (Cross-Site Request Forgery)

  • 웹 사이트의 취약점 공격 중 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격이다.
  • CSRF는 공격자가 사용자의 컴퓨터를 감염시키거나 해킹하는 것이 아닌, 사용자를 이용하여 서버를 공격하는 것으로 다음 조건을 만족해야 한다.
    1. 위조 요청을 전송하는 서비스(web site)에 희생자가 로그인 상태여야 한다
    2. 희생자는 공격자가 만든 링크를 통해 접속해야 한다 (낚시)
상품이 아직 도착하지 않았습니다
<a href="<http://localhost:8080/WebGoat/attack>?
Screen=479&menu=900&transferFunds=5000">확인하기</a>

이렇게 속여 링크를 클릭하게 해서 공격자가 입력한 주소로 설정된 Parameter를 들고가게 되면 피해를 입을 수 있다. ex> transferFunds=5000 ⇒ ‘5000 송금하기’

 

 

대응 방법

  1. 입출력 값 검증
  2. XSS 방어 라이브러리, 브라우저 확장 앱 사용
  3. 웹 방화벽 사용
  4. 쿠키 HttpOnly 옵션 활성화
  5. XSS 특수문자 치환
728x90

'🗂️CS & Other > Security' 카테고리의 다른 글

[Security] XPATH Injection  (0) 2023.08.30
[Security] Database Backdoors  (0) 2023.08.30
[Security] SQL Injection  (0) 2023.08.30