작성자 : 홍석범
확장자로 필터링할 수 있는 방법도 있겠지만 실제로 공격자 입장에서는 이를 우회할 수 있는 방법이 매우 많이 있습니다. 실제로 double extension이나 .txt 또는 .gif 등의 확장자를 사용하지만 실제 php코드인 경우가 매우 많이 있습니다.
따라서 단순 확장자 필터링 방법보다는 이 방법이 어떨까 합니다.
SecRule FILES_TMPNAMES "@inspectFile /usr/local/sbin/chk_upload.sh"
"log,auditlog,deny,status:403,phase:2"
와 같이 지정한 후 해당 쉘스크립트(chk_upload.sh)에서는 파일의 콘텐츠에
"<%" 나 "<?" 또는 특정 문자열과 같은 스크립트 문자열이 들어가면 차단하도록 하는 것이 더 좋을 듯 합니다.
또한 후탐지이기는 하지만,
SecUploadDir /path/to/tmp
SecUploadKeepFiles On
를 하여 업로드되는 파일들에 대해 특정 디렉토리에 모이도록 한 후 정기적으로(이를테면 매 1시간마다) file 등의 명령어로 실행하여 아래와 같이 script로 보이면 삭제하거나 알람하도록 하는 것도 좋을 듯 합니다.
$ file image.gif
image.gif: PHP script text
출처 : http://www.linux.co.kr
확장자로 필터링할 수 있는 방법도 있겠지만 실제로 공격자 입장에서는 이를 우회할 수 있는 방법이 매우 많이 있습니다. 실제로 double extension이나 .txt 또는 .gif 등의 확장자를 사용하지만 실제 php코드인 경우가 매우 많이 있습니다.
따라서 단순 확장자 필터링 방법보다는 이 방법이 어떨까 합니다.
SecRule FILES_TMPNAMES "@inspectFile /usr/local/sbin/chk_upload.sh"
"log,auditlog,deny,status:403,phase:2"
와 같이 지정한 후 해당 쉘스크립트(chk_upload.sh)에서는 파일의 콘텐츠에
"<%" 나 "<?" 또는 특정 문자열과 같은 스크립트 문자열이 들어가면 차단하도록 하는 것이 더 좋을 듯 합니다.
또한 후탐지이기는 하지만,
SecUploadDir /path/to/tmp
SecUploadKeepFiles On
를 하여 업로드되는 파일들에 대해 특정 디렉토리에 모이도록 한 후 정기적으로(이를테면 매 1시간마다) file 등의 명령어로 실행하여 아래와 같이 script로 보이면 삭제하거나 알람하도록 하는 것도 좋을 듯 합니다.
$ file image.gif
image.gif: PHP script text
출처 : http://www.linux.co.kr
728x90
댓글