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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2019-1663-Binary-Analysis | Kitploit
Инструменты/GitHubGitHub/wolffcorentin/cve-2019-1663-binary-analysis
Безопасность встроенных системАнализ уязвимостейЭксплуатацияОбратная инженерияАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и ОбразованиеЭксплуатация Бинарных Файлов

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
wolffcorentin/cve-2019-1663-binary-analysis

CVE-2019-1663-Binary-Analysis

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

Бинарный анализ CVE-2019-1663

Автор: Corentin Wolff


Происхождение уязвимости

Источник уязвимости

Уязвимость возникает в функции 0x0002BF64, которая неправильно использует strcpy, что делает её подверженной атакам переполнения буфера. Для ясности эта функция переименована в Login. Ниже приведён фрагмент, иллюстрирующий проблему:

root@kitploit:~
undefined4 Login(char *param_1, char *param_2, char *param_3, int param_4) { ... }

В этом фрагменте функция strcpy используется некорректно, что приводит к уязвимости переполнения буфера:

root@kitploit:~
if (param_4 == 0) {  
    iVar2 = strncmp(acStack_fa, "enc=", 4);  
    if (iVar2 != 0) {  
        strcpy(acStack_15e, acStack_fa);  
        strcpy(acStack_1c2, param_2);  
        goto LAB_0002c264;  
    }  
}

Идентификация имени пользователя

Эта часть кода проверяет имя пользователя:

root@kitploit:~
if (iVar2 != 0) {  
    syslog(6, "Web management login failed, user=%s\n", param_1);  
}

Параметр param_1 идентифицируется как поле имени пользователя.

Проверка пароля

Аналогично param_2 соответствует паролю, а param_3 идентифицируется как httpd_user.

Флаги входа

Переменная login_flag представляет состояния соединения:

root@kitploit:~
0 → Ошибка входа
1 → Успешный вход администратора
2 → Вход администратора отклонён из-за существующей сессии
3 → Принудительный выход администратора

Тип уязвимости

Переполнение буфера и strcpy

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

Как strcpy терпит неудачу

Функция strcpy не проверяет размер исходной строки относительно ёмкости буфера назначения. Это позволяет перезаписывать соседние области памяти.

Контекст эксплуатации

CVE-2019-1663 использует отсутствие проверки размера вводимых данных в некоторых моделях маршрутизаторов Cisco.

Этапы эксплуатации

root@kitploit:~
a. Отсутствие проверки длины: несанитизированный пользовательский ввод передаётся в strcpy.
b. Переполнение памяти: избыточные данные перезаписывают критически важные области памяти.
c. Выполнение произвольного кода: злоумышленники внедряют и выполняют вредоносный код.
d. Требования для эксплуатации: доступ к веб-серверу конфигурации маршрутизатора.
e. Воздействие: привилегированный доступ, позволяющий шпионаж в сети, перенаправление трафика, установку вредоносного ПО или бэкдоров.

Удалённая эксплуатация уязвимости

  1. Условия для удалённой эксплуатации Эксплуатация требует доступа к веб-серверу конфигурации маршрутизатора. Если сервер не доступен из WAN, эксплуатация ограничивается доступом из LAN.
  2. Процедура атаки После получения доступа злоумышленник перехватывает и модифицирует запрос, добавляя вредоносную нагрузку, такую как:
    root@kitploit:~
    &enc=1&user=cisco&pwd=AAAA...AAAAZZZZ&sel_lang=EN  
    

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

Эксплойт | Гаджеты : Ropper

root@kitploit:~
ibc.so.0/ELF/ARM)> disasm_address 0x00034410
Instructions
============
0x00034410: pop {r0, pc}

(libc.so.0/ELF/ARM)> disasm_address 0x00041304
Instructions
============
0x00041304: mov r2, r0

(libc.so.0/ELF/ARM)> search %mov r2, r0%
[INFO] Searching for gadgets: %mov r2, r0%
[INFO] File: libc.so.0
0x00041304: mov r2, r0; mov r0, sp; blx r2;

Библиография

  1. MITRE CWE-120: Копирование буфера без проверки размера входных данных
    https://cwe.mitre.org/data/definitions/120.html

  2. MITRE CWE-787: Запись за границами буфера
    https://cwe.mitre.org/data/definitions/787.html

  3. OWASP Обзор переполнения буфера
    https://owasp.org/www-community/vulnerabilities/Buffer_Overflow

  4. "Переполнение буфера" на Microsoft Learn
    https://learn.microsoft.com/en-us/cpp/security/security-best-practices-for-c-cpp

  5. CERT Secure Coding Standards - STR31-C
    https://wiki.sei.cmu.edu/confluence/display/c/STR31-C.+Guarantee+that+storage+for+strings+has+sufficient+space+for+character+data+and+the+null+terminator

  6. Эксплуатация CVE-2019-1663 - Write Up by Quentin Kaiser
    https://quentinkaiser.be/exploitdev/2019/08/30/exploit-cve-2019-1663

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