Перейти к содержимому

Поиск по платформе

.htaccess Upload — RCE через перезапись конфигурации Apache

Загрузка .htaccess позволяет выполнять PHP-код внутри файлов с произвольным расширением.

Автор: Hack & Fix
Освоишь: magic-bytes проверкаrandom filenameвне docroot
Сложно+90 XP ~62 мин php
CWE-434 · A04:2021 Pro
Обложка: .htaccess Upload — RCE через перезапись конфигурации Apache Обложка: .htaccess Upload — RCE через перезапись конфигурации Apache
Задача
# Небезопасная загрузка файлов: захват конфигурации каталога веб-сервера ## Сценарий Вы проводите аудит портала творческих портфолио «Мольберт» (нативный PHP на Apache): художники загружают работы, файлы оседают в публичной директории веб-корня. Перед подключением выплат авторам заказчик потребовал аудит: ваш коллега заметил, что загрузчик сохраняет файл под тем именем, которое прислал клиент, и не отбрасывает «скрытые» файлы, начинающиеся с точки. Разбираться поручили вам. ## Цель 1. Изучите загрузчик: кто выбирает имя сохраняемого файла и проходят ли имена, начинающиеся с точки. 2. Загрузите в директорию загрузок локальный файл конфигурации веб-сервера, назначающий PHP-обработчик безобидному расширению. 3. Второй загрузкой доставьте серверный код с этим расширением, добейтесь его исполнения и прочитайте флаг из окружения веб-сервера. ## Теория Apache применяет каскад конфигураций: глобальные правила может переопределять локальный файл в самом каталоге — если администратор разрешил оверрайды. Такой файл читается при каждом запросе к каталогу, и среди его директив есть привязка обработчиков к расширениям: можно объявить, что файлы с «картиночным» расширением обязаны исполняться интерпретатором PHP. **Уязвимый паттерн:** ```php $filename = basename($_FILES['file']['name']); $destPath = $uploadsDir . '/' . $filename; move_uploaded_file($file['tmp_name'], $destPath); ``` Имя файла целиком приходит от клиента. Обёртка от обхода каталогов снимает пути, но не трогает точечные имена — конфигурационный файл веб-сервера попадает на диск под своим именем ровно туда, где Apache его прочтёт. Атака — двухходовка: сначала конфиг, объявляющий расширение исполняемым, затем код с этим расширением; обычный GET-запрос к нему превращается в исполнение серверного кода с правами процесса веб-сервера. ## Точка входа атаки * **Форма загрузки:** `POST /upload` (страница `/upload`, поле `file`, multipart) — список загруженных файлов отображается там же. * **Раздача файлов:** `GET /uploads/<имя файла>` — директорию обслуживает Apache напрямую. `GET /login` — вход под обычным пользователем `demo` / `demo`. Флаг — строка `flag{...}` из окружения процесса веб-сервера: серверный код, исполнившийся из загруженного файла, читает её и возвращает в ответе.

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: File Upload: Content-Type Bypass Обложка лабы: File Upload: Content-Type Bypass
File Upload

File Upload: Content-Type Bypass

Загрузка файлов проверяет только расширение, но не содержимое. Атакующий может загрузить HTML/JS в файле с расширением .jpg.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: File Upload: Path Traversal через имя файла Обложка лабы: File Upload: Path Traversal через имя файла
File Upload

File Upload: Path Traversal через имя файла

Загрузка аватара использует оригинальное имя файла без санитизации. Подмени filename в multipart-запросе для перезаписи шаблона и получения RCE.

+30 XP
PHP Pro
Exploit Fix
Обложка лабы: File Upload: Обход расширений и Path Traversal Обложка лабы: File Upload: Обход расширений и Path Traversal
File Upload

File Upload: Обход расширений и Path Traversal

Сервер принимает файлы с расширением .jpg, но слепо доверяет имени файла из Content-Disposition. Используйте Path Traversal, чтобы подбросить свой токен конфигурации и получить флаг.

+90 XP
Go Pro
Exploit Fix
Обложка лабы: File Upload: обход проверки через подделку Content-Type Обложка лабы: File Upload: обход проверки через подделку Content-Type
File Upload

File Upload: обход проверки через подделку Content-Type

Загрузчик изображений товара доверяет MIME-типу, который пришёл в заголовке Content-Type части multipart-формы. Атакующий подделывает заголовок и загружает HTML с активным контентом, выдавая его за PNG.

+90 XP
Node.js Pro
Exploit Fix