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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2017-14980 — Стековое переполнение буфера в Sync Breeze Enterprise 10.0.28, доступное через обработчик /login, демонстрирующее, как непроверенная длина входных данных может повредить стековую память. | Kitploit
Инструменты/GitHubGitHub/themalwareguardian/cve-2017-14980
Анализ уязвимостейЭксплуатацияОбратная инженерияШелл-кодЭксплуатация веб-приложенийОтладчикиФаззингОбучение и ОбразованиеРазработка Полезной Нагрузки

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Эксплуатация Бинарных Файлов
GitHubthemalwareguardian/cve-2017-14980

CVE-2017-14980

Стековое переполнение буфера в Sync Breeze Enterprise 10.0.28, доступное через обработчик /login, демонстрирующее, как непроверенная длина входных данных может повредить стековую память.

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

🐞 CVE-2017-14980: Sync Breeze Enterprise 10.0.28 - Переполнение стекового буфера

Переполнение стекового буфера в Sync Breeze Enterprise 10.0.28, доступное через обработчик /login, демонстрирующее, как непроверенная длина входных данных может повредить стековую память.




📑 Содержание

  • Зачем существует этот репозиторий
  • Почему эта уязвимость интересна
  • Контекст и затрагиваемое ПО
  • Об уязвимости
  • Вызов сбоя
  • Эксплуатация



🎓 Зачем существует этот репозиторий

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

CVE-2017-14980 — это случай, который я использую, когда хочу, чтобы студенты столкнулись с обычным перезаписыванием EIP через HTTP, а не через необработанный протокол TCP. На первый взгляд это выглядит просто: форма входа, длинный пароль, сбой, но контекст HTTP вводит набор нежелательных символов, которые не очевидны сразу и заставляют студентов задуматься о том, как данные обрабатываются перед тем, как попасть в уязвимый буфер. Понимание того, почему %, &, + и = являются здесь плохими символами, требует понимания URL-кодирования, что само по себе является полезным уроком.




💡 Почему эта уязвимость интересна

Sync Breeze Enterprise — это приложение для синхронизации файлов в Windows, которое предоставляет веб-интерфейс управления. Уязвимость находится в обработчике входа, который копирует поле пароля в стековый буфер фиксированного размера без проверки длины. Что делает этот случай полезным для обучения:

  • Не требуется аутентификация. Переполнение происходит во время обработки входа до выполнения проверки учетных данных.
  • Прямое перезаписывание EIP. Без SEH, кучи или многоэтапной эксплуатации. Сохранённый обратный адрес перезаписывается напрямую.
  • HTTP-контекст вводит неочевидные нежелательные символы. Помимо обычных \x00, \x0a и \x0d, тип содержимого application/x-www-form-urlencoded добавляет \x25 (%), \x26 (&), \x2b (+) и \x3d (=) в качестве плохих символов, потому что сервер декодирует тело URL-кодировки перед копированием в буфер. Студенты, которые пропускают анализ нежелательных символов и сразу переходят к шелл-коду, получат полезную нагрузку, которая будет молча повреждена до того, как попадёт в память.
  • Надёжный гаджет в модуле, поставляемом с приложением. libspp.dll, входящий в состав Sync Breeze, был скомпилирован без ASLR, SafeSEH или CFG, что делает адрес гаджета фиксированным между перезагрузками.



🔍 Контекст и затрагиваемое ПО

Sync Breeze Enterprise — это инструмент синхронизации файлов для Windows, который включает встроенный веб-сервер для удалённого управления. Веб-интерфейс прослушивает TCP-порт 80 (если включён) и предоставляет форму входа по адресу /login. Уязвимость находится в обработчике POST, который обрабатывает поле пароля.

Ключевые технические детали:

  • Тип уязвимости: Переполнение стекового буфера
  • Затрагиваемая версия: Sync Breeze Enterprise 10.0.28
Скачать инструмент
  • Затрагиваемая конечная точка: POST /login, параметр password
  • Уязвимый компонент: Обработчик формы входа
  • Требуется аутентификация: Нет
  • Воздействие: Удалённое выполнение кода



  • ⚠️ Об уязвимости

    Sync Breeze обрабатывает форму входа, считывая тело POST и извлекая поле пароля. Значение копируется в стековый буфер фиксированного размера без проверки его длины. Упрощённая версия уязвимой логики выглядит так:

    root@kitploit:~
    char password_buffer[256];
    
    strcpy(password_buffer, password_field);
    

    Тело POST декодируется из URL перед копированием, что означает, что такие символы, как %25, декодируются в % перед тем, как попасть в буфер. Это также объясняет, почему некоторые символы, специальные для URL, действуют как плохие символы: они интерпретируются слоем HTTP до того, как данные попадут в уязвимую операцию копирования. Отправка достаточно длинного значения пароля приводит к тому, что копия выходит за пределы буфера, перезаписывая сохранённый обратный адрес. Когда функция возвращается, процессор загружает управляемое злоумышленником значение из стека в EIP и переходит к нему.




    💥 Вызов сбоя

    Сбой можно воспроизвести, отправив слишком длинный пароль в POST-запросе к /login. Аутентификация не требуется. Пример с использованием Python:

    root@kitploit:~
    import socket
    
    HOST = '127.0.0.1'
    PORT = 80
    
    payload = b"A" * 600
    
    body = b"username=admin&password=" + payload
    request = (
    	b"POST /login HTTP/1.1\r\n"
    	b"Host: 127.0.0.1\r\n"
    	b"Content-Type: application/x-www-form-urlencoded\r\n"
    	b"Content-Length: " + str(len(body)).encode() + b"\r\n"
    	b"Connection: close\r\n"
    	b"\r\n" +
    	body
    )
    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.send(request)
    s.close()
    

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

    root@kitploit:~
    EIP = 41414141
    

    подтверждая, что сохранённый обратный адрес был повреждён переполнением.




    💣 Эксплуатация

    Цель этого репозитория — не только продемонстрировать сбой, но и провести пошаговый процесс полной эксплуатации, от фаззинга до рабочего обратного шелла.

    Чтобы не загромождать основной README, подробные заметки по эксплуатации, скрипты и шаги отладчика размещены в папке Vulnerability 📂 этого репозитория.

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

    • Фаззинг поля пароля для выявления сбоя.
    • Определение смещения для нахождения точного положения EIP в стеке.
    • Анализ нежелательных символов для тела POST в URL-кодировке, включая нежелательные символы, специфичные для HTTP.
    • Поиск гаджета JMP ESP в libspp.dll, модуле, скомпилированном без ASLR или SafeSEH.
    • Размещение и выполнение шелл-кода.