Php шел что такое

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

A PHP/HTML5 «shell» that enables you to run commands, with partial interactive support.

EJTH/php-shell

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

readme.md

Screenshot of phpshell

PHPShell is foremost a pet project I make in late evenings. It is also a wannabe shell for your browser based on PHP, it is compact and comes in a single file (So you could use it for PoC pentesting etc. but seriously, there is better stuff out there)

While PHP-shell technically isnt an interactive shell it does have somewhat interactive support

PHP-shell has a very simple addon system. Take a look at the example addons in the addons/ folder. You basicly just register PHP callables (eg. functions) with the function registerCommand() and voila they are listed in the help command and are usable through the shell interface.

Well thats unfortunate, maybe take a look at the phpshell-config.php . If interactive doesnt work try changing mode with xsetmode shell_exec . If everything else fails, then please do feel free to create an issue regarding your problem.

About

A PHP/HTML5 «shell» that enables you to run commands, with partial interactive support.

Источник

Study & Dev О программировании и не только

Полезняшки. PHPShell — скрипт php, позволяющий выполнять на веб-сервере shell-команды

Недавно на необъятных просторах Интернета я натолкнулся на упоминание о “PHP Shell”. Пару лет назад мне эта утилита очень помогла и я сейчас хочу отдать своеобразный долг ее разработчику Martin Geisler (http://mgeisler.net/).

Каково назначение “PHP Shell”? Я полагаю, что каждый “продвинутый” веб-программист, не говоря тем более о сисадминах, сталкивался и использовал SSH. SSH позволяет нам получить удаленный доступ к серверу и выполнять на нем shell-команды (ну там всякие команды типа ходить по каталогам туда-сюда, вверх-вниз, перемещать, удалять и копировать файлы, запускать сценарии и всякие хитроумные утилитки), как будто бы провод к вашему монитору от системного блока удлинился до невероятных размеров и дошел, аж, до сервера хостера. Надо сказать, что возможно через ssh туннелировать и X-графику, изображение рабочего стола, показывая запущенные оконные приложения, но это явно не для веб-серверов.

Одним словом, в тех случаях, когда средства ftp, или панель управления сайтом (от вашего хостера) не справляются и вам нужна непредусмотренная функция, то вам на выручку придет SSH. В идеальном случае на вашем хостинге есть поддержка ssh и после заключения договора вам пришлют учетные данные для доступа. Затем вы скачиваете putty (самый лучший в мире ssh-клиент доступен по адресу http://www.chiark.greenend.org.uk/~sgtatham/putty/) и, вооружившись учебником по linux-командам, начинаете вредить и разрушать сервер экспериментировать. Самое простое применение – это работа с архивами. Вместо того, чтобы загружать множество мелких файлов с сервера к себе или обратно (как же это долго и утомительно), вы можете создать архив, загрузить его на сервер (скажи спасибо, поддержке ftp-докачки) и распаковать его там используя команду tar (http://linuxportal.vrn.ru/index.php?title=Основные_команды_Linux). Верен и обратный подход. Неплохой способ сэкономить немножко трафика и времени при переносе сайта с хостинга “A” на хостинг “B” это выполнить архивирование собственно документов сайта, а затем с помощью wget или ftp соединиться с удаленной машиной и начать переливать данные без промежуточного выкачивания информации на свою локальную машину. По правде говоря, благодаря FXP – классной технологии позволяющей двум ftp-серверам разговаривать напрямую — (http://ru.wikipedia.org/wiki/FXP) такая хитрость может и не пригодится – но все же. Были случаи, когда мне приходилось создавать dump или восстанавливать из dump-а огромные по размеру базы данных (несколько сотен мегабайт). Естественно, что в этом случае использовать старый добрый phpmyadmin (также являющийся частью джентльменского набора хостера) не возможно. По правде говоря, есть замечательная утилита Sypex Dumper Lite (http://sypex.net/products/dumper/), которая умеет работать с БД гораздо быстрее и стабильнее, и почти всегда она мне помогала. А когда не помогала Sypex Dumper Lite последней инстанцией был прямой доступ к функция shell на удаленной машине. Тогда я запускал mysql клиент или mysqldump и оно работало. Если сфера применения ssh для развертывания и обслуживания веб-приложений вас заинтересовала то можете почитать еще немножко тут http://www.host.ru/support/articles/unix-shell.html

Одним словом, если у вас на хостинге нет SSH, то “что не ладно в датском королевстве”. Минус в том, зачастую SSH по умолчанию на вашем “свежем” сайте отключен, и требуется некоторое время поругаться со службой поддержки, чтобы ssh заработал. Именно так и случилось в тот далекий зимний вечер. Мне нужно было срочно перенести сайт с одной машины на другую, в ходе чего возникли проблемы, и я привычно потянулся к ярлыку putty на рабочем столе, дабы посмотреть что там “внутри” у пациента. Упс. а поддержка ssh не активирована. Как быть? Если вы достаточно искушены в программировании на каком-то там языке, то не составит сложности написать небольшой скрипт реализующий нужную задачу. Я же открыв google и, пробежавшись по паре ссылок, нашел упоминание о PHP Shell. Одним словом, домой я ушел вовремя.

По правде говоря, мне очень повезло, что хватило тех урезанных возможностей работы с shell, которые предоставила мне PHP Shell — все же это его имитация.

В основе своей PHP Shell использует функцию php — proc_open. Эта функция запускает некоторую команду и открывает потоки ввода-вывода для того чтобы ввести некоторую информацию в приложение (имитируя ручной ввод как бы на клавиатуре) и вывести результаты работы (если вы знаете что такое pipes то речь как раз про них). По сути, функция proc_open является улучшенной и дополненной версией функций exec или system. Те, правда только запускали программу, и не давали возможность взаимодействовать с ней, вы должны были сразу в параметрах командной строки указать все необходимые для работы команды данные. proc_open позволяет создать pipes связанные с вашим php-скиптом, и соответсвенно вы можете имитировать ввод данных в программу и читать результаты ее работы.

Для любителей бесплатных хостингов сразу скажу:

НЕТ, С ПОМОЩЬЮ PHP Shell ВЫ НЕ СМОЖЕТЕ ПОЛУЧИТЬ ДОСТУП К SSH

Дело в том, для бесплатных или очень дешевых хостингов привычно запускать php в режиме safe_mode. В нем отключен ряд функций, в том числе и proc_open.

НЕТ, С ПОМОЩЬЮ PHPSHELL ВЫ НЕ СМОЖЕТЕ РАБОТАТЬ С ИНТЕРАКТИВНЫМИ ПРОГРАММАМИ

Сама суть веб говорит нам, что не возможно запустить на удаленном сервере некоторую программку, которая бы продолжала работу и позволяла бы нам вводить и выводить данные в течении нескольких отдельных http-запросов.

НЕТ, ВЫ НЕ МОЖЕТЕ ПОЛУЧИТЬ ДОСТУП КО ВСЕМ ПРОГРАММАМ, ФАЙЛАМ И ПАПКАМ НА СЕРВЕРЕ

Скрипт работает либо от имени apache и тогда его возможности ограничены лишь тем, что в правах делать учетная запись apache. Либо как вариант если на хостинге используется suexec (http://en.wikipedia.org/wiki/SuEXEC), то ваши права будут совпадать с правами учетной записи от которой идет запуск php-скрипта.

Предположим, что это вас не остановило, и вы загрузили и распаковали архив на своем сервере в папку, скажем, phpshell. Если ввести в адресную строку браузера “как-то-называется-ваш-сайт/phpshell/phpshell.php” то вас попросят представиться, ввести имя и пароль – разумеется это не те учетные данные которые вы получили от вашего хостера (см. рис. 1).

Так что вам нужно настроить права доступа: кто может получить доступ к shell через эту утилиту. Для этого в файле config.php найдите секцию users и добавьте в нее имя пользователя и пароль в следующем виде:

Если вас смущает то что пароль задан в открытом виде то воспользовавшись файлом pwhash.php вы можете узнать свертку md5 пароля и в файле config.php будет храниться именно он (см. рис. 2).

Теперь делаем повторную попытку входа и попадаем в окно, где в нижней части окна вводим команду, жмем “запуск” а затем результат ее выполнения отображается в центре окна страницы (см. рис. 3).

На этом все, может и вам phpshell как-нибудь поможет.

Источник

Читайте также:  How Much $$$ Are You Losing
Оцените статью