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

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

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

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

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

Категории

Все категории
Loading categories
BIND-9-Cache-Poisoning-PoC---CVE-2025-40778 — Доказательство концепции для CVE-2025-40778: отравление кэша DNS BIND 9 через нежелательные записи дополнительных разделов. | Kitploit
Инструменты/GitHubGitHub/sirbuvladste/bind-9-cache-poisoning-poc---cve-2025-40778
Анализ уязвимостейЭксплуатацияСетевая безопасностьОбучение и ОбразованиеАнализ DNSЛаборатории и Практика
GitHubsirbuvladste/bind-9-cache-poisoning-poc---cve-2025-40778

BIND-9-Cache-Poisoning-PoC---CVE-2025-40778

Доказательство концепции для CVE-2025-40778: отравление кэша DNS BIND 9 через нежелательные записи дополнительных разделов.

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

Популярное

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

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

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

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

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

BIND 9 Cache Poisoning PoC - CVE-2025-40778

Концептуальный обзор

Эта уязвимость позволяет атакующему повредить DNS-кэш резолвера BIND, заставляя легитимных пользователей перенаправляться на вредоносные IP-адреса без их ведома.

Основная логика атаки:

Атака основана на эксплуатации доверия. Жертва доверяет резолверу, а резолвер (BIND) доверяет ответам, которые он получает от авторитетных серверов. Недостаток заключается в том, что BIND обрабатывает и кэширует незапрошенные данные, предоставленные в дополнительном разделе (ADDITIONAL section) DNS-ответа, даже если эти данные относятся к совершенно другому, незапрашиваемому домену.

Шаги атаки:

  1. Подготовка: Атакующий контролирует вредоносный авторитетный DNS-сервер для определённого домена (например, poc.lab). Атакующий ждёт, пока целевой резолвер (BIND) выполнит запрос к этому домену.

  2. Внедрение: Когда резолвер запрашивает у сервера атакующего poc.lab, атакующий отвечает легитимным ответом для poc.lab, но включает незапрошенный ответ в дополнительном разделе для другого домена (в нашем примере это www.hacker.com, но может быть любой легитимный домен, например facebook.com), указывающий на вредоносный IP-адрес.

  3. Отравление: Из-за уязвимости резолвер принимает незапрошенную «дополнительную» запись и сохраняет её в своём кэше. Он не проверяет, имеет ли атакующий полномочия на незапрошенный домен.

  4. Запрос жертвы: Когда позже жертва запрашивает у резолвера незапрошенный домен (), резолвер возвращает отравленную запись из своего кэша, перенаправляя жертву на вредоносный IP-адрес, контролируемый атакующим.

www.hacker.com

[!IMPORTANT]

Ключевые выводы для этого PoC

Непрямая атака: Жертва никогда не взаимодействует с атакующим напрямую.

Компрометация доверенной точки: Машина жертвы функционирует корректно; это инфраструктура (DNS) лжёт.

Механизм: Эксплойт использует обработку дополнительного раздела для внедрения записей, которые никогда не запрашивались.

[!CAUTION]

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

Настройка инфраструктуры для данной демонстрации

В данной демонстрации используются следующие виртуальные машины (ВМ):

  • VM Ubuntu 24.0.4 - BIND 9 - 192.168.174.131
  • VM Ubuntu 24.0.4 - Victim - 192.168.174.128
  • VM Kali 2024.2 - Attacker - 192.168.174.130

Загрузка и компиляция BIND 9.21.12

Следующие команды предназначены для настройки BIND 9.21.12 на системе на базе Debian для демонстрации уязвимости CVE-2025-40778.

[!NOTE] Эта демонстрация использует BIND 9.21.12, одну из версий, подверженных данной уязвимости.

Другие известные диапазоны затронутых версий включают:

  • 9.11.0 – 9.16.50
  • 9.18.0 – 9.18.39
  • 9.20.0 – 9.20.13
  • 9.21.0 – 9.21.12

Следующие команды установят необходимые зависимости, загрузят исходный код BIND 9.21.12, скомпилируют его и установят на вашу систему.

root@kitploit:~
sudo apt install -y build-essential pkg-config perl meson ninja-build libssl-dev libuv1-dev liburcu-dev libcap-dev liblmdb-dev libnghttp2-dev

cd /usr/local/src

sudo wget -O bind-9.21.12.tar.xz https://isc.mirrorservice.org/bind/9.21.12/bind-9.21.12.tar.xz

sudo tar -xf bind-9.21.12.tar.xz

cd bind-9.21.12

sudo meson setup build --prefix=/usr/local --sysconfdir=/etc --localstatedir=/var

sudo ninja -C build

sudo ninja -C build install

echo /usr/local/lib/x86_64-linux-gnu | sudo tee /etc/ld.so.conf.d/bind9-local.conf

sudo ldconfig

ldconfig -p | grep 'libdns-9.21.12' || true

/usr/local/sbin/named -v

Вот ожидаемый вывод последней команды:

root@kitploit:~
> student@student:/usr/local/src/bind-9.21.12$ /usr/local/sbin/named -v
BIND 9.21.12 (Development Release) <id:9bafc35>

Пользователь и группа + Файлы конфигурации

Перед запуском сервера BIND необходимо создать выделенного пользователя и группу для запуска службы named:

