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

Статья PsExec Local Privilege Escalation

Azrv3l

win32kfull
Эксперт
Регистрация
30.03.2019
Сообщения
215
Реакции
539
Итак ... вот эта уязвимость cуществует уже давно: локальная уязвимость повышения привилегий в PsExec. Эта локальная эскалация привилегий позволяет процессу, не являющемуся администратором, стать SYSTEM, если PsExec выполняется локально или удаленно на целевой машине. Я смог подтвердить, что она работает с Windows 10 до XP, и, согласно моему расследованию, она затрагивает версии от PsExec v2.2 (последний на момент написания) вплоть до v1.72 (2006). Мы дали Microsoft 90 дней на исправление проблемы, но она еще не исправлена.

Image for post

*gif на форум залить не получилось

Если вы не знакомы с PsExec, это инструмент системного администратора, входящий в состав пакета SysInternals, который позволяет удаленно выполнять приложения на клиентских машинах. Ниже я кратко описываю, как работает PsExec:

PsExec содержит встроенный ресурс под названием «PSEXESVC», который представляет собой исполняемый компонент уровня обслуживания, который извлекается, копируется и выполняется на удаленном компьютере как SYSTEM всякий раз, когда клиент PsExec выполняет PsExec, нацеленное на удаленный компьютер. Связь между клиентом PsExec и удаленной службой PSEXESVC осуществляется по именованным каналам. В частности, канал с именем «\ PSEXESVC» отвечает за синтаксический анализ и выполнение команд клиента PsExec, таких как «какое приложение выполнять», «соответствующие данные командной строки» и т.д

Конечно, из соображений безопасности канал «\ PSEXESVC» службы PSEXESVC защищен и разрешает доступ только администраторам для чтения / записи, тем самым предотвращая чтение / запись в канал службы локальных пользователей с низким уровнем привилегий.

1.png


Однако через приседание канала (метод, при котором вы сначала создаете канал), приложение с низким уровнем привилегий может получить доступ к этому каналу. Если локальное приложение с низким уровнем привилегий создает именованный канал «\ PSEXESVC» до выполнения PSEXESVC, то PSEXESVC получит дескриптор существующего экземпляра, а не создает сам именованный канал, что, как мы увидим позже, будет иметь некоторые неожиданные последствия. Ниже я покажу как PSEXESVC создает канал «\ PSEXESVC».

2.png


Здесь мы видим из аргумента nMaxInstances, что он позволяет существовать неограниченному количеству экземпляров канала «\PSEXESVC». Мы также видим, что это не гарантирует, что это первое приложение, которое создает канал «\ PSEXESVC», что обычно делается с помощью флага FILE_FLAG_FIRST_PIPE_INSTANCE. В этом случае он попытается создать именованный канал, и, если он уже существует, просто получит дескриптор существующего канала «\ PSEXESVC» после вызова. Это приведет к унаследованию существующего ACL канала вместо того, чтобы применять к каналу собственный ACL «Только администраторы», независимо от того, что в атрибутах безопасности указано иное в его вызове CreateNamedPipe (см. Выше).

Здесь я создал простую программу «PipeHijack.exe», которая создает этот канал «\ PSEXESVC» с доступом для чтения / записи, доступным для «Дэвида Уэллса», пользователя без повышенных прав.

3.png


При этом запуске, если PsExec когда-либо будет выполняться локально или удаленно на этом компьютере в будущем, экземпляр PSEXESVC получит дескриптор моего канала, который я, конечно, могу читать / писать, тем самым позволяя моему приложению с низким уровнем привилегий взаимодействовать с это сервис PSEXESVC SYSTEM!

На этом по сути конец. Все, что мне нужно было сделать, это поговорить со службой PSEXESVC. Я перепроектировал протокол PSEXESVC v2.2 и создал способ связи по этому каналу и выполнения любого желаемого двоичного файла, который я хочу, как SYSTEM. По сути, это имитирует клиент PsExec, от которого он думает, что получает команды, поэтому выполнить любой процесс как SYSTEM довольно просто.

4.png


Полный PoC вы можете найти его здесь: https://github.com/tenable/poc/tree/master/Microsoft/Sysinternals/PsExecEscalate.cpp

От ТС
Оригинал вот: https://medium.com/tenable-techblog/psexec-local-privilege-escalation-2e8069adc9c8
Перевод:
Azrv3l cпециально для xss.pro
 
Ребят, кто тестил? какие результаты?
у меня безуспешно почему то
я так подозреваю оно работает только если админ использовал psexec и сервис висит созданный
 


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