changing security privileges on execution time
From: Jordi Gou (jgou_at_ntr.es)
Date: 05/21/04
- Next message: Kurt Krueckeberg: "Re: how do I convert a gnu make file"
- Previous message: Ririko Horvath: "Re: Question on certificate."
- Messages sorted by: [ date ] [ thread ]
Date: Fri, 21 May 2004 18:53:38 +0200
Hello,
I'm developing an installer to install a service in a computer.
I have to write on "local machine" in registry and extract some files on
file
system and do other things that know are not important.
This service must let to be installed by administrator or restricted users
after they write the administrator password of the computer. Setup goes well
wirth administrator users, but I have some problems with restricted users.
I get an administrator user with LogonUser and then with
ImpersonateLoggedOnUser
the process privileges are administrator privileges. So, I think that I
could write
on "local machine" and extract files on restricted folders (like "program
files").
Is it true?
I get write on "local machine" but I can't write on "program files" folder.
The
code of the change of privileges is shown bellow.
Could anybody know how access to restricted folder changing the privileges
to admin privileges?
Thanks at all
Jordi
...
if (!RevertToSelf())
{
if (bDebugMode) Log(TEXT("ActionsUserAuth: Revert To Self"));
return false;
}
// Get the current process token handle...
if( !OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES |
TOKEN_QUERY, &hToken ))
return false;
SetPrivilege(hToken, SE_CREATE_TOKEN_NAME, true);
SetPrivilege(hToken, SE_ASSIGNPRIMARYTOKEN_NAME, true);
SetPrivilege(hToken, SE_LOCK_MEMORY_NAME, true);
SetPrivilege(hToken, SE_INCREASE_QUOTA_NAME, true);
SetPrivilege(hToken, SE_UNSOLICITED_INPUT_NAME, true);
SetPrivilege(hToken, SE_MACHINE_ACCOUNT_NAME, true);
SetPrivilege(hToken, SE_TCB_NAME, true);
SetPrivilege(hToken, SE_SECURITY_NAME, true);
SetPrivilege(hToken, SE_TAKE_OWNERSHIP_NAME, true);
SetPrivilege(hToken, SE_LOAD_DRIVER_NAME, true);
SetPrivilege(hToken, SE_SYSTEM_PROFILE_NAME, true);
SetPrivilege(hToken, SE_SYSTEMTIME_NAME, true);
SetPrivilege(hToken, SE_PROF_SINGLE_PROCESS_NAME, true);
SetPrivilege(hToken, SE_INC_BASE_PRIORITY_NAME, true);
SetPrivilege(hToken, SE_CREATE_PAGEFILE_NAME, true);
SetPrivilege(hToken, SE_CREATE_PERMANENT_NAME, true);
SetPrivilege(hToken, SE_BACKUP_NAME, true);
SetPrivilege(hToken, SE_RESTORE_NAME, true);
SetPrivilege(hToken, SE_SHUTDOWN_NAME, true);
SetPrivilege(hToken, SE_DEBUG_NAME, true);
SetPrivilege(hToken, SE_AUDIT_NAME, true);
SetPrivilege(hToken, SE_SYSTEM_ENVIRONMENT_NAME, true);
SetPrivilege(hToken, SE_CHANGE_NOTIFY_NAME, true);
SetPrivilege(hToken, SE_REMOTE_SHUTDOWN_NAME, true);
SetPrivilege(hToken, SE_UNDOCK_NAME, true);
SetPrivilege(hToken, SE_SYNC_AGENT_NAME, true);
SetPrivilege(hToken, SE_ENABLE_DELEGATION_NAME, true);
SetPrivilege(hToken, SE_MANAGE_VOLUME_NAME, true);
SetPrivilege(hToken, TEXT("SeInteractiveLogonRight"), true);
if (LogonUser(szUsername, szDomain, szPassword, LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, &hAdminUser))
bUserAuth = true;
else
bUserAuth = false;
SetPrivilege(hAdminUser, SE_CREATE_TOKEN_NAME, true);
SetPrivilege(hAdminUser, SE_ASSIGNPRIMARYTOKEN_NAME, true);
SetPrivilege(hAdminUser, SE_LOCK_MEMORY_NAME, true);
SetPrivilege(hAdminUser, SE_INCREASE_QUOTA_NAME, true);
SetPrivilege(hAdminUser, SE_UNSOLICITED_INPUT_NAME, true);
SetPrivilege(hAdminUser, SE_MACHINE_ACCOUNT_NAME, true);
SetPrivilege(hAdminUser, SE_TCB_NAME, true);
SetPrivilege(hAdminUser, SE_SECURITY_NAME, true);
SetPrivilege(hAdminUser, SE_TAKE_OWNERSHIP_NAME, true);
SetPrivilege(hAdminUser, SE_LOAD_DRIVER_NAME, true);
SetPrivilege(hAdminUser, SE_SYSTEM_PROFILE_NAME, true);
SetPrivilege(hAdminUser, SE_SYSTEMTIME_NAME, true);
SetPrivilege(hAdminUser, SE_PROF_SINGLE_PROCESS_NAME, true);
SetPrivilege(hAdminUser, SE_INC_BASE_PRIORITY_NAME, true);
SetPrivilege(hAdminUser, SE_CREATE_PAGEFILE_NAME, true);
SetPrivilege(hAdminUser, SE_CREATE_PERMANENT_NAME, true);
SetPrivilege(hAdminUser, SE_BACKUP_NAME, true);
SetPrivilege(hAdminUser, SE_RESTORE_NAME, true);
SetPrivilege(hAdminUser, SE_SHUTDOWN_NAME, true);
SetPrivilege(hAdminUser, SE_DEBUG_NAME, true);
SetPrivilege(hAdminUser, SE_AUDIT_NAME, true);
SetPrivilege(hAdminUser, SE_SYSTEM_ENVIRONMENT_NAME, true);
SetPrivilege(hAdminUser, SE_CHANGE_NOTIFY_NAME, true);
SetPrivilege(hAdminUser, SE_REMOTE_SHUTDOWN_NAME, true);
SetPrivilege(hAdminUser, SE_UNDOCK_NAME, true);
SetPrivilege(hAdminUser, SE_SYNC_AGENT_NAME, true);
SetPrivilege(hAdminUser, SE_ENABLE_DELEGATION_NAME, true);
SetPrivilege(hAdminUser, SE_MANAGE_VOLUME_NAME, true);
SetPrivilege(hAdminUser, TEXT("SeInteractiveLogonRight"), true);
if (!ImpersonateLoggedOnUser(hAdminUser))
MessageBox(NULL, TEXT("Inpersonate Error"), TEXT(""), MB_OK);
CloseHandle(hAdminUser);
...
- Next message: Kurt Krueckeberg: "Re: how do I convert a gnu make file"
- Previous message: Ririko Horvath: "Re: Question on certificate."
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|