php에서 파일 업로드 체크할 때 주의할 점
로빈아빠
본문
Papoo CMS의 파일업로드 취약점이 발표되었다. http://www.securityfocus.com/archive/1/505639 이번 취약점 발표를 통해서, 파일업로드를 할 때 보안문제가 발생하지 않도록 하려면 어떻게 해야하는지 생각해본다.
Papoo CMS는 사용자가 GIF, JPG, PNG등의 이미지 파일 업로드할 수 있다. 그러나 이 CMS는 파일을 업로드할 때 파일 확장자 체크는 하지 않고, 오직 이미지의 헤더만 체크를 한다. 다음과 같은 명령은 정상적인 GIF 헤더로 판단하게 되나, phpinfo()를 실행할 수 있다.
위와 같은 경우 GIF 헤더만 체크하면 악용될 수 있다. 따라서 파일 업로드를 체크할 때는
1) 반드시 확장자를 체크하고,
2) 이미지 파일의 경우 헤더까지 체크해줘야.
3) 또한 파일 확장자 체크할 때 . 으로 구분된 모든 확장자를 체크해줘야 좋다.
Papoo CMS는 사용자가 GIF, JPG, PNG등의 이미지 파일 업로드할 수 있다. 그러나 이 CMS는 파일을 업로드할 때 파일 확장자 체크는 하지 않고, 오직 이미지의 헤더만 체크를 한다. 다음과 같은 명령은 정상적인 GIF 헤더로 판단하게 되나, phpinfo()를 실행할 수 있다.
인용: |
The following command will generate a file with a valid GIF header which runs the phpinfo() function when requested: $ printf "GIF89a\x01\x00\x01\x00<?php phpinfo();?>" > poc.php |
위와 같은 경우 GIF 헤더만 체크하면 악용될 수 있다. 따라서 파일 업로드를 체크할 때는
1) 반드시 확장자를 체크하고,
2) 이미지 파일의 경우 헤더까지 체크해줘야.
3) 또한 파일 확장자 체크할 때 . 으로 구분된 모든 확장자를 체크해줘야 좋다.
관련링크
댓글목록
등록된 댓글이 없습니다.