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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2023-45878 — Эксплойт на Python для CVE-2023-45878 — неаутентифицированная произвольная загрузка файлов в Gibbon CMS, позволяющая выполнить удалённый код (RCE) через загрузку веб-шелла и получить интерактивный доступ к оболочке. | Kitploit
Инструменты/GitHubGitHub/can0i0ever0enter/cve-2023-45878
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеИнструмент Удаленного Доступа
GitHubcan0i0ever0enter/cve-2023-45878

CVE-2023-45878

Эксплойт на Python для CVE-2023-45878 — неаутентифицированная произвольная загрузка файлов в Gibbon CMS, позволяющая выполнить удалённый код (RCE) через загрузку веб-шелла и получить интерактивный доступ к оболочке.

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

Популярное

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

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

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

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

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

Gibbon CMS (CVE-2023-45878) Эксплойт

Этот Python-скрипт эксплуатирует уязвимость CVE-2023-45878 — неавторизованную произвольную загрузку файлов в Gibbon CMS версиях 25.0.1 и ранее, что приводит к удаленному выполнению кода (Remote Code Execution, RCE).

Описание уязвимости

CVE-2023-45878 существует в конечной точке rubrics_visualise_saveAjax.php Gibbon CMS. Эта конечная точка уязвима из-за отсутствия аутентификации и возможности произвольной записи файлов.

