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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2018-18912 — SEH-основанный переполнение буфера в Easy File Sharing Web Server 7.2, демонстрирующее, как аутентифицированный параметр HTTP POST может повредить цепочку обработчиков исключений. | Kitploit
Инструменты/GitHubGitHub/themalwareguardian/cve-2018-18912
Анализ уязвимостейЭксплуатацияОбратная инженерияШелл-кодЭксплуатация веб-приложенийОтладчикиОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubthemalwareguardian/cve-2018-18912

CVE-2018-18912

SEH-основанный переполнение буфера в Easy File Sharing Web Server 7.2, демонстрирующее, как аутентифицированный параметр HTTP POST может повредить цепочку обработчиков исключений.

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

Популярное

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

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

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

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

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

🐞 CVE-2018-18912: Easy File Sharing Web Server 7.2 - Стековое переполнение буфера (SEH)

SEH-переполнение буфера в Easy File Sharing Web Server 7.2, демонстрирующее, как аутентифицированный параметр HTTP POST может повредить цепочку обработчиков исключений.




📑 Содержание

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



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

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

CVE-2018-18912 — это пример, который я использую для перехода от простых перезаписей EIP к эксплуатации на основе SEH. Как только студенты понимают, как работает прямая перезапись адреса возврата, следующим шагом является понимание того, что происходит, когда стек настолько поврежден, что программа вызывает исключение до возврата, и как эта цепочка обработчиков исключений становится поверхностью атаки. Этот CVE наглядно демонстрирует этот переход: переполнение достаточно глубокое, чтобы достичь цепочки SEH, а путь эксплуатации следует классической технике POP POP RETN, которую должен понимать каждый разработчик эксплойтов. Необязательный обход DEP с помощью ROP оставлен как расширение для студентов, желающих пойти дальше: то же переполнение, другая стратегия гаджетов, гораздо более сложная задача.




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

Эта уязвимость затрагивает Easy File Sharing Web Server 7.2, легковесное веб-серверное приложение для Windows, которое широко использовалось для простого обмена файлами. Программное обеспечение было написано без учета современных средств защиты. Что делает этот случай особенно интересным с точки зрения обучения, так это комбинация вовлеченных факторов:

  • Требуется аутентификация, но только на базовом уровне. Это моделирует сценарий, где злоумышленник получил учетные данные, что часто встречается в реальной пост-эксплуатации.
  • Переполнение основано на SEH. Сбой не перезаписывает адрес возврата напрямую. Вместо этого он повреждает цепочку структурированного обработчика исключений в стеке, что требует другой техники эксплуатации.
  • Уязвимая конечная точка — это POST-запрос. Легко воспроизвести стандартными HTTP-инструментами и знакомо каждому, кто работал с веб-приложениями.
  • Обход DEP необязателен. Эксплойт работает с прямым подходом SEH + короткий переход + шелл-код в системах, где DEP отключен. Если DEP включен, то же переполнение можно расширить ROP-цепочкой, используя гаджеты из ImageLoad.dll, чтобы вызвать VirtualProtect перед передачей управления шелл-коду.

Эта комбинация делает CVE-2018-18912 отличным примером для обучения техникам разработки эксплойтов за пределами основ.




🔍 Контекст и затронутое ПО

Easy File Sharing Web Server 7.2 — это Windows-приложение, позволяющее пользователям обмениваться файлами по HTTP. Оно включает такие функции, как просмотр файлов, аутентификация пользователей и встроенная система форумов.

Функционал форума принимает POST-запросы для создания новых тем. Одним из полей формы, обрабатываемых этой конечной точкой, является параметр author. Внутренне приложение копирует это управляемое пользователем значение в стековый буфер фиксированного размера без проверки длины.

Уязвимость была обнаружена и сообщена в 2018 году. Вскоре после этого был опубликован оригинальный PoC, демонстрирующий как сбой, так и рабочую цепочку эксплойта, включая ROP-гаджеты из встроенного модуля ImageLoad.dll.

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

  • Тип уязвимости: Стековое переполнение буфера (SEH)
  • Затронутая версия: Easy File Sharing Web Server 7.2
  • Уязвимая конечная точка: POST /forum.ghp
  • Уязвимый параметр: author
  • Воздействие: Удаленное выполнение кода



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

Easy File Sharing Web Server обрабатывает HTTP POST-запросы, направленные на /forum.ghp, когда пользователь создает новую тему форума. Один из принимаемых параметров — author, который копируется в локальный стековый буфер без какой-либо проверки длины.

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

root@kitploit:~
char author_buffer[64];

strcpy(author_buffer, user_input);

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

По мере записи большего количества данных структура стека повреждается. В отличие от простой перезаписи адреса возврата, переполнение достигает цепочки структурированного обработчика исключений (SEH), хранящейся в стеке. Когда в результате повреждения стека возникает исключение, ОС проходит по цепочке SEH и передает управление на адрес обработчика, контролируемый злоумышленником.

Таким образом, поток эксплуатации следует технике перезаписи SEH:

  1. Длинный ввод перезаписывает стек, включая указатели nSEH и SEH обработчика.
  2. Исключение вызывается из-за повреждения памяти.
  3. ОС вызывает перезаписанный адрес обработчика.
  4. Гаджет POP POP RETN используется для передачи выполнения в область nSEH.
  5. Короткий прыжок вперед пропускает запись SEH и перенаправляет выполнение в область шелл-кода.
  6. Шелл-код выполняется.

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




Скачать инструмент
💥 Вызов сбоя

Сбой можно воспроизвести, отправив длинную строку в параметре author POST-запроса к /forum.ghp после аутентификации с действующими учетными данными. Пример на Python:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 500

request = (
	b"POST /forum.ghp?forumid=1 HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Cookie: UserID=test; PassWD=test; SESSIONID=1234\r\n"
	b"Connection: close\r\n"
	b"\r\n"
	b"author=" + payload + b"&passwd=test&title=test&content=test&Submit=Submit\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()

При выполнении под отладчиком сбой показывает поврежденную цепочку SEH и нарушение доступа, что подтверждает, что управляемые пользователем данные перезаписали указатель обработчика исключений.




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

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

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

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

  • Фаззинг параметра author для выявления сбоя.
  • Поиск смещения для определения точной позиции nSEH и SEH в стеке.
  • Анализ «плохих» символов для выявления байт, повреждающих полезную нагрузку.
  • Перезапись цепочки SEH с использованием гаджета POP POP RETN из загруженного модуля.
  • Размещение и выполнение шелл-кода.