⚙️File Upload (feat. .htaccess file)

DATE : 2024/2/20

이번에 살펴볼 예제는 File Upload 공격을 수행하는 과정에서 .htaccess file을 다룬다.

간단히 말해 .htaccess file은 각 directory마다 알맞은 설정을 부여할 수 있는 파일이다.

그 중에서도 File Upload 공격을 수행하는 과정에서 대표적으로 사용되는 directives가 있는데

그것이 바로, AddType이다.

AddType application/x-httpd-php .hanhxx

예를 들어 위와 같이 .htaccess file을 작성하게 되면 .hanhxx 라는 확장자의 파일은 앞으로 php로써

처리하라는 설정이 이 파일을 업로드한 directory에 적용된다.

즉 AddType을 이용해 본인이 만들어낸 파일 확장자가 어떤 파일 유형으로 인식되도록 만들 것인지

AddType MIME_TYPE FILE_EXTENSION

설정할 수 있다.

그렇다면 .htaccess file을 어떻게 file upload 공격에 활용한다는 걸까?

파일을 업로드하는 포인트를 찾아 File Upload 공격을 하고자 하는데

PHP 파일을 업로드 했더니

업로드 할 수 없다는 문구가 출력 되는 상황이다..!

이와 같이 애초에 PHP 파일을 업로드할 수 없거나

PHP 파일이 업로드 되더라도 실행은 할 수 없는 경우라면 .htaccess file을 작성해볼 타이밍이다.

AddType application/x-httpd-php .hanhxx

PHP로 처리되었으면 하는 파일 확장자를 만들어준 다음, 파일을 업로드한다.

파일을 업로드 하면 정상적으로 uploads directory에 파일이 들어간 걸 볼 수 있을 것이다.

이때 우리가 작성한 .htaccess file이 들어가는 위치가 uploads directory라는 건,

uploads directory에 존재하는 .hanhxx 확장자 파일은 PHP로 처리될 수 있다는 바를 의미한다.

<?php echo "hello";?>

따라서 PHP code가 정말로 실행되는 지 확인하기 위해 webshell.hanhxx 파일을 만들어준다.

(이름은 webshell이지만, 실제로는 마음대로 web shell을 마구마구 작성해서 올리면 안 된다..!)

파일을 선택한 후, 업로드 해주면

uploads directory에서 webshell.hanhxx 파일을 찾아볼 수 있다.

.hanhxx는 php code를 품은 파일이지만 확장자가 php가 아니기 때문에 필터링 되지 않고

성공적으로 파일을 업로드 할 수 있는 것이다!

동시에 .htaccess file에 .hanhxx 파일이 php로 처리되도록 설정을 해뒀기 때문에 우리는

webshell.hanhxx 파일을 요청함으로써

PHP code가 실행된 결과를 얻을 수 있게 된다. 👍

이렇게 PHP file을 업로드할 수 없는 상황이거나

실행 권한이 없는 directory에 업로드 되는 와중 path traversal 취약점이 존재하지 않는 상황이라면

새로운 확장자를 생성해 서버 측에서 실행 가능한 파일을 직접 만들 수 있다는 점!!

이것이 바로 .htaccess file을 활용한 File Upload 공격 되시겠다. 👏

File Upload와 관련된 POST에서 말하는 PHP는

"PHP"만 뜻하는 게 아니라 서버 측에서 실행 가능한 스크립트를 아울러 말하는 것이다.

현재 사용한 언어가 PHP라 대표적으로 언급하는 것 뿐!

Last updated