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

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

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

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

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

Категории

Все категории
Loading categories
LocalPotato_CVE-2023-21746 — Эксплойт доказательства концепции для локального повышения привилегий в Windows (CVE-2023-21746), использующий уязвимость локальной аутентификации NTLM для получения привилегий SYSTEM через доступ к общим ресурсам SMB и перехват DLL. | Kitploit
Инструменты/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Повышение привилегийАнализ уязвимостейЭксплуатацияЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubmuhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Эксплойт доказательства концепции для локального повышения привилегий в Windows (CVE-2023-21746), использующий уязвимость локальной аутентификации NTLM для получения привилегий SYSTEM через доступ к общим ресурсам SMB и перехват DLL.

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

LocalPotato

Уязвимость локального повышения привилегий (LPE) в Windows была сообщена Microsoft 9 сентября 2022 года Андреа Пьерини (@decoder_it) и Антонио Кокомацци (@splinter_code). Уязвимость позволяла злоумышленнику с учётной записью с низкими привилегиями на хосте читать/записывать произвольные файлы с привилегиями SYSTEM.

Хотя сама по себе уязвимость не позволяет напрямую выполнять команды как SYSTEM, мы можем скомбинировать её с несколькими векторами для достижения этого результата. Удачно, что 13 февраля другой PoC для повышения привилегий был опубликован BlackArrowSec, который злоупотребляет службой StorSvc, позволяя злоумышленнику выполнять код с правами SYSTEM, если он может записать DLL-файл в любой каталог, находящийся в PATH.

PoC LocalPotato использует недостаток в особом случае аутентификации NTLM, называемом локальной аутентификацией NTLM, чтобы обмануть привилегированный процесс, заставив его аутентифицировать сеанс, который злоумышленник начинает против локального SMB-сервера. В результате злоумышленник получает соединение, которое предоставляет ему доступ к любым общим ресурсам с привилегиями обманутого процесса, включая специальные общие ресурсы, такие как C$ или ADMIN$.

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

  • Злоумышленник заставит привилегированный процесс подключиться к поддельному серверу под его контролем. Это работает аналогично предыдущим эксплойтам Potato, где непривилегированный пользователь может заставить операционную систему создавать соединения, использующие привилегированного пользователя (обычно SYSTEM).
  • Поддельный сервер создаст контекст безопасности A для привилегированного соединения, но не отправит его обратно немедленно. Вместо этого злоумышленник запустит поддельного клиента, который одновременно инициирует соединение с локальным SMB-сервером (Windows File Sharing), используя свои текущие непривилегированные учётные данные. Клиент отправит сообщение Type1 для инициации соединения, а сервер ответит, отправив сообщение Type2 с идентификатором для нового контекста безопасности B.
  • Злоумышленник подменит идентификаторы контекстов обоих соединений, чтобы привилегированный процесс получил контекст соединения SMB-сервера вместо своего собственного. В результате привилегированный клиент свяжет своего пользователя (SYSTEM) с контекстом безопасности B SMB-соединения, созданного злоумышленником. Как следствие, клиент злоумышленника теперь может получить доступ к любому сетевому общему ресурсу с привилегиями SYSTEM!

Имея привилегированное соединение с общими ресурсами SMB, злоумышленник может читать или записывать файлы на целевой машине в любом расположении. Хотя это не позволит нам напрямую выполнять команды на уязвимой машине, мы скомбинируем это с другим вектором атаки для достижения этой цели.

Обратите внимание, что уязвимость находится в протоколе NTLM, а не в SMB-сервере, поэтому этот же вектор атаки теоретически может быть использован против любой службы, использующей аутентификацию через NTLM. Однако на практике необходимо учитывать некоторые особенности при выборе протокола для атаки. PoC использует SMB-сервер, чтобы избежать некоторых дополнительных мер защиты, действующих для других протоколов против аналогичных векторов атак, и даже реализует быстрый обход для работы эксплойта против SMB-сервера. Пост автора оригинального эксплойта - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

До сих пор мы использовали LocalPotato для записи произвольных файлов на целевую машину. Чтобы получить привилегированную оболочку, нам всё ещё нужно выяснить, как использовать произвольную запись для выполнения команды.

Недавно был найден ещё один вектор повышения привилегий, где злоумышленник может перехватить отсутствующую DLL для выполнения произвольных команд с привилегиями SYSTEM. Единственная проблема с этим вектором заключалась в том, что злоумышленнику нужно было записать DLL в PATH системы, чтобы его запустить. По умолчанию PATH в Windows включает только каталоги, в которые могут записывать только привилегированные учётные записи. Хотя возможно найти машины, где установка определённых приложений изменила переменную PATH и сделала машину уязвимой, этот вектор атаки применим только в определённых сценариях. Комбинирование этой атаки с LocalPotato позволяет нам преодолеть это ограничение и получить полностью работающий эксплойт для повышения привилегий.

StorSvc и перехват DLL

Как обнаружили BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc), злоумышленник может отправить RPC-вызов метода "SvcRebootToFlashingMode", предоставляемого службой "StorSvc", что, в свою очередь, приведёт к попытке загрузить отсутствующую DLL с именем "SprintCSP.dll". Если вы не знакомы с RPC, думайте о нём как об API, который предоставляет функции для удалённого использования. В данном случае служба StorSvc предоставляет метод SvcRebootToFlashingMode, который может вызвать любой, у кого есть доступ к машине. Поскольку StorSvc работает с привилегиями SYSTEM, создание SprintCSP.dll где-либо в PATH приведёт к её загрузке при каждом вызове SvcRebootToFlashingMode.

Компиляция эксплойта

Ссылка на эксплойт - (https://github.com/decoder-it/LocalPotato)

Чтобы использовать этот эксплойт, вам сначала нужно скомпилировать оба предоставленных файла:

  • SprintCSP.dll: Это отсутствующая DLL, которую мы собираемся перехватить. Нам нужно будет изменить команду для запуска обратной оболочки.
  • RpcClient.exe: Эта программа вызовет RPC-вызов SvcRebootToFlashingMode. В зависимости от версии Windows, на которую вы нацеливаетесь, вам может потребоваться немного отредактировать код эксплойта, поскольку разные версии Windows используют разные идентификаторы интерфейсов для предоставления SvcRebootToFlashingMode. Проекты для обоих файлов можно найти в каталоге "LPE via StorSvc".

Давайте начнём с "RpcClient.exe". Как упоминалось ранее, нам нужно будет изменить эксплойт в зависимости от версии Windows целевой машины. Для этого нам нужно изменить первые строки файла "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c", чтобы была выбрана правильная операционная система. Это установит эксплойту правильный идентификатор интерфейса RPC. Теперь, когда код исправлен, давайте откроем командную строку разработчика и соберём проект, выполнив следующую команду: Команды: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (Скомпилированный исполняемый файл будет найден на вашем рабочем столе.)

Теперь для компиляции "SprintCSP.dll" нам нужно только изменить функцию "DoStuff()" в файле "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c", чтобы она выполняла команду, предоставляющую нам привилегированный доступ к машине. Для простоты мы заставим DLL добавить нашего текущего пользователя в группу "Администраторы". Мы также можем получить обратную оболочку с этой цели на нашу машину. Теперь компилируем DLL, выполнив следующую команду, и перемещаем результат обратно на наш рабочий стол: Команды: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

Теперь мы готовы запустить эксплойт. Убедитесь, что у вас есть файлы эксплойта "LocalPotato.exe", "RpcClient.exe" и "SprintCSP.dll".

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