Уязвимость возникает из-за следующего:

  • Неавторизованный доступ: Конечная точка modules/Rubrics/rubrics_visualise_saveAjax.php доступна без какой-либо аутентификации.
  • Произвольная запись файлов: Конечная точка принимает POST-параметры img, path и gibbonPersonID.
    • Параметр img должен содержать специально отформатированные данные, где часть после запятой является строкой в кодировке base64.
  • Параметр path, если указан, используется как имя файла назначения для загружаемого файла, относительно директории установки Gibbon.
  • Скрипт декодирует содержимое в base64 из параметра img и записывает его в файл, указанный параметром path.
  • Удаленное выполнение кода: Отправляя вредоносный параметр img, содержащий PHP-код в base64 (например, <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>), и указывая path, в результате которого получается .php файл, доступный через веб-сервер, злоумышленник может загрузить PHP-вебшелл и добиться удаленного выполнения кода на уязвимом сервере.
  • Функциональность скрипта

    Этот Python-скрипт автоматизирует эксплуатацию CVE-2023-45878. Он выполняет следующие действия:

    1. Загрузка PHP-вебшелла: Он формирует вредоносный POST-запрос к modules/Rubrics/rubrics_visualise_saveAjax.php для загрузки PHP-вебшелла. Полезная нагрузка вебшелла: <?php echo "{VERIFY_TAG}"; if(isset($_GET["cmd"])) {echo @shell_exec($_GET["cmd"]);} ?>, где {VERIFY_TAG} — настраиваемый тег. Полезная нагрузка кодируется в base64 и отправляется в параметре img.
    2. Проверка шелла: Он может проверить, доступен и функционален ли загруженный шелл, отправив GET-запрос с простой командой (например, cmd=echo) и проверив наличие VERIFY_TAG в ответе. Он также выполняет предварительную проверку существующего шелла, если используются опции --verify или --interactive.
    3. Интерактивный режим шелла: Если шелл загружен и проверен (или найден во время предварительной проверки), скрипт может войти в интерактивный режим. Этот режим включает:
      • Определение удаленной операционной системы (Windows/Linux) для адаптации команд.
      • Динамическое приглашение с отображением текущего пользователя, имени хоста и удаленной рабочей директории (например, user@host:cwd$).
      • Встроенная обработка команды cd для смены удаленной рабочей директории.
      • Специальные клиентские команды:
        • !help: Отображает справку по интерактивным командам.
        • !upload <local_path> [remote_path]: Загружает локальный файл на целевой сервер через вебшелл.
        • !download <remote_path> [local_path]: Скачивает файл с целевого сервера.
        • !lcd <path>: Изменяет локальную текущую рабочую директорию.
        • !ldir [path]: Выводит список файлов и директорий в локальной текущей рабочей директории или указанном пути.
      • Использует библиотеку prompt_toolkit, если она доступна, для улучшенного взаимодействия с командной строкой (история, улучшенное редактирование), в противном случае использует встроенную функцию Python input().
    4. Файловые операции: Интерактивная команда !upload повторно использует уязвимую конечную точку для записи произвольных файлов, в то время как !download использует системные команды, выполняемые через вебшелл (например, base64 или PowerShell [Convert]::ToBase64String), для получения содержимого файла.

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

    root@kitploit:~
    python3 exploit.py <target_url> [options]
    

    Аргументы:

    • target_url: Базовый URL целевого экземпляра Gibbon CMS. Скрипт добавит http://, если схема не указана, и обеспечит завершающий слеш (например, http://example.com/gibbon или example.com/gibbon).

    Опции:

    • -s <shell_path>, --shell-path <shell_path>: Укажите желаемый путь и имя файла для загруженного шелла (например, shell.php, uploads/shell.php). Если не указано, будет сгенерировано случайное имя файла из 8 символов с расширением .php в базовой директории Gibbon. Предупреждение: Убедитесь, что указанный путь доступен для записи веб-сервером и доступен через веб.
    • -v, --verify: После попытки загрузить шелл, проверьте, работает ли он. Эта опция также запускает предварительную проверку, чтобы узнать, существует ли уже шелл с указанным именем и тегом; если да, загрузка пропускается.
    • -i, --interactive: Войти в интерактивный режим шелла. Если шелл еще не присутствует (подтверждено предварительной проверкой), он будет сначала загружен и проверен.
    • -t <tag>, --tag <tag>: Укажите пользовательский статический тег, используемый в полезной нагрузке вебшелла для проверки. (По умолчанию: ExploitGibbon).
    • --timeout <timeout>: Установите тайм-аут HTTP-запроса в секундах. (По умолчанию: 20).

    Примеры:

    • Базовая эксплуатация со случайным именем шелла в основной директории Gibbon и тегом по умолчанию:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/
      
    • Эксплуатация, указать имя файла шелла my_shell.php в основной директории Gibbon и тег по умолчанию:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s my_shell.php
      
    • Эксплуатация, загрузить файл шелла backdoor.php в uploads/, проверить его и использовать пользовательский тег:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s uploads/backdoor.php -v -t MySecretTag123
      
    • Эксплуатация, загрузить шелл и войти в интерактивный режим с тегом по умолчанию и тайм-аутом 30 секунд:

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -i --timeout 30
      
    • Войти в интерактивный режим с существующим шеллом (скрипт выполнит предварительную проверку его существования):

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s shell.php -t ExploitGibbon -i
      
    • Только проверить, активен ли шелл с именем existing_shell.php и тегом по умолчанию (попытается загрузить, если не найден):

      root@kitploit:~
      python3 exploit.py http://target.com/gibbon/ -s existing_shell.php -v
      

    Требования

    • Python 3.7+ (из-за использования f-строк, подсказок типов, dataclasses, pathlib)
    • Библиотека requests: Установка: pip install requests
    • Библиотека rich: Установка: pip install rich
    • Библиотека prompt_toolkit (необязательно, для улучшенного интерактивного режима): Установка: pip install prompt_toolkit

    Отказ от ответственности

    Этот скрипт предоставлен только для образовательных целей и целей тестирования безопасности. Используйте его на свой страх и риск и только в отношении систем, на тестирование которых у вас есть явное разрешение. Автор не несет ответственности за любое неправильное использование или ущерб, причиненный этим скриптом. Эксплуатация уязвимостей без авторизации незаконна и неэтична.

    Ссылки

    • CVE-2023-45878 на NVD
    • Уведомление безопасности Herolab USD-2023-0025
    • Исходный код GibbonEdu Core (rubrics_visualise_saveAjax.php уязвимая версия v25.0.01)
    Скачать инструмент