Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: CL | DM;

Вниз

Запуск ехе с администраторскими правами под юзером.   Найти похожие ветки 

 
Jakommo   (2003-08-11 14:14) [0]

Уважаемые мастера! Помогите найти решение как написать ехе, который сможет запускать любые другие файлы с администраторскими правами. Можно написать сервис для этого( и как это сделать, если можно...) или, к примеру, запускать его как "run as", ­но тогда я не могу в строке параметров записать пароль, чтобы сразу запустить нужный файл. runas /user:UserAccountName program
Мне это нужно чтобы запускать обновления на пользовательских компах, которым нужны адм. права.
Заранее спасибо!!!


 
Игорь Шевченко ©   (2003-08-11 14:18) [1]

Никак :)


 
Jakommo   (2003-08-11 14:26) [2]

Хе-хе, неужели всё так плохо? :) А с сервисом тоже непроходит?


 
AlexKniga ©   (2003-08-11 17:03) [3]

runas /user:username "C:\path\program.exe" /savecred
Вроде в ХРени приделали етот ключик.


 
AlexKniga ©   (2003-08-11 17:11) [4]

echo password|su Administrator "C:\path\program.exe"
su это из RK


 
AlexKniga ©   (2003-08-11 17:19) [5]

DebPloit
http://www.anticracking.sk/EliCZ/bugs/DebPloit.zip

Описание Exploit.WinNT.DebPloit

Exploit.WinNT.DebPloit использует брешь в системе безопасности и распределения прав WinNT и позволяет любому процессу использовать права любого другого процесса.
Возможности эксплоита позволяют, например, получить права системы или администратора (LocalSystem, Administrator) процессу, запущенному с минимальными привилегиями.
Данный эксплоит работоспособен на Microsoft Windows NT 4.0 и Windows 2000, но только если на них не установлены обновления после 12 марта 2002 года.
Неработоспособен на Windows XP.

источник:
Разработчик ПО - "Лаборатория Касперского"


 
AlexKniga ©   (2003-08-11 17:20) [6]

В общем нельзя, но если очень хочется...


 
Jakommo   (2003-08-11 17:27) [7]

su имеется ввиду в Линухе ?
Проблема в том что у меня 2000. Это прокатывает в нём?
А что этот ключ ( /savecrеd) означает и куда подставлять пароль?
Спасибо!!!


 
AlexKniga ©   (2003-08-11 17:31) [8]

Read This Fucking Manual!


 
Jakommo   (2003-08-11 17:34) [9]

Эксплойт похоже не прокатывает у нас сервис паки ставят регулярно...
А в строку параметров впихнуть пароль это нереально совсем :(
Тогда может имитировать нажатие клавиш на диалоговом окне, когда сделал run as..


 
AlexKniga ©   (2003-08-11 17:53) [10]

Jakommo (11.08.03 17:34) [9]
> Тогда может имитировать нажатие клавиш на диалоговом окне, когда сделал run as..
С RunAs"ом это не прокатит.


 
Burmistroff   (2003-08-11 18:25) [11]

Почему же нельзя??? Зачем сервис?!!

procedure WinExecAsUser(FileName: string; username: string; password:
string; Visibility:
integer);
var { V1 by Pat Ritchey, V2 by P.Below }
zAppName : array[0..512] of char;
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
h : thandle;
begin { WinExecAndWait32V2 }
StrPCopy(zAppName, FileName);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not LogonUser(pchar(username), ".", pchar(Password),
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, h) then
MessageBoxA(0, PChar(SysErrorMessage(GetLastError)), "Error", MB_OK);
CreateProcessAsUser(h, nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_DEFAULT_ERROR_MODE,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo); { pointer to PROCESS_INF }
if GetLastError <> 0 then MessageBoxA(0, PChar(SysErrorMessage(GetLastError)), "Error", MB_OK);
end;


 
Jakommo   (2003-08-11 18:45) [12]

Похоже то что надо!!! Попробую откомпилить...


 
clickmaker ©   (2003-08-11 18:46) [13]

Представляешь, какое раздолье было бы вирусам и хакерам, если б все было так просто. Так что брось ты это дело. А обновления можно делать через логон-сценарии, ежели дело в одном домене происходит


 
Jakommo   (2003-08-11 18:58) [14]

> clickmaker
Если не трудно не пояснишь подробнее? Как ими пользоваться..


 
Jakommo   (2003-08-11 19:16) [15]

Если я правильно понял, то ты имеешь ввиду login scripт, который при логине в систему просто запускает с сетки ехе по указанному в скрипте пути. Но если ехе лезит в недоступную для юзера область, то ничего и не будет. Я могу лишь представить такой вариант с Novell Zen Work, который служит контролёром домена и имеет системныу права.


 
clickmaker ©   (2003-08-11 19:24) [16]

Логон-скрипт выполняется ДО интерактивного входа юзера в систему, т.е. фактически с правами SYSTEM. Этого достаточно, чтобы сделать любое обновление


 
Jakommo   (2003-08-11 19:39) [17]

Я тока что попробовал на Novell сервере, копирование файла в winnt через логон-скрипт не проходит! Все действия начинаются после логона в 2000...


 
AlexKniga ©   (2003-08-11 21:39) [18]

Jakommo (11.08.03 19:39) [17]
А имена в UNC?


 
Jakommo   (2003-08-12 10:31) [19]

> AlexKniga
В скрипте именно UNC и ставится.
> Burmistroff
Пробую разобраться с привелегиями. Компилю ехе он пишет: A required privilege is not held by the client. Как там что подправить чтобы пошло :)


 
Карелин Артем ©   (2003-08-12 11:48) [20]

