Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.015 c
3-89105
Данила
2003-10-08 12:59
2003.10.27
Результаты в DBgrid.


3-89120
User_OKA
2003-10-08 10:03
2003.10.27
Lookup


1-89252
Gawk
2003-10-14 16:43
2003.10.27
Как инсталировать сторонний компонент


1-89349
jack128
2003-10-16 11:07
2003.10.27
Описание CM_ - сообщений


8-89399
Bill
2003-06-24 17:13
2003.10.27
Изменение вида окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский