Apache 다중 확장자 업로드 취약점

아파치는 다중 언어의 지원을 위해 MultiViews 옵션을 제공하는데(링크) 이를 악용하여 공격자는 확장자를 속여서 서버 사이드 스크립트의 업로드가 가능하다.

<그림1> .php.bak 확장자로 업로드한 웹쉘 실행 화면

MultiViews를 제거하려면 Directory의 Options에서 -MultiViews를 설정해주면 된다


    Options -MultiViews

    AllowOverride All

    Order allow,deny

    Allow from all

<표1> MultiViews 제거 설정

Apache 2.2부터는 -MultiViews를 명시해주어도 동작하기때문에 FilesMatch를 통해 다중 확장자 업로드를 막아야한다.

 #AddType application/x-httpd-php .php .html

    SetHandler application/x-httpd-php

<표2> FilesMatch 설정

MultiViews 옵션을 제거하거나 FilesMatch 옵션을 적용하면 다음과 같이 .php 파일이 중간에 들어있더라도 php 파일로 인식되지 않기때문에 안전하다.

<그림2> 취약점 제거 후 웹쉘 실행 화면

댓글 남기기

바로가기