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→ 특정 기능만 허용 가능

- /var/www/html 하위 디렉토리에 대해서
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']); ?>🐛.. 🐛.. 🐛..
