Yozzang의 해킹일기 💻
article thumbnail
Published 2023. 3. 17. 01:52
DVWA (XSS) Wargame/DVWA
728x90

이번 포스트에서는 DVWA의 XSS 문제를 실습해보겠다.


1. ## 공격 정의

  • 웹사이트에서 사용자가 입력한 데이터를 출력할 때, 입력된 데이터에 악성 스크립트를 삽입하여, 사용자의 브라우저에서 악의적인 행동을 수행하도록 유도하는 공격 방법

2. ## 공격 유형

  • Reflect XSS : 악성 스크립트가 URL 매개변수 등을 통해 전송되어, 해당 페이지를 방문한 특정 사용자에게만 악의적인 행동을 유도하는 공격
  • Stored XSS : 악성 스크립트가 서버에 저장되어, 해당 페이지를 방문한 모든 사용자에게 악의적인 행동을 유도하는 공격
  • Dom-Based XSS : 사이트에서 JavaScript를 사용하여 동적으로 생성된 DOM(Document Object Model) 요소에 악성 스크립트를 삽입하여, 해당 웹페이지를 방문한 사용자를 해킹하는 방법

3. ## 공격 다이어그램

  1. 악의적인 공격자가 웹사이트의 게시판에 악성 스크립트를 입력
  2. 해당 악성 스크립트는 서버에 저장
  3. 게시판을 방문한 모든 사용자는 서버에 저장된 악성 스크립트를 받아오며, 이를 실행시켜 악의적인 행동을 수행

4. ## 실습

### Reflected

DVWA의 XSS항목을 선택하면 아래와 같은 이미지가 보인다.

DVWA

소스코드를 확인해보면 다음과 같이 입력값에 대해 어떠한 검증도 하지 않고 있다는 것을 알 수 있다.

소스 코드

간단한 XSS 공격 PoC코드를 입력해서 결과값을 확인해보겠다.

Reflected - 공격

다음과 같이 alert창이 나타난 것을 확인할 수 있다.

Reflected - 성공

### Stored

이어서 Stored XSS 공격에 대해서 실습해보겠다.

DVWA

Stored XSS 공격은 서버에 저장하는 특성을 가지고 있기 때문에 다음과 같이 XSS 공격구문이 포함되는 게시글을 작성해보겠다.

Stored - 공격

Sign Guestbook 버튼을 클릭하고 페이지를 새로고침해보니 다음과 같이 alert 창이 뜬 것을 확인할 수 있다.

Stored - 성공

### DOM

마지막으로 DOM XSS에 대해서 실습해보겠다. 

DVWA

URL 창을 확인해보면 default라는 파라미터가 존재한 것을 확인할 수 있다. 해당 파라미터는 화면을 출력하는 언어를 설정하는 역할을 하고 있으며, 해당 파라미터에 XSS 공격 구문을 삽입하면 된다.

DOM - 공격

다음과 같이 alert 창이 뜬 것을 확인할 수 있다.

DOM - 성공

'Wargame > DVWA' 카테고리의 다른 글

DVWA (CSP Bypass)  (0) 2023.03.19
DVWA (CSRF)  (0) 2023.03.18
DVWA (Blind SQL Injection)  (0) 2023.03.16
DVWA (SQL Injection)  (0) 2023.03.15
DVWA (Insecure CAPTCHA)  (0) 2023.03.14
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!