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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-17147 — Всесторонний реверс-инжиниринг и эксплуатация CVE-2019-17147, стекового переполнения буфера в маршрутизаторах TP-Link TL-WR841N. Включает анализ прошивки, отладку оборудования и эксплойт с поэтапным внедрением шеллкода для неаутентифицированного удаленного выполнения кода (RCE). | Kitploit
Инструменты/GitHubGitHub/imnot-ye/cve-2019-17147
Безопасность встроенных системБезопасность IoTАнализ уязвимостейЭксплуатацияОбратная инженерияШелл-кодАппаратный ХакингАппаратная БезопасностьСтатьи и ИсследованияОбучение и ОбразованиеАнализ ПрошивокЭксплуатация Бинарных Файлов
46 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubimnot-ye/cve-2019-17147

CVE-2019-17147

Всесторонний реверс-инжиниринг и эксплуатация CVE-2019-17147, стекового переполнения буфера в маршрутизаторах TP-Link TL-WR841N. Включает анализ прошивки, отладку оборудования и эксплойт с поэтапным внедрением шеллкода для неаутентифицированного удаленного выполнения кода (RCE).

Репозиторий

CVE-2019-17147: Эксплуатация TP-Link TL-WR841N

Banner

Обзор

Этот репозиторий документирует полный процесс обратной разработки и эксплуатации CVE-2019-17147 — критической уязвимости удалённого выполнения кода (RCE) в маршрутизаторе TP-Link TL-WR841N (архитектура MIPSEL). Уязвимость находится в веб-сервере httpd, где некорректная проверка входных данных приводит к стековому переполнению буфера через пользовательскую функцию cstr_strncpy, что позволяет выполнять произвольный код без аутентификации.

УязвимостьCVE-2019-17147
CVSS v3.18.8 (High)
ВекторAV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ТипСтековое переполнение буфера
Компонент/usr/bin/httpd

Инфраструктура и инструментарий

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

  • Оборудование: Маршрутизатор TP-Link TL-WR841N.
  • Аппаратные инструменты: Программатор CH341A (дамп SPI Flash), конвертер USB-TTL (консоль UART), зажим SOIC8.
  • Программные инструменты: flashrom (дампинг памяти), binwalk (извлечение прошивки), IDA Pro (статический анализ), GDB-Multiarch (удалённая отладка), QEMU (эмуляция MIPSEL).
  • Версия прошивки: TL-WR841N(US)_V14_180319.

Технический анализ

1. Статический анализ

Уязвимость была обнаружена в бинарном файле /usr/bin/httpd. Статический анализ с помощью IDA Pro выявил пользовательскую функцию копирования строк cstr_strncpy, используемую при разборе HTTP-заголовков (в частности, заголовка Host).

IDA Graph

Функция cstr_strncpy принимает параметр copy_len, производный от длины исходной строки, а не от размера буфера назначения. Это позволяет классическое стековое переполнение буфера при подаче чрезмерно длинного заголовка. Кроме того, функция http_parser_argStrToList, работающая со структурой связного списка, подвержена этому переполнению, что даёт контроль над указателями next и prev.

2. Динамический анализ

Отладка во время выполнения с помощью gdbserver подтвердила аварию и контроль над потоком выполнения. Анализ карты памяти (vmmap) выявил критическое отсутствие защитных мер:

  • Куча: права RWX (Чтение, Запись, Исполнение).
  • ASLR: Ограничен/Неэффективен для этого бинарного файла.
  • NX: Отключён.

VMMap

Такая конфигурация допускает прямое выполнение shellcode, размещённого в куче, обходя необходимость в сложных ROP-цепочках.

Стратегия эксплуатации

Цепочка эксплойта использует примитив Write-What-Where, полученный из повреждённых указателей связного списка, для достижения RCE.

  1. Heap Spraying: Shellcode внедряется в кучу. Благодаря сохранению кучи между запросами это можно делать поэтапно.
  2. Поэтапное внедрение: Чтобы обойти ограничения на нулевые байты в strcpy, полезная нагрузка отправляется в нескольких запросах:
    • Этап 1: Записать адрес shellcode в промежуточную область.
    • Этап 2: Записать целевой адрес GOT в промежуточную область.
  3. Перезапись GOT: Запись входа функции atol в глобальной таблице смещений (GOT) заменяется адресом shellcode.
  4. Триггер выполнения: Эксплойт принудительно вызывает atol (через заголовок Content-Length), перенаправляя выполнение на внедрённый shellcode.

Exploit Diagram

Проверка эксплойта

Финальный скрипт на Python успешно автоматизирует атаку, открывая root-оболочку на порту 31337.

Root Shell

Смягчение

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

  • Исправление исходного кода: Заменить использование cstr_strncpy на безопасные альтернативы, которые строго соблюдают ограничения буфера назначения (например, strncpy с явной проверкой границ на основе sizeof(dest)).
  • Укрепление бинарного файла: Включить NX (No-Execute), чтобы предотвратить выполнение кода в стеке и куче. Включить полный ASLR и PIE (позиционно-независимый исполняемый файл) для рандомизации расположения памяти.

Полная документация

Для подробного пошагового руководства по всему процессу, включая анализ кода и настройку окружения, обратитесь к полным руководствам, включённым в этот репозиторий:

  • 🇮🇹 Guida Completa (Italiano)
  • 🇬🇧 Полное руководство (английский)

Авторы

  • Angelo Zullo
  • Simone Vitto
  • Vincenzo Cantatore

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

Этот проект предназначен только для образовательных и исследовательских целей. Предоставленная информация направлена на повышение безопасности IoT-устройств. Авторы не несут ответственности за любое неправомерное использование информации или кода, содержащегося здесь.


Основано на оригинальных исследованиях и анализе.

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