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

WEB-Shell на PHP. Что это такое и способы его спрятать

Начнем с определения что такое «веб-шелл» (WEB-Shell)? Что нам говорит интернет по этому поводу: Это некий вредоносный скрипт (программа), который злоумышленники используют для управления чужими сайтами и серверами: выполнения команд терминала, перебора паролей, доступа к файловой системе и т.п. Для размещения скрипта чаще всего используются уязвимости в коде сайта или подбор паролей.

Хотя тут требуется уточнение. Вредоносным он становится в случае если он загружен не вами на ваш сервер, а злоумышленником. Если он загружен вами, то обычно это очень даже полезный инструмент.

PHP WEB-Shell обычно построен на PHP команде exec();

и по большому счету

уже является шеллом.
Но, как правило, от шелла хочется немного больше комфорта. Ведь неудобно каждый раз менять PHP код, чтобы выполнить команду.

Пример более удобного шелла можно найти в разделе файлы.
Но вот все хорошо, шелл размещен на сервере, но возникает вопрос как его скрыть от посторонних глаз.
Первое что приходит в голову, это сменить название на то, которое не вызовет подозрений (скажем functions.php).

Далее а стоит поменять время создания/изменения файла. В этом нам поможет команда touch с параметром -t

-t время
Использовать вместо текущего указанное время. Время задается десятичным числов вида:
[[CC]YY]MMDDhhmm[.SS]
где каждая пара цифр представляет следующее:

MM Месяц года 3.
DD День месяца 22.
hh Час дня 19.
mm Минута часа 14.
CC Первые две цифры года.
YY Последние две цифры года.
SS Секунда минуты 58.
Пример:
touch -t 200911030000 test.txt
В данном случае время изменится на 2009-11-03 00:00

Так же можно Shell встроить в уже существующий PHP файл, но это лучше делать с компактным шеллом.
Например с таким:

Данный шелл проверяет, вызван ли скрипт с GET параметром pwd, который задан в переменной $pa (вызов скрипта должен выглядеть как: http://путь_и_имя_скрипта.php?pwd=qwe)

Перед его добавлением в существующий PHP файл следует удалить из него комментарии и максимально его сжать.
После удаления комментариев, лишних пробелов и переносов строк получится:

Но в любом случае лучше подстраивать стиль под стиль кода в существующем файле.
Хотя можно пойти и другим путем. Предварительно обфусцировать код, чтобы он стал не читаемым.
Пример легкой обфускации:

Это тот же простой шелл, просто с запутанным кодом.
Пример сильной обфускации:

Это все тот же простой шелл, но с шифрованием в base64. он так же будет исполняться.

Можно встроить загрузчик шелла в существующий скрипт. Этот путь хорошо в качестве резервного. Если основной шелл стерли и уязвимость закрыли, то возможно остался загрузчик, через который можно повторно закачать шелл. Хотя это иногда бывает довольно творческой работой, потому что не всегда все папки доступны на запись.

Пример загрузчика(в данном случае используется утилита wget через exec):

данная строка закачает файл shell.txt с сервера example.com и сохранит его под именем shell.php в папке, из которой исполнялся скрипт, если скрипт, в который она внедрена, вызван с параметром ?pwd=dl
Так же можно сделать загрузку с помощью самого PHP:

Читайте также:  Java image resource url

данный код так же закачает файл shell.txt с сервера example.com и сохранит его под именем shell.php в папке, из которой исполнялся скрипт, если скрипт, в который она внедрена, вызван с параметром ?pwd=dl

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

Скрипт закачки шелла на сервер так же желательно сжать, освободить от комментариев и, по желанию, обфусцировать.

Еще шелл можно спрятать в базе данных, но это уже зависит от используемой CMS и ее настроек. Если текст страниц хранится в базе данных, и CMS по каким-либо причинам не фильтрует PHP код при выводе текста из базы на страницу для конечного пользователя, то эти скрипты вполне могут жить в базе данных. Правда данный материал уже выходит за рамки этой статьи.

Вообще методов сокрытия шелла существует огромное множество. И данная работа больше напоминает творческую.

Что касается защиты: старайтесь держать эталонные версии скриптов и список файлов на сервере в резервной копии (естественно находящейся не на том же сервере). Тогда можно будет быстро сравнить все изменения, в случае если у вас есть подозрения.

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре – это быть уверенным в завтрашнем дне.

Источник

PHP Shell

PHP Shell is a shell wrapped in a PHP script. It’s a tool you can use to execute arbitrary shell-commands or browse the filesystem on your remote webserver. This replaces, to a degree, a normal telnet connection, and to a lesser degree a SSH connection.

You use it for administration and maintenance of your website, which is often much easier to do if you can work directly on the server. For example, you could use PHP Shell to unpack and move big files around. All the normal command line programs like ps, free, du, df, etc. can be used.

Getting Help

Please use the SourceForge facilities to obtain help on PHP Shell. You can submit bug reports, join the mailing lists.

Inherent Limitations

There are some limitations on what kind of programs you can run. It won’t do no good if you start a graphical program like Firefox or even a console based one like vi. All programs have to be strictly command line programs, and they will have no chance of getting user input after they have been launched.

They probably also have to terminate within 30 seconds, as this is the default time-limit imposed unto all PHP scripts, to prevent them from running in an infinite loop. Your ISP may have set this time-limit to something else.

But you can rely on all the normal shell-functionality, like pipes, output and input redirection, etc. (There is no -completion, though 🙂

Disabled functions

Some functions may be disabled for security reasons in php.ini (for example functions which execute system commands). If that is the case, PHP Shell will not work (it uses for example proc_open()).
In older versions of PHP Safe Mode was used for that.

Installation

PHP Shell is easy to install — download it, unpack it and configure a username/password. This is done in config.php . Please read the included INSTALL file for detailed information.

Читайте также:  Nan html что это

How to Use PHP Shell

When you point your browser at PHP Shell you will be asked to authenticate yourself. By default no username/password will work, so please go read INSTALL for information about adding a user.

You are back? Good. Enter your username and password and click on «Login».

You will then be presented with a rather simple page containing nothing much except a big window with the cursor blinking at the bottom, signaling that it’s ready to obey your commands.

Write a command and press RETURN — or alternatively, press the «Execute Command» button if you really want. The command will be executed and the result will be shows in the terminal. You can now enter another command.

To be more precise: the terminal is updated with the command line you have just executed, the output of the command to standard out (stdout), and following that any error output sent to stderr.

The commands are executed relative to a current working directory, which is written at the top. You change this by the normal cd command or use the links or select a subdirectory and click on «change to subdirectory».

Download

The latest version of PHP Shell is 2.6 from July 26, 2020. Download it as

You can use 7-zip to extract tar.gz -files on Windows. The tarball contains these files:

  • phpshell.php : This is the script you run when you use PHP Shell.
  • config.php : Configuration file in the INI format.
  • pwhash.php : Password hashing script. This is used to generate secure hashed passwords which you should use to prevent others from getting to know your password by reading the config.php file.
  • ChangeLog : This file describe the changes we have made to PHP Shell. By reading it you ‘ll always know when I’ve added a new feature or made a bugfix, and the nature of the feature/bugfix.
  • README : Approximately this page.
  • AUTHORS : Who contributed to PHP Shell?
  • INSTALL : Tells you how to install PHP Shell. Amoung other things, it explains how to change the password protection so that you can use PHP Shell. Remember that it’s very important to have PHP Shell password protected, or else everybody will be able so snoop into your files and perhaps also be able to delete them! Please take the time to protect your installation of PHP Shell.
  • SECURITY : A separate guide about security with PHP in general and PHP Shell in particular. Be sure to read this too, especially if you are getting strange errors back from PHP Shell.
  • COPYING : Standard GNU GPL.
  • .htaccess : Ensures, that phpshell.php will be used as index page.

PHP Shell is kindly hosted by SourceForge:

Источник

Как найти и распознать php Shell

Печать PDF

Для начала давайте все же разберем что такое php shell. Php shell это срипт написанный на языке php для выполнения удаленных команд. То есть по простому это скрипт с помощью которого злоумышленник имеет возможность производить кучу полезных для себя действий на вашей площадке.

Читайте также:  Анимация тени при наведении css

Как shell попал ко мне на хостинг?

Есть всего несколько способов проникновения shell скрипта:

  1. Залит с помощью уязвисмости в php скрипте
  2. Залит с помощью FTP данных, которые с помощью трояна были успешно украдены из вашего FTP клиента. (WinSCP, Total Comander, FileZilla)
  3. Залит с помощью человека которому вы доверили произвести какие либо поправки на сайте
  4. Вы установили непроверенный скрипт, шаблон, компонент, модуль который содержал какие либо известные уязвимости либо в него уже был встроен вредоносный код.

Вот наверное и все пути проникновения вредоносного скрипта, если конечно вы не сами его залили.

У меня на сайте появился файл который я не создавал! Кто то изменил мой файл?

В случае если файл не измененный, а новый не сбтоит сразу паниковать и удалять этот файл. Во первых посмотрте дату создания этого файла и запомните ее скорее всего дата свежая, но дата может быть и довольно старой на это тоже стоит обратить внимание так как возможно она специально была изменена. Далее откройте этот файл и посмотрите что в нем содержится. Его содержание может быть различным, это может быть как сам shell (обычно его тщательно прячут) так и любой другой вспомогательный или просто файл с какими то ссылками и фреймами.

Если кто то изменил Ваш файл, так же посмотрите дату изменения она нам может быть полезна.

Далее как в первом и втором случае можно удалить файл, и желательно бы выключить сайт на время поиска причины и приступить к немедленному расследованию. Далее нужно изменить пароли как от админки сайта так и от хостинг панели, FTP. После этого желательно начать просмотр FTP и других логов сервера. Возможно конечно там мы ни чего не найдем.

Приступаем к поиску вредоносного shell скрипта или как найти shell!?

Если у вас небольшой сайт и все его файлы вам хорошо знакомы то можете конечно пройти по ним по всем руками (довольно глупый вариант) и просмотреть дату изменения файла. Советую незамедлительно проверить когда были произведены последние изменения файлов с помощью SSH. Дата изменения дает нам многое, мы сразу понимаем что кто то файл редактировал.

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

Что необходимо искать в файлах?

Как правило все shell скрипты закодированы с помощью base64 и после этого выполяются с помощью eval

Значит ищем следующие вхождения:

  1. base64_decode(
  2. eval(
  3. Переменные типа $_REQUEST, $_COOKIE, $HTTP_COOKIE_VARS
  4. Можно поискать shell поназванию например «FilesMan»
  5. Обращаем внимание на хаотичные переменные типа $FuFiVqb

Содержание данных вхождений не говорит о том что это shell, но как правило любой shell содержит их. В основном желательно обратить внимание на 2 первых пункта и искать их. Так же хочу обратить внимание что в base64 часто кодируют копирайт какого либо компонента.

Далее предоставлю небольшие скрины которые помогут вам понять как выглядят php shell скрипты.

Думаю что то из выше описанного поможет вам в вашем непростом деле. Так же хочу сказать что бывали случаи когда обычный антивирус обнаруживал shell.

Источник

Оцените статью