Après un appel réussi à la fois LogonUser et ImpersonateLoggedOnUser il ne semble pas que mon processus fonctionne comme le nouvel utilisateur ...ImpersonateLoggedOnUser ne semble pas fonctionner
système(« WHOAMI »);
imprime: Chris PC \ Chris
quand il devrait être: Chris-PC \ LimitedGuy
Y at-il une fonction que je ne suis pas appeler ou quelque chose?
Mon code:
if(argc == 6) // impersonate
{
printf("[~] Logging in as %ws\\\\%ws..\n", argv[3], argv[4]);
if(!LogonUser(argv[4], argv[3], argv[5], LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &logonToken))
{
printf("[!] Failed to login as %ws. Error Code: %X\n", argv[4], GetLastError());
return 1;
}
if(!ImpersonateLoggedOnUser(logonToken))
{
printf("[!] ImpersonateLoggedOnUser failed with error code: %X\n", GetLastError());
return 1;
}
LoadUserProfile(logonToken, &plinfo);
system("whoami");
printf("[~] Login successful!\n");
}
Lorsque j'utilise CreateProcessAsUser pour lancer cmd.exe, il échoue quand je tape "whoami". Y at-il de toute façon pour forcer le processus lancé à prendre les attributs de sécurité que je veux? –
J'ai juste essayé un test rapide en utilisant CreateProcessWithLogonW et cela a fonctionné comme prévu - whoami a donné le nom d'utilisateur du compte que le processus a été lancé sous pas celui de l'utilisateur original. Cela peut avoir quelque chose à voir avec des blocs d'environnement ou quelque chose comme ça, même si cela semble improbable. Peut-être pourriez-vous poster votre code CreateProcessAsUser. –