LogonUser 和其他人在 Windows Server 2003 x86 中返回错误 1337

Posted

技术标签:

【中文标题】LogonUser 和其他人在 Windows Server 2003 x86 中返回错误 1337【英文标题】:LogonUser and others return error 1337 in Windows Server 2003 x86 【发布时间】:2010-10-30 00:15:34 【问题描述】:

经过一些更新后,我在所有 Windows Server 2003 成员服务器(仅限 x86)上看到以下问题:LogonUser 和 LogonUserEx 调用失败并出现错误 1337(安全 ID 结构无效)。

基本上,以下代码失败:

HANDLE token;
BOOL b = LogonUserA( "username", "DOMAIN", "password", 
           LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &token );

我也注意到了

运行与本地系统相同的 LogonUser 代码可以正常工作 在未打补丁的 Windows Server 2003 上运行此代码很长一段时间都可以正常工作 最新补丁后,WS2003 x86失败,GetLastError()返回1337 配置“作为操作系统的一部分”权限没有帮助。代码中也没有显式启用 SE_TCB_NAME 权限。 Runas /user:DOMAIN\username 工作正常,无论计算机是否打补丁

有人遇到过同样的问题吗? Microsoft 是否已将其识别为错误?

有解决方法吗?由于 runas 正在工作,我认为有另一种方法可以做 LogonUser 所做的事情。

【问题讨论】:

【参考方案1】:

显然,是我正在开发的产品中的某些东西导致了这种行为,而不是 Windows 错误。

来自WinError.h

//
// MessageId: ERROR_INVALID_SID
//
// MessageText:
//
// The security ID structure is invalid.
//
#define ERROR_INVALID_SID                1337L

【讨论】:

看到错误 1337 总是让我觉得有人想搞笑。 同上 - 有人不够利特:p 我知道人们可能会如何看待这个错误,但这真的是破坏 SID 结构的东西,信不信由你 我很好奇您可能会做什么来呈现损坏的 sid 结构。 LogonUser 甚至没有采用安全标识符! @Ian Boyd 我一直在使用的应用程序(审计软件)使用代码注入 lsass 来监控登录,并且该代码中有一个错误,导致 SID 在某些情况下损坏.

以上是关于LogonUser 和其他人在 Windows Server 2003 x86 中返回错误 1337的主要内容,如果未能解决你的问题,请参考以下文章

如何在启用 UAC 的 Windows 服务中调用 LogonUser() 以获取不受限制的完整令牌?

使用 LOGON32_LOGON_NETWORK 从 Delphi 反复调用 LogonUser 会导致帐户被锁定吗?

LogonUser 返回 ERROR_NO_LOGON_SERVERS

当用户名是 UPN 格式时,即使密码正确,Azure AD 用户的 LogonUser() 也会失败

如何在 Windows 中以编程方式切换用户

无密码的 CreateProcessAsUser 和 LogonUser