Мой начальник (1с-ник), кроме как в 1с, больше не в чем не сечет. Поставил мне задачу, которую я уже неделю не могу решить. Ему нужно следующее: Есть Win-сетка с сервером (WinXP rus SP2, IIS 5.1, PHP-win32-4.3.0). Сетка к Итернету не подключена даже физически, так что вопросы безопасности не интересуют в принципе. На сервере есть страничка (http://1c-server/index.php), написанная мною на HTML+CSS+JavaScript+PHP. На этой странице нужно сделать кнопку (ссылку) "Запустить перепроводку", после нажатия оной юзером, она должна запускать программу на этом сервере с правами Administrator. Под ним и сидит 1с-ник. Я пробовал так "<? exec(calc.exe); ?>" - запускался калькулятор, но с правами IIS. Потом я эксперементировал с троянами, серверная часть которых висела в процессах с правами Administrator, а клиент запускался IIS'ом с его же правами. Например, "<? exec('Путь_к_трояну -сервер LOCALHOST -команда CALC.EXE'); ?>". Так вот, калькулятор то запускался, в процессах был с правами админа. НО! Окошка не было видно! Если, например, запускать WinAmp, то музыку слышно, но окошко никак не увидеть. Пробовал разными троянами и Radmin 2.1. - окна все равно не видно. P.S. Нужно сделать именно ссылку, а не ярлык какой-нибудь. Если не сделаю, возможно, меня уволят.
попробуй следующее psexec calc.exe -i -u Administrator -p %parol% psexec можно взять с http://www.sysinternals.com/Utilities/PsExec.html только небезопастно, но поскольку "вопросы безопасности не интересуют в принципе." то самое простое решение
Я так пробовал уже, окошко то все равно не появляется.
2 DigitalGhost.
Неполучилось. Итак. Я вбил в командной строке "psexec calc.exe -i -u Administrator -p %parol%". И все ок! Все запустилось, окошко есть! Далее скопировал строчку на страницу "<? exec('psexec calc.exe -i -u Administrator -p %parol%'); ?>". Страница грузилась и так и не загрузилась. Я глянул список процессов. Calc.exe там небыло. Почитав help к PSExec я понял, что нужно ставить ключ -d. Поставил, а браузер стал запусткать calc.exe с нужными правами. Но окошка то не показывал! Хотя из команндной строки он окно показывал. Я решил попробовать передать скрипт сразу на PHP.EXE без посредничества браузера. И окно было. Я вообще ничего понять не могу. И какая из софтин виновата тогда? С чего начать поиск даже не знаю.
2 Michael
Согласен, что кто надо тот все равно пролезет. Но никому не надо. Т.к. у нас в сетке нет ничего ценного. А шелл? А кому он нужен, если он к Инету не подключен? Не вижу причин думать о безопасности, но если кто считает, что я не прав. То пишите в топик чего мне стоит боятся. Может тогда думать начну.
2 ALL
Вопрос все еще не решен!
Но всем спасибо за дельные советы, особенно Michael'у.
Я бы сказал что на <? exec('psexec calc.exe -i -u Administrator -p %parol%'); ?> не хватает прав. И что это за язык такой? PHP? Почему не ASP? В PHP по мойму что то нужно еще доп. включить чтобы exec работал. Правда в ASP тоже.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
Я в PHP и web программировании ваще не разбираюсь.. Дак вот родилась такая идея: А этот PHP случайно не локально пытаеться запустить calc.exe? + IIS может пакостить, кто этих программеров знает
а не пойдет просто ссылка (на рабочем столе?) на "psexec \\1c-server calc.exe -i -u Administrator -p %parol%" ? или ещё как нибудь из странички это вызвать, (Java?) чтоб с PHP не заморачиваться
и ещё эти все PHP должны логи гденибудь вести, там может есть ответ..
если ничего не поможет, есть верный кривой способ. - кнопка создаёт файл flag - каждую секунду запускается задание X - оно проверяет есть ли flag и запускает программу Y
А не проще сделать на сервере файл 1.bat и выполнить его через IIS? Только права на выполнения дать. Должно сработать.
Хочешь быть мудрым? Не желай всего, что видишь; не верь всему, что слышишь; не говори всего, что знаешь; не делай всего, что умеешь, а только то, что полезно.
Дополнительно EXEC в PHP включен и все ок. Прошу не предлагать варианты на ASP или PERL. Согласен, что это тоже хорошие языки, но я их вообще не знаю, а времени учить их меня нет совсем. А как выполнить 1.bat через ISS? Я пробовал писать exec батника в PHP - не запускает.
2 DigitalGhost PHP запускает процесс не локально. Ярлык не подойдет т.к. товарищь юзер, может сам удалять все с рабочего стола, и этому не помешать. Т.к. за одним компом могут поочереди сидеть по 10 человек. Насчет JavaScript, сомневаюсь, ведь он то какраз локально работает.
2 v.s.e объясни поподробнее, а то я даже не понял про какой язык ты говоришь.
я говорю про "назначенные задания" в "панеле управления" в них php-win.exe выполняет каждую секунду под админом что-то вроде <? if (...) exec('calc.exe'); ?> а вернее - если существует c:\flag удалить c:\flag и выполнить calc - иначе ничего не делать
скрипт под iis просто должен создать c:\flag
а начальнику скажи что сервера приложений для этого не предназначены
т.к. товарищь юзер, может сам удалять все с рабочего стола
Если у него есть соответствующие права на файл ярлыка, а если владельцем ярлыка сделать администратара а юзеру остваить только право чтения и выполнения то нет
Со страшного бадунища пришел я седня на работу. Стал тупо глядень в монитор в надежде чего-нить там понять и тут меня осенило! (ну т.е. догадался сам, а не насинячился). Сделал htm-ку с двумя фреймами. 1 фрайм - описаение зачем эти ярлыки. 2 фрайм - file://1c-server/pub/, где pub это папка расшаренная с ярлыками на .bat-ники, в которых команды для PsExec. Права дал только на выполнение, запретил даже на чтение. Получилось что-то вроде SUID-бита в Юниксах.
Все довольны, кроме меня, ой моя головка лопнет сейчас
Я бы сказал что на <? exec('psexec calc.exe -i -u Administrator -p %parol%'); ?> не хватает прав. И что это за язык такой? PHP? Почему не ASP? В PHP по мойму что то нужно еще доп. включить чтобы exec работал. Правда в ASP тоже.
Потому что не асп... и потому что у аспа такие же косяки с консольными прилагами. Я в своё время настрадался с этим.
Это даже не косяки я бы сказал..Это особенности запуска процесов
далее екзек работает это было написано сразу просто не создается окно потому что десктоп для этого окна указан несуществующий