root@kitploit:~
sudo groupadd --system named 2>/dev/null || true
sudo useradd --system --no-create-home --home /nonexistent --shell /usr/sbin/nologin --gid named named 2>/dev/null || true

Поскольку эта установка BIND не содержит файлов конфигурации по умолчанию, необходимо вручную создать необходимые каталоги:

root@kitploit:~
sudo mkdir -p /etc/bind
sudo mkdir -p /var/cache/bind
sudo mkdir -p /var/log/named
sudo mkdir -p /var/run/named
sudo chown -R named:named /var/cache/bind /var/log/named /var/run/named
sudo chmod 750 /var/cache/bind /var/log/named /var/run/named

Следующий шаг — создание основного файла конфигурации /etc/bind/named.conf со следующим содержимым:

root@kitploit:~
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.logging";
include "/etc/rndc.key";

Для конфигурации параметров создайте файл /etc/bind/named.conf.options со следующим содержимым:

root@kitploit:~
options {
    directory "/var/cache/bind";

    recursion yes;
    allow-recursion { 192.168.174.0/24; };
    allow-query     { 192.168.174.0/24; };

    listen-on { 192.168.174.131; 127.0.0.1; };
    listen-on-v6 { none; };

    dnssec-validation no;

    forwarders {
        1.1.1.1;
        8.8.8.8;
    };

    minimal-responses no;

    // for manual start
    pid-file "/var/run/named/named.pid";
};

Чтобы настроить зону пересылки для домена poc.lab для пересылки запросов на DNS-сервер атакующего по адресу 192.168.174.130 на стандартный порт 53, необходимо отредактировать файл /etc/bind/named.conf.local следующим образом:

root@kitploit:~
zone "poc.lab" {
  type forward;
  forward only;
  forwarders { 192.168.174.130; };
};

Для конфигурации журналирования создайте файл /etc/bind/named.conf.logging со следующим содержимым:

root@kitploit:~
logging {
  channel queries_file {
    file "/var/log/named/queries.log" versions 3 size 20m;
    severity info;
    print-time yes;
    print-category yes;
  };

  channel default_stderr {
    stderr;
    severity info;
    print-time yes;
    print-category yes;
  };

  category queries { queries_file; };
  category default { default_stderr; };
};

Наконец, необходимо настроить RNDC:

root@kitploit:~
sudo /usr/local/sbin/rndc-confgen -a -c /etc/bind/rndc.key
sudo chown root:named /etc/bind/rndc.key
sudo chmod 640 /etc/bind/rndc.key

Запуск сервера BIND

Во-первых, необходимо убедиться, что порт 53 не используется каким-либо другим сервисом (в нашем случае пришлось отключить systemd-resolved):

root@kitploit:~
sudo systemctl disable --now systemd-resolved || true
sudo ss -lunp | grep ':53' || true  # To verify that port 53 is free

Наконец, можно запустить сервер BIND с помощью следующей команды:

root@kitploit:~
sudo /usr/local/sbin/named -g -u named -c /etc/bind/named.conf

[!TIP]

Чтобы проверить, что BIND работает корректно, можно использовать следующую команду:

root@kitploit:~
ss -lunpt | grep :53

Настройка жертвы

Для машины жертвы необходимо настроить использование сервера BIND в качестве DNS-резолвера. Также нужно отключить systemd-resolved во избежание конфликтов:

root@kitploit:~
sudo systemctl disable --now systemd-resolved

Затем можно установить статический DNS-сервер с помощью команд:

root@kitploit:~
sudo rm -f /etc/resolv.conf
sudo nano /etc/resolv.conf
> nameserver 192.168.174.129
> options timeout:1 attempts:1
sudo chattr +i /etc/resolv.conf #block overwrites

Настройка атакующего

На машине атакующего необходимо запустить скрипт, предоставленный в репозитории (attacker.py).

В нашем сценарии атакующий контролирует домен poc.lab. Когда поступает запрос к нему или любому поддомену, он добавляет незапрошенную запись ответа (www.hacker.com), указывающую на его IP-адрес.

Демонстрация уязвимости CVE-2025-40778

Когда жертва запрашивает домен poc.lab, сервер BIND пересылает запрос на DNS-сервер атакующего. Атакующий отвечает незапрошенной записью ответа, которая отравляет кэш сервера BIND. Когда жертва обратится к www.hacker.com, она будет перенаправлена на IP-адрес атакующего вместо легитимного.

Вот демонстрация запросов жертвы к обоим доменам:

root@kitploit:~
student@student:~/Desktop$ dig www.poc.lab +noall +answer
www.poc.lab.            60      IN      A       192.168.174.99
student@student:~/Desktop$ dig www.hacker.com +noall +answer
www.hacker.com.         60      IN      A       192.168.174.130

Как показано выше, DNS-запрос жертвы для www.hacker.com возвращает IP-адрес атакующего (192.168.174.130).

[!NOTE]

Это видео является демонстрацией описанной уязвимости: https://drive.google.com/file/d/1PATD0tUqw8-BipfSf6TkQQfnJBvV110Z/view?usp=sharing

Файлы в этом репозитории

  • README.md — этот файл, содержащий объяснение и шаги для воспроизведения уязвимости.
  • attacker.py — простой скрипт на Python, используемый атакующим для ответа на DNS-запросы незапрошенными записями ответов.
  • server.py — простая веб-страница на Flask, которая может быть использована для демонстрации перенаправления после отравления DNS-кэша.
Скачать инструмент