找回密码
 加入
搜索
查看: 2573|回复: 7

pusofalse 进来看下 还是权限问题

[复制链接]
发表于 2009-9-29 11:10:33 | 显示全部楼层 |阅读模式
_RaiseToSystem()

Func _RaiseToSystem()
Local $sApp, $sArg, $hToken, $pUserThread, $pUserLogged
$pUserLogged = _LookupAccountName(_LsaGetUserName(False))
$hToken = _OpenProcessToken(-1)
$pUserThread = _LookupAccountName(_GetTokenUser($hToken))
_LsaCloseHandle($hToken)

If _EqualSid($pUserLogged, $pUserThread) Then
If @Compiled Then
$sApp = @ScriptFullPath
$sArg = " " & $CmdLineRaw
Else
$sApp = @AutoItExe
$sArg = " " & FileGetShortName(@ScriptFullPath) & " " & $CmdLineRaw
EndIf
$ID=_CreateProcessAsSystem($sApp, $sArg, "Winlogon.exe")
Exit(_HeapFree($pUserLogged) or _HeapFree($pUserThread))
EndIf
Return _HeapFree($pUserLogged) or _HeapFree($pUserThread)
EndFunc ;==>_RaiseToSystem

这段代码好像在User用户下运行没有效果啊。要Administrators权限才可以运行。
发表于 2009-9-29 11:12:18 | 显示全部楼层
当然是这样,创建系统级进程必须要管理员权限。
 楼主| 发表于 2009-9-29 11:27:55 | 显示全部楼层
User用户在不知道密码的情况下能否以Administrator权限运行程序。
发表于 2009-9-29 13:01:18 | 显示全部楼层
理论上可以,但需要一个为users开启访问权限的管理员进程。
如果直接以USERS身份登录系统,那么系统中有管理员进程的几率很小,这种情况下,“User用户在不知道密码的情况下能否以Administrator权限运行程序”就难上加难了。
我所说的实现方法是:以管理员身份登录系统并运行a.exe(这个a.exe是你事先创建好的,运行之后将是管理员权限),a.exe调用RunAs或其他函数创建一个users进程b.exe(也是你事先创建好的,运行之后将是users权限),a.exe创建b.exe之前,需要先调整自身的权限(进程自身的权限,还有自身访问令牌的权限)以方便b.exe打开其(a.exe)令牌句柄。b.exe被创建之后,用_OpenProcessToken函数打开a.exe的令牌句柄,将此句柄传递到_ImpersonateLoggedOnUser函数假充自身的权限级别(因为a.exe运行在管理员用户下,那么a.exe就有管理员权限,它的访问令牌也具有管理员权限)使系统认为b.exe是管理员权限。假充为管理员权限之后,创建管理员进程就很容易了,调用_CreateProcessAsUser函数就可以了。整理一下思路:
1: 以管理员身份登录系统并运行a.exe
2: a.exe调整自身权限并创建b.exe。
3: b.exe打开a.exe令牌句柄。
4: 调用_ImpersonateLoggedOnUser假充为管理员权限。
5: 调用_CreateProcessAsUser创建管理员进程。
6: 关闭a.exe的令牌句柄、并调用_RevertToSelf恢复自身为USERS权限。

1、2步是a.exe要做的事情,3、4、5、6步是b.exe要做的事情。
发表于 2009-9-29 13:42:33 | 显示全部楼层
我对用户权限管理不是很了解,不过我想请教一下pusofalse,这个UDF有没有可能让我以管理员身份telnet到另一台pc上,然后运行那台pc上的au3程序,并且可以对gui界面进行操作

现在的情况是:在那台pc本地直接运行au3是可以的,远程telnet运行au3就无法出现gui界面也无法对原有的gui进行操作,我知道这个应该是telnet的限制,但没有思路如何解决
发表于 2009-9-29 14:08:33 | 显示全部楼层
Re 5#:
我觉得你的问题根本在于运行au3如何显示出GUI界面,就好像使用at命令添加计划任务时不指定/Interactive参数,该如何在前台运行一样。很遗憾,LocalSecurityAuthority.au3不提供这样的功能,倒是能列举出何人在telnet本机。
 楼主| 发表于 2009-9-30 07:36:02 | 显示全部楼层
4# pusofalse
不是很明白,简单的来说。
是不是说在纯User登录权限下,如果没有Administrator权限的进程运行的话,基本上是取不到Administrator权限的。没有Administratr权限的话,也不可能取到System权限了。
发表于 2009-9-30 08:24:51 | 显示全部楼层
本帖最后由 pusofalse 于 2009-9-30 08:26 编辑

Re 7#:
还是你会表达,我大概就是这个意思。
另外如果系统中就算有administrator进程,但如果它的令牌不为users开启权限,那一切还是白搭~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-20 19:42 , Processed in 0.084070 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表