Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2019-19634 — Это эксплойт для обхода фильтра, который приводит к произвольной загрузке файлов и удаленному выполнению кода в class.upload.php <= 2.0.4 | Kitploit
Инструменты/GitHubGitHub/jra89/cve-2019-19634
Генерация полезной нагрузкиАнализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubjra89/cve-2019-19634

CVE-2019-19634

Это эксплойт для обхода фильтра, который приводит к произвольной загрузке файлов и удаленному выполнению кода в class.upload.php <= 2.0.4

Репозиторий
3686 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2019-19634 - class.upload.php <= 2.0.4 Произвольная загрузка файлов

  • Автор - Jinny Ramsmark
  • Пострадавший поставщик - Verot.net
  • Пострадавший продукт - class.upload.php <= 2.0.4
  • Протестировано на свежеустановленной Ubuntu 14.04 с PHP5 и Apache
  • В частности, Debian/Ubuntu оказались уязвимыми, так как они добавляют расширение pht в число доступных обработчиков PHP. В данном случае class.upload.php не включил расширение pht в черный список.
  • Эта CVE напрямую связана с CVE-2019-19576

Описание

Это эксплойт, обходящий фильтр, что приводит к произвольной загрузке файлов и удаленному выполнению кода. Скрипт class.upload.php фильтрует «опасные файлы и содержимое» и переименовывает их в расширение txt. Он также выполняет различные преобразования загруженного изображения, которые обычно уничтожают любую внедренную нагрузку, даже если фильтр расширений файлов удалось обойти.

Фильтр расширений файлов использует черный список, поэтому каждый раз, когда появляется новое расширение (в данном случае pht) или какое-то было пропущено, можно загрузить PHP-файл. Однако содержимое должно оставаться корректным изображением и все равно будет проходить через функции imagecreatefromjpeg и подобные. Для этой цели я написал скрипт inject.php, который по сути перебирает различные изображения, пока не найдет такое, в котором нагрузка не будет уничтожена обработкой в class.upload.php. Это фактически дает нам произвольную загрузку файлов и очень скрытое выполнение кода, так как изображение остается валидным и будет отображаться как таковое на страницах, куда оно загружено.

Скрипт inject.php скоро будет переписан, чтобы стать более общим инструментом для атак такого типа, но пока он просто включен в виде отдельных скриптов в этот выпуск CVE.

Хронология (стандартный срок 90 дней)

  • 2019-12-07 - Сообщено разработчику и K2 из JoomlaWorks (они затронуты)
  • 2019-12-07 - Разработчик ответил и выпустил патч
  • 2019-12-08 - Разработчик ответил и согласился на публикацию информации

Файлы, включенные в этот PoC

  • composer.json
  • upload.php
  • inject.php

Использование

Скрипт upload.php является примером кода из github verot.net. Я решил, что лучше всего продемонстрировать эту уязвимость на их собственном примере кода.

  • Запустите «php inject.php» в терминале, он сгенерирует образец изображения с простой нагрузкой в файле.
  • Когда скрипт завершится, он создаст файл с именем «image.jpg.pht».
  • Перейдите к файлу upload.php и загрузите image.jpg.pht, он пройдет проверку, и у вас появится шелл

Пример

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.8=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.pht
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

Предлагаемое решение

  • Не используйте черный список расширений файлов.
  • Вместо этого используйте белый список разрешенных расширений по умолчанию.
  • Или вообще не используйте расширения для загружаемых файлов, а храните исходное имя отдельно.

Ссылка

  • https://github.com/verot/class.upload.php/blob/2.0.5/src/class.upload.php#L3068
Скачать инструмент