PHP File Upload Bug May Let Remote Users Overwrite Files

SecurityTracker Alert ID: 1025659

CVE Reference: CVE-2011-2202 (Links to External Site)
Date: Jun 14 2011
Impact: Modification of system information
Fix Available: Yes Vendor Confirmed: Yes Exploit Included: Yes


[SecurityFocus]
http://downloads.securityfocus.com/vulnerabilities/exploits/48259.php


[개요]
원격 대상에서 시스템에 있는 특정 파일을 덮어 쓸 수 있는 취약점 입니다.
$_FILES['upload_field_name']['name'] 에서 사용자로부터 업로드 path 를 받아들일때
악의 적인 사용자는 '/' 를 이용하여 원하는 경로를 포함함으로서 시스템 내부에있는 특정 파일에
직접 접근하여 기존에 존재하던 파일을 덮어 쓸 수 있습니다.


[상세내역 및 취약성의 영향]
$_FILES['contents']['name']; 에서 path 를 임의로 지정해주었을 경우 공격자는 이를 악용할 수 있습니다.
이유는  $_FILES['incle']['name'] 을 그대로 사용해 업로드 되는 폴더로 검증없이 직접 이동시키기 때문이며
사용자에게 홈 디렉토리에 대해 직접 접근 하여 파일을 엑세스 할 수 있는 권한이 있기 때문입니다.

테스트 하기 위해 구버젼 APMSETUP 을 이용하였습니다.
버젼별로 환경이 다르지만 5.3.6 버젼 이하에서의 PHP 버젼은 이번 취약성에 모두 영향을 받으므로 진행하기로 하였습니다.

 

 





[대응방안]

생각해 볼 수 있는 대응방안은 다음과 같습니다.

1.php 최신 패치를 한다.
2.업로드된 폴더를 사용자에게 노출되지 않은 디렉토리로 이동한다
3.웹어플리케이션 서버 사용자 권한관리를 한다.
4.일반적이지 않은 사용자입력값이 들어오면 에러처리를 한다.


패치 URL : https://downloads.php.net/ilia/php-5.3.7RC4.tar.gz



[정리]

대부분의 File Path injection 취약점의 경우 아주 위험한 취약점이 될 수 있지만
금번 분석한 취약점은 환경설정, 권한, php 버젼에 따라 달라질 수 있는 취약점이라
모든 환경이 갖추어지더라도 될수도,  되지 않을 수도 있을것 같습니다.
(php version, permission, uploadfile_path)  실제로 환경을 만들기위해 많은 시행착오를 겪었습니다.

CVE-2011-2202 의 취약성을 분석하며 많은 문서를 보면서 이번 취약성은 각각
해외 보안업체에서 다른리스크(High , Low) 레벨에 들어간다는것도 확인하였습니다.
하지만 분명한것은 웹 어플리케이션 서버에 영향을 준다는것이며 최신패치를 유지 해야한다는것입니다.