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

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

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

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

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

Категории

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

CVE-2019-19576

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

Репозиторий
1236 лет назадЕщё не проверено

Популярное

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

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

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

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

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

class.upload.php <= 2.0.3 Arbitrary file upload

  • Автор — Jinny Ramsmark
  • Затрагиваемый вендор — Verot.net
  • Затрагиваемый продукт — class.upload.php <= 2.0.3
  • Протестировано на свежеустановленной Ubuntu 19.10 с PHP7.3 и Apache/2.4.38
  • В частности, Debian/Ubuntu оказались уязвимыми, так как они добавляют расширения php, phar и phtml в доступные обработчики PHP. В данном случае class.upload.php не имеет расширение phar в чёрном списке.

Описание

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

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

Временная шкала (дефолтный срок 90 дней)

  • 2019-12-03 — Сообщено разработчику и K2
  • 2019-12-03 — K2 ответил
  • 2019-12-04 — Verot ответил с исправлением
  • 2019-12-04 — K2 ответил с подготовленным собственным исправлением
  • 2019-12-04 — Verot выпустил упомянутое исправление (v2.0.4)
  • 2019-12-05 — Обе стороны ответили и согласились на публикацию информации

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

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

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

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

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

Пример

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] 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.phar
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.3/src/class.upload.php#L3068

Пример атаки в расширении Joomla K2

Произвольная загрузка файлов, приводящая к удалённому выполнению кода в JoomlaWorks K2 <= 2.10.1 из-за неисправленной версии class.upload.php

Веб-сайт

  • https://getk2.org/

Примеры изображений

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



Файл будет загружен и может быть использован как бэкдор для выполнения команд.

Скачать инструмент