22019, 1/1101 회원가입  로그인  
   $Zero
   파일 업로드 취약점. 이 코드에 있나요 ?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=24191 [복사]


제가 웹 콘텐츠 개발 프로젝트를 하고 있는데

파일업로드 취약점을 제거하고자

이러한 코드를 사용했습니다 .

$ext = strtolower(substr($_FILES['file']['name'], strrpos($_FILES['file']['name'], '.') + 1));
12
13 if($ext != 'gif' && $ext != 'jpg' && $ext != 'png')
14 {
15    echo "<script> alert('지원하지 않는 확장자 입니다.'); history.back();</script>";
16    exit;
17 }
18


파일명에서 마지막 (.)닷이 있는 위치에서 +1부터 마지막문자열까지 (즉 확장자 이름)  반환한뒤 이 문자열을업로드 가능한 확장자랑 비교하고 아니면 exit 시키는 코드인데

이 코드도 우회가 가능한가요 ? 제가 아는 파일업로드 우회기법으로는 마땅히 생각나는게 없는데 ..

도와주세요 ~~

  Hit : 10710     Date : 2012/07/31 06:07



    
$Zero 아 찾아보니 GIF 안에 PHP코드를 넣는 기법도 있군요 .. -_-

폴더에 실행권한을 없애면 안되는데.. 좋은 방법 없으려나;
2012/07/31  
pwn3r 원본 파일명은 DB에 저장해놓고 , 실제로 저장되는 파일이름은 타임스탬프나 몇가지 정보 덧붙여서 해쉬로 해두거나 이런것도 좋지않을까요 ㅎㅎ 2012/07/31  
pwn3r 그리고 말씀하신거랑 같은진 모르겠는데 pwn3r.php.gif 같은걸로올려도 php코드가 실행되요 2012/07/31  
sehkmg 패턴 체크해서 php나 asp 이런게 검출되면 die 시켜버리면 되지 않을까요? 2012/07/31  
sehkmg null문자로 우회가 가능하려나 2012/07/31  
blueh4g 업로드 취약점이라고 하면, 웹쉘 업로드를 말씀하시는건가요?

그런부분이라면, 업로드되는 폴더를 DocumentRoot 외의 다른 디렉토리로 지정해주시면 됩니다.

/var/www/html/ 이곳에 홈페이지가 있다면
/home/upload_data 이곳에 업로드된 파일들이 들어가도록 하시면 되겠죠.
2012/08/01  
blueh4g 이후에 download.php 에서는 저 디렉토리에서 파일을 읽어서 뿌려주는 형태로 가면 될테고..

물론, .txt 로 올린 후 LFI 공격은 여전히 먹힙니다~ (include 취약점 역시 없도록 만들어 주셔야겠죠)
2012/08/01  
$Zero pwn3r 님이 지적해주신 부분은 제가 직접 시도해봤는데 안되더라구요 ㅎ
apache 내에서 걸러지는건지
zero.php;.gif
zero.gif;.php
zer.gif%zz.php
등등 제가 해볼만한건 다 해봤는데 안되더군요 -_-ㅋ ..

그리고 한가지 더..
addslashes 함수로 입력되는 값은 전부다 필터링하는데
addslashes 함수를 우회하는 SQL Injection은 없으려나요 ~?
2012/08/01  
$Zero blueh4g 오. .그런 방법이 있군요

좋은 정보 감사합니다.
2012/08/01  
$Zero 그리고 제가 말한 gif 코드실행은 gif가 불려지면서 실행되는 취약점이었어요
보안 관련 자료 찾아보다 알게되었는데 gif 에
fopen 으로 로컬 파일 여는 php코드를 쓴뒤 로컬 파일에 웹셀 코드를 적고 php형태로 저장하게 만들더라구요..
어떤 코드로인해 그렇게 실행되는지 자세하게 나와있진 않았었지만... gif가 웹셀 파일을 생성해서 그 웹셀파일을 실행할수 있다더군요 -_-; ;
2012/08/01  
pwn3r 전 되네요 ㅋㅋ
적힌대로 pwn3r.php.gif로 해서 올려보셨나요?
2012/08/05