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

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

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

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

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

Категории

Все категории
Loading categories
cve-2017-8890-msf — Для pull request в Metasploit | Kitploit
Инструменты/GitHubGitHub/7043mcgeep/cve-2017-8890-msf
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияЭксплуатация Бинарных Файлов
GitHub7043mcgeep/cve-2017-8890-msf

cve-2017-8890-msf

Для pull request в Metasploit

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

Популярное

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

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

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

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

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

Модуль: Phoenix Talon CVE 2017-8890

Это может решить проблему #8571, в которой запрашиваются модули Phoenix Talon.

Обзор 2017-8890

Это CVE:

  • является самым серьезным представителем класса уязвимостей ядра Linux Phoenix Talon. Ни одного PoC для этого CVE не существует в Exploit DB. Но другие публичные PoC доступны.
  • не очень хорошо документирована. Но вот краткое объяснение, чтобы дать общее понимание уязвимости.
  • существует во всех версиях ядра до 4.10.15, хотя некоторые источники утверждают, что она существует до 4.11. Посмотрите коммит исправления здесь.
  • является результатом ошибки в стеке IPv4 ядра (в частности, multicast).

На целевой машине двойное освобождение (double-free) срабатывает из-за того, что ядро сохраняет дополнительную копию mc_list в момент accept().

Псевдокод с пояснениями:

Машина, работающая на ядре 4.10.15 и ниже, находится под угрозой, если она выполняет следующую процедуру:

root@kitploit:~
sockfd = socket(AF_INET, xx, IPPROTO_TCP);
setsockopt(sockfd, SOL_IP, MCAST_JOIN_GROUP, xxxx, xxxx);
bind(sockfd, xxxx, xxxx);
listen(sockfd, xxxx);
newsockfd = accept(sockfd, xxxx, xxxx);
close(newsockfd);  // trigger release calls, handoff to RCU
sleep(5);          // wait for rcu to free()
close(sockfd);     // second free()

Родительский сокет sockfd создается. Он добавляется в multicast-группу с опцией MCAST_JOIN_GROUP. При добавлении сокета в multicast-группу на локальном интерфейсе ядро выделяет память. На этом этапе mc_list существует в родительском сокете.

После того, как сокету присваивается адрес с помощью bind(), listen() для ожидания соединения и accept(). accept() создает новый сокет newsockfd, в который копируются все необходимые поля родительского сокета, включая значение указателя mc_list. На этом этапе существует несколько указателей, указывающих на один и тот же блок памяти, отсюда и двойное освобождение.

Когда соединение установлено, ядро создает дочерний сокет, который наследует объект mc_list родительского сокета. Эта ошибка наследования находится в inet_csk_clone_lock на строке 648 файла net/ipv4/inet_connection_sock.c. Посмотрите исправление, чтобы увидеть однострочное исправление для этого непреднамеренного наследования.

Далее закройте дочерний сокет. Как объяснено выше, это не освобождает объект mc_list. Он проходит через структуру RCU (remote-copy-update) для освобождения памяти. sleep() на несколько секунд, чтобы убедиться, что передача RCU успеет вызвать kfree(). Наконец, закройте родительский сокет, что вызовет второе освобождение.

Модуль

Простая DoS-атака. Удаленно запускает двойное освобождение на известной целевой машине, выполняющей необходимую серверную процедуру (объяснена выше). Это вызывает панику ядра.

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