Запускать от имени другого пользователя без пароля из командной строки с повышенными привилегиями в Windows
Есть несколько утилит для запуска под другим пользователем (например: runas
, cpau
, psexec
) но все они требуют пароль для соответствующего пользователя, даже если вы уже работаете с повышенными привилегиями.
Я хотел бы добиться следующего:
- У меня уже есть повышенный запрос (
Administrator
) - Я хотел бы выполнить команду (например:
calc.exe
) какjohn
без ввода / передачи пароля в утилиту запуска.
Например, в системе Unix вы можете просто:
root@server:~# su - john
7 ответов
В Windows вы можете сделать это только при наличии текущего сеанса входа в систему пользователя, которого вы пытаетесь выдать. Это связано с локальной групповой политикой "Олицетворять клиента после аутентификации", позволяющей членам группы "Администраторы" делать именно это (находится в разделе "Локальные политики"> "Назначения прав пользователя").
Я знаю, что одним из инструментов, позволяющих вам это сделать, является Process Hacker 2. Запустите инструмент от имени локального администратора и найдите процесс, работающий от имени пользователя, которого вы хотите выдать себя за другого. Щелкните правой кнопкой мыши на нем, выберите "Разное"> "Запуск от имени этого пользователя...", затем введите двоичный путь, который вы хотите запустить от имени этого пользователя, например, cmd. Затем CMD откроется как этот пользователь, не запрашивая пароль этого пользователя.
Я использую это все время. Требуется ввод учетных данных при первом использовании (и при изменении пароля), но это все.
runas /user:yourusernamehere /savecred "Your Executable Here"
Если вы сохраните эту команду как часть файла bat, вы можете создать ярлык, который запустит ее с правами администратора с использованием цели, подобной следующей.
C:\Windows\System32\cmd.exe /c "C:\yourbatfilehere.bat"
Нет, не возможно под Windows. Вы всегда должны вводить пароль хотя бы один раз при запуске приложений под другой учетной записью пользователя. Даже в качестве администратора.
Предотвращает смешные вещи и позволяет проводить чистый одитинг. Если что-то происходит под учетной записью пользователя, пользователи не могут обвинять администраторов в этом без их согласия.
Если у вас есть повышенные привилегии, вы можете использовать планировщик задач Windows для запуска сценария (или чего-либо еще) от имени любого пользователя без его пароля.
- Откройте планировщик заданий
- Нажмите "Создать задачу..."
- Нажмите "Сменить пользователя или группу" и введите имя пользователя.
- Перейдите на вкладку "Действия" и выберите свой скрипт или исполняемый файл.
- Выполните задачу вручную или запланируйте, как хотите
Готово
Это хакерский AF, но у меня тоже была в этом необходимость, и вот что я придумал. В частности, я хочу выполнить сброс IIS, для чего требуется приглашение с повышенными правами.
Из командной строки CMD я могу сделать:
powershell "Start-Process -Verb Runas 'iisreset' -Wait"
Это открывает отдельное окно Windows PowerShell (v5), выполняет сброс IIS и ожидает завершения процесса, прежде чем продолжить (полезно в сценарии - также работает как событие Pre/Post-Build в файле .csproj, что и делает). Я делаю).
Из командной строки PowerShell это еще проще:
Start-Process -Verb Runas 'iisreset' -Wait
Как я уже сказал, хакерство... но оно выполняет свою работу.
Теоретически это должно работать и в Microsoft PowerShell (7.2 на момент написания статьи). Хотя я этого не проверял, так что YMMV.
Вот как я это делаю
psexec -u администратор -p пароль -i (идентификатор сеанса) -h -d cmd /c start (команда)
Идентификатор сеанса: извлекается с помощью следующей команды «qwinsta console». Команда: это то, что вам нужно запустить. (поймите, что если требуется взаимодействие с пользователем, этому пользователю нужно будет щелкнуть мышью или выполнить любые необходимые задачи)
Psexec можно найти на https://live.sysinternals.com .
Если вы поместите.exe в их загрузочную папку, вы сможете запустить его как они.