AIAS

[DVWA] Stored XSS (Level - Low) 본문

WEB/DVWA

[DVWA] Stored XSS (Level - Low)

414s 2020. 12. 1. 14:44

XSS ? (XSS, Cross Site Scripting)

 XSS는 웹 어플리케이션에 스크립트 구문 (<, >)를 필터링하지 않을 시 악의적인 사용자가 악성 스크립트를 삽입하는 것이 가능하다.

 

 주로 악성 스크립트는 사용자의 접속 정보가 포함되어 있는 쿠키나 세션을 탈취하여 해당 계정의 ID와 PW를 알지 못해도 임의로 접속하기 위해 사용된다.

 

Stroed XSS

 게시판 등 사용자가 글을 작성 시킬 수 있는 공간에 악성 스크립트가 저장되어 타 사용자가 악성 스크립트가 삽입된 게시글을 열람 시 정보가 탈취되는 취약점이다.

 

실습환경

- DVWA(Damn Vulnerable Web Application)

 : 모의해킹 실습 가능한 PHP기반의 환경

 

Stored XSS (Level - Low)

 Stored XSS 페이지에서 View Source를 클릭하여 해당 페이지가 입력된 값을 어떻게 처리하는지 확인할 수 있다. 

(실제 모의해킹 환경에서는 PHP와 같은 서버사이드스크립트를 확인할 수 없기 때문에 다양한 방법으로 XSS 필터링 현황을 파악하고 우회를 시도해야함.)

Stored XSS(Level.Low) - View Sourece

 해당 스크립트를 통해 trim구문으로 공백을 제거하고, escape구문을 통해서 문자열을 인코딩해주어 DB에 INSERT 시켜주고 있으며, 별도로 스크립트 입력을 차단하기 위한 코드는 존재하지 않음을 확인할 수 있다.

 

 

 사용자 쿠키 값을 alert를 통해 알림창으로 띄어주는 간단한 스크립트 구문을 입력하여 동작 유무를 확인해봤다.

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

XSS Code Injection - Message

 

 XSS 삽입 후 페이지를 새로고침해줌으로써 삽입한 악성스크립트가 동작하여 해당 게시글이 포함된 페이지를 열람한 사용자의 세션이 포함된 쿠키값을 알림창을 통해 확인있다. (취약점 존재 확인)

PHP Session Hijacking

 

Name 입력 값에서도 동일한 코드 값을 입력하여 테스트를 진행보려했으나, 글자수 제한으로 입력이 불가하였다.

XSS Name Filed

 

 HTML 제한된 입력 값을 우회하는 방법은 많지만 간편한 방법 중 하나로 HTML 코드를 변경해주는 방법을 사용했다.

Chrome 환경에서 F12를 통해서 개발자도구를 실행 시켜서 Name 필드에 해당하는 코드를 찾고 maxlength로 제한된 글자 수 제한을 100으로 변경해주었다. 

maxlength "10" -> "100"

 

 글자 수 최대 입력 가능한 값을 100으로 늘려주어 XSS 구문을 삽입해주었다.

XSS Code Injection

 

 Name 필드에서도 동일한 취약점 존재 확인

PHP Session Hijacking

 

 

 

대응 방안

 - 스크립트 구문 입력 시 필요한 특수문자들을 서버 단에서 필터링하여 스크립트 구문이 동작하지 않도록 조치 필요

 

 

<!--

부수적인 보안 수준 향상

 1) 세션 타임아웃 등의 만료조건이 없으면, 탈취한 세션정보로 계정을 지속적으로 사용 가능

 2) PW 변경 시 현재 비밀번호 입력 기능 부재 시, 임의로 PW 변경 가능

 3) 동시 접속 제한 기능이 없을 경우, 탈취된 사실을 인지하지 못하고 탈취된 세션으로 접속이 허용됨

-->

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

[DVWA] CSRF (Level - Low, Medium)  (0) 2020.12.01
[DVWA] Stored XSS (Level - High)  (0) 2020.12.01
[DVWA] Stored XSS (Level - Medium)  (0) 2020.12.01
Comments