security - Win32 : bypassing UAC using user/password

标签 security winapi authentication uac

我正在寻找一种在不出现 UAC 弹出窗口的情况下提升线程或进程执行权限的方法。 运行该进程的用户是管理员用户,我可以使用他的用户名和密码。

我需要这样做以执行一些管理工作,例如重新启动服务并将文件写入系统目录。我的应用程序是远程运行的,没有交互式用户来确认 UAC 对话框。禁用 UAC 不是一种选择。

我尝试过同时使用 LogonUser()ImpersonateLoggedOnUser()CreateProcessAsUser()DuplicateTokenEx() 更好的部分或两天,但无法找出正确的组合,如果有可能的话。


我试过的具体是这样的:

HANDLE token = 0;
LogonUserA(user, NULL, pass, LOGON32_LOGON_NETWORK_CLEARTEXT, LOGON32_PROVIDER_DEFAULT, &token);
HANDLE impToken = 0;
DuplicateToken(token, SecurityImpersonation, &impToken);
ImpersonateLoggedOnUser(impToken);
CreateFileA("C:\\windows\\blabla.dll", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

最后一次调用失败,GetLastError()=1346,“没有提供所需的模拟级别,或者提供的模拟级别无效。”

我做错了什么?
注意 - 这是在 Win2008 R2 上运行的

最佳答案

尝试登录这个或那个用户将无济于事。问题不在于用户,而在于您要求管理员权限的上下文。即使是管理员也必须确认 UAC 提示。

如果您提出的问题是可能的,那将完全击败 UAC 概念。只要 session 是交互式的(并且在 Win7 上,该程序不是来自 Windows 候选列表,例如服务小程序),您就无法绕过提示。

正如其他人所说,通常的解决方案是编写一个服务并让您的交互式应用程序使用标准 IPC 机制(例如命名管道)与该服务对话。但请注意在两端创建 IPC 对象时所需的安全描述符:用户上下文在服务和交互式应用程序中是不同的。

关于security - Win32 : bypassing UAC using user/password,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9298083/

相关文章:

Android Facebook 登录唯一 key

c# - 限制从网站外部访问操作

c# - 是否可以编写一个 Windows 应用程序,在另一个 Windows 应用程序中选择文本时收到通知?

authentication - 在 Drupal 中注册后重定向

.net - 传输层安全 (TLS) 示例?

php - fopen 在公共(public)软件中使用安全吗?

c - WM_CREATE 中的 ShowWindow

c++ - RECT 和 POINT 数组之间的 reinterpret_cast 安全吗?

javascript - 类型错误 : Cannot call a class as a function - ES6 - Angular1. x - Webpack

python - 如何使用 Authlib 和 Gspread 刷新身份验证 token ?