Вообще-то на моей старой работе через логон-скрипт шел запуск русификаторов для ДОС-программ, обновление шаблонов официальных бумажек и кое-что еще.
P.S. Одно плохо - давно сравнительно было, детали точные не помню.


 
clickmaker ©   (2003-08-12 11:50) [21]

"The process that calls LogonUser must have the SE_TCB_NAME privilege". См. AdjustTokenPrivileges
По умолчанию эту привилегию имеет только аккаунт System. У процесса, запущенного под обычным юзером ее нет. Так что LogonUser не пройдет. Разве что выполнять его из под службы, как это делает Run As


 
Jakommo   (2003-08-12 12:27) [22]

> Карелин Артем
Не с логоном не прёт никак :(
> clickmaker
Если я правильно понял его надо регестрировать как сервис в системе и тогда он запустит ехе с указанными прававми?
Если я его зарегистрирую такая схема будет рабочей?


 
clickmaker ©   (2003-08-12 14:56) [23]

Да, код предложенный Burmistroff, должен сработать. Только там перед вызовом LogonUser надо вызвать AdjustTokenPrivileges для включения SE_TCB_NAME


 
Jakommo   (2003-08-12 15:19) [24]

Ага, спасибо! Буду пробовать...


 
Burmistroff   (2003-08-12 18:17) [25]

У меня все работает и так. Правда нужно чтобы у поле password не было пустым


 
Jakommo   (2003-08-13 09:44) [26]

> Burmistroff
А ты запускаешь его как сервис?
Я пробую на w2k этот код. (Пишет A required privilege is not held by the client. Handle is invalid.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure WinExecAsUser(FileName: string; username: string; password:
string; Visibility:integer);
var { V1 by Pat Ritchey, V2 by P.Below }
zAppName : array[0..512] of char;
StartupInfo : TStartupInfo;
ProcessInfo : TProcessInformation;
h : thandle;
begin { WinExecAndWait32V2 }
StrPCopy(zAppName, FileName);
FillChar(StartupInfo, Sizeof(StartupInfo), #0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not LogonUser(pchar(username), ".", pchar(Password),
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, h) then
MessageBoxA(0, PChar(SysErrorMessage(GetLastError)), "Error", MB_OK);
CreateProcessAsUser(h, nil,
zAppName, { pointer to command line string }
nil, { pointer to process security attributes }
nil, { pointer to thread security attributes }
false, { handle inheritance flag }
CREATE_DEFAULT_ERROR_MODE,
nil, { pointer to new environment block }
nil, { pointer to current directory name }
StartupInfo, { pointer to STARTUPINFO }
ProcessInfo); { pointer to PROCESS_INF }
if GetLastError <> 0 then MessageBoxA(0, PChar(SysErrorMessage(GetLastError)), "Error", MB_OK);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WinExecAsUser("c:\winnt\notepad.exe","sergejz","bocmanis",0);
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.059 c
14-89578
isko
2003-10-07 14:12
2003.10.27
часто бывает


6-89419
Support1
2003-09-01 21:39
2003.10.27
Определение скорости Инета


3-89130
Suharew
2003-10-07 22:58
2003.10.27
SQL


1-89337
Boris69
2003-10-16 09:57
2003.10.27
Как сделать многоуровневую шапку таблицы в StringGride???


1-89201
REP
2003-10-15 11:54
2003.10.27
Файлы без расширения и OpenDialog