XSS Attack 이란?
> 공격자가 웹사이트 혹은 관련 리소스에 악성 스크립트를 삽입하는것을 의미한다.
주로 사용자가 넣은 내용을 출력하는 기능에서 자주 발생한다.
> 브라우저가 HTML, CSS, JS코드를 웹 서버의 요청을 받아온 뒤에 그 결과를 조합하여 웹 페이지에 표시하게 되는데
XSS 취약점이 존재하는 경우 악의적인코드가 삽입된 리소스가 사용자에게 전달되어서 변조된 페이지를 보게 하거나 악성 스크립트를 강제로 실행시킬 수 있다.
> 로그인 정보 탈취, 사용자에게 악의적인 코드를 주입
XSS Attack 종류
- Stored Xss
> 악성 스크립트가 서버에 저장되어서 응답이 올 때 스크립트가 실행되는 유형
- Reflect Xss
> URL을 통해 공격문구가 삽입됨.
실습
XSS 1

위와 같은 게시판 페이지가 존재한다.
Titlte: Xss Attack<'">
Content : Xss Attack<'"> 로 글을 작성해보았다.

Title에서 꺽새와 따옴표가 그대로 출력되는걸 확인할 수 있다.
> XSS 취약점 포인트 확인
Title : Xss Attack<Script>alert(1)</script> 글을 작성해주었다.
해당하는 글을 클릭시마다 서버에서 저장된 코드를 불러와 alert(1) 스크립트가 실행되는걸 확인할 수 있다. [Stored XSS]

XSS 2

> 결과가 존재하지 않는 값을 입력할 경우 내가 입력한 값이 그대로 출력되는걸 확인할 수 있다.

다음과 같이 board_result에 xxx를 담아서 보내주게 된다.

GET방식으로 바꿔준후 특수문자 테스트 ( 따옴표와 쌍따옴표 사용가능 )

board_result = xxx');// 값을 보내주게 되어 뒤의 값은 주석으로 처리되도록 설정해주었다.
; 과 // 사이에 원하는 스크립트 문구를 삽입하여 동작이 가능하도록 만들 수 있다.
** 여기서 중요한점은 <> 부등호가 반드시 XSS 공격에 필요한건 아님을 알 수 있다.
=> <>가 HTML Entity 방식으로 치환되었다고 해서 반드시 공격이 성공하지 않음은 X

해당 URL을 카피하여 보내주게 되면 [Reflect Xss]
아래와 같이 스크립트가 실행되는걸 확인할 수 있다.

XSS 3

GET방식으로 user값을 불러와 보여주는 mypage.php가 있다.
> 특수문자 테스트


위 사진과 같이 동작하게 된다. [XSS 취약점 포인트 발견]
Get방식을 통해 동작되며 URL 전달을 통한 공격이 가능 > Reflect Xss


XSS 4

사진과 같이 글을 작성해주었다.

필터링 없이 그대로 출력되는것을 확인 > Xss 취약점 포인트 발견
Title : Xss Attack<script>alert(1);</script>
Contents : Xss Attack<script>alert(1);</script>
로 작성해주었지만 script와 alert가 필터링 되는것을 확인할 수 있었다.

script -> SCRIPT 대소문자 변환
alert -> prompt 사용
Title : Xss Attack<SCRIPT>prompt('Xss4_Attack');</SCRIPT>
Contenst : Xss Attack<SCIPRT>prompt('Xss4_Attack');</SCRIPT>


해당 글을 클릭시 마다 스크립트가 실행되는것을 확인할 수 있다. [Stored Xss]
XSS 5

위 사진과 같이 글을 작성해주었다.

둘다 다른 문자열로 변환되어 출력되는것을 확인할 수 있다.

작성 요청에 대한 응답을 보니
posting_contents의 value를
checkContent() 함수를 호출하여
HTML문자로 변환해주는것을 알 수 있다.

변환한 값을 가지고 실질적으로 게시글을 저장해주는 writeprocess.php에 요청을 하여 저장하는것을 파악할 수있다.
이 과정에서 Burp Suite를 활용해 intercept 해준뒤 특수문자로 재 변환해 보내주어보았다.



스크립트가 삽입 가능함을 알 수 있다.
따라서 내가 원하는 코드를 서버에 저장해두고 다른 사용자가 접근시 마다 내가 삽입한 스크립트 코드를 실행하게 된다.
[Stored Xss]


XSS 6
로그인 기능을 사용할 때 아래 그림과 같이 요청시 보내준 파라미터가 응답에 그대로 담겨 오는것을 확인할 수 있다.


POST방식으로 되어있는 해당 로그인을 GET방식으로 바꿔 보내주었다.

특수문자 사용가능, GET방식으로도 정상 작동 확인 >[Reflected Xss] 취약점

뒷부분을 주석 처리 해준뒤 내가 원하는 스크립트를 삽입하여 실행시켜주었다.

'웹 해킹' 카테고리의 다른 글
| [XSS] Client Script, 문제 풀이 (1) | 2025.06.26 |
|---|---|
| [XSS] 관리자의 계정을 탈취하자! (쿠키 탈취, 키로거) + DOM Based XSS (0) | 2025.06.16 |
| SQL Injection Advanced [Point 찾기] / SQL Injection point 문제풀이코드 (1,2,3,4) (0) | 2025.06.03 |
| SQL Injection 문제 풀이 [3,4,5,6] (0) | 2025.05.27 |
| ErrorBased SQL Injection / Blind SQL Injection + Python 프로그래밍 (0) | 2025.05.27 |