Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: И снова о получении больших прав. Обсудим ? Добавлено: 22.10.05 17:59  

Автор вопроса:  student-uni
Я тут всех уже заколебал этим но решение нашёл.
Хотел узнать мнение опытных.

Так вот.
Как выяснилось, под Вин2000
имея Вс2003 получить права Админа
можно только
1. зная его логин и пароль
2. Используя CreateProcessWithLogonW

запустив процесс с правами п.1

Но если нужно запустить не приложение а отдельную
функцию - то CreateProcessWithLogonW функции не ест.

Все мои попытки запустить функцию с большими
правами через ЛогонЮзер и имперсонализацию
потерпели под вин2000 крах.
/что собственно и было предсказано в МСДНе/

И тут пришла идея о которой я бы хотел
узнать мнение уважаемых формучан.

А что если закатать необходимую функцию в экзешник
и потом вызывать экзешник через CreateProcessWithLogonW ?

Попробовал, вроде идёт.
Политики по крайней мере обходит.

Вопрос к знающим:
- а какие побочные эффекты это может дать?
- чем плох подомный ход ?
- могут ли быть всё же сложности с получением прав ?

Всем спасибо за проявленный интерес к обсуждению.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 22.10.05 20:23
- придётся организовывать межпроцессное взаимодействие. И под закатыванием ты понимаешь генерирование экзешника самому?..
- не знаю, но как-то не нравится он мне
- уточни, что и как ты хочешь делать

Ответить

Номер ответа: 2
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #2 Добавлено: 23.10.05 00:18
генерировать - нет.

просто проект будет состоять не из одного
экзешника а из двух к примеру.

во втором будет всего одна функция,
которой мне так не хватает и на выполнение которой
у простого юзверя в реале не будет прав./только
у админа, права которого получит моя прога/

Второй экзешник будет по необходимости вызываться
первым - основной прогой.

Межпроцессорное взаимодействие - это проблема.

Но, в процессе выполнения мне вообщето
и не надо будет передавать данные.

Только по началу в процесс и по завершению.
из процесса.

По началу в процесс я планирую передать
с командной строкой /будет зашифровано/ .
С этим спасибо помогли.

Вот как вернуть информацию в родительский
экзешник - пока не знаю.

На крайний случай - через файл на диске.

Но думаю есть какой то более чистый
способ. Это же всё таки родительский
и дочерний процесс, а не два независимых
процесса.

Кстати примеров межпроцессорного
взаимодействия с использованием
Шаред Мемори я видел только одну
ддлльку Югослава и то он за Ддлльку
хочет 20 долларов, а код не даёт.

А примеры в основном есть с сокетами,
с пайпами, с файлами, а с шаред мемори
на дот нет нету. интереснопочему,
неужели всё так сложно ?



Ответить

Номер ответа: 3
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #3 Добавлено: 23.10.05 00:22
Я боюсь, пока я всё это тестирую на локале
всё играет, а как поставлю на терминал сервер,
да как начнут туда удалённые юзвери лезть,
то что то пойдёт не так.
МСДН правда гарантирует, что CreateProcessWithLogonW
работает окей /в отличии от его родственников
Логон Юзера и Криейт Процесс/ но всё равно как то
боязно. Вот как.

Ответить

Номер ответа: 4
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #4
Добавлено: 23.10.05 14:21
В STARTUPINFO установи dwFlags STARTF_USESTDHANDLES, укажи hStdIn и hStdOut, а после вводи и выводи консольной дочерней программой в стандартный ввод/вывод, в родительском приложении посылай данные и обрабатывай.

Ответить

Номер ответа: 5
Автор ответа:
 Роман



Вопросов: 1
Ответов: 31
 Web-сайт: www.BubnovRV.narod.ru
 Профиль | | #5
Добавлено: 23.10.05 15:18
В домене не проканает!!!

Ответить

Номер ответа: 6
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #6 Добавлено: 24.10.05 01:08
2 Sharp
А есть по подробнее пример ? Спасибо.

2 Роман
Ты уверен ? В МСДНе об этом ничего не сказано ?

Ответить

Номер ответа: 7
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #7 Добавлено: 29.10.05 17:31
Так вот, первая проблема - дочерняя прога "думает",
что стартует из директории Вин/Сис32, т.о. все ваши связи с БД или ещё с чем - ломаются.
Исправляется это СетКаррентДиректори,
каррент директори можно передать в дочернюю
с коммандной строкой, но тут тоже подвох,
иногда путь имеет пробелы, которые CreateProcessWithLogonW
не понимает /и откидывает всё что после пробела/
Пришлось сделать сабу, которая заменяет пробелы на знак вопроса /или любой другой запрещённый в путях знак/ а в дчерней проделать обратное преобразование. После этого всё заработало.
Вот такое вот извращение я сотворил.

Програ получает все права админа.
Родительская прога-только вызывает её
далее я её нафиг выгружаю. Дочерняя остаётся с правами. Работает под всеми виндами.
И в терминал сейшн. В домене - не пробовал.

1. Буду признателен, если кто либо даст более умное решение.

2. Чисто теоретически в прогу родитель можно
передать любую другую прогу /обозвав её предварительно именем моей дочерней проги/
и наделать гадостей. Вопрос 2 - какие есть предложения чтобы это предотваратить ?
Родительская прога вызывает с помощью
CreateProcessWithLogonW (дочернюю прогру - proga2.exe) Как можно пометить прогу 2 чтобы
прога 1 однозначно могла её идентифицировать,
если какой либо гад подсунет другую прогу
с тем же именем ?

Всем огромное спасибо за участие

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам