Веб-оболочка

Веб-оболочка (англ. web shell) — это средство, предоставляющее интерфейс, аналогичный командной оболочке, для удалённого доступа к веб-серверу, часто используемое в контексте кибератак[1]. Ключевым признаком веб-оболочки является взаимодействие через веб-браузер[2][3].

Веб-оболочка может быть реализована на любом языке программирования, поддерживаемом сервером. Наиболее часто используются PHP, поскольку он широко распространён в разработке веб-приложений. Также встречаются реализации на Active Server Pages, ASP.NET, Python, Perl, Ruby и скриптах UNIX-оболочки[1][2][3]

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

Веб-оболочку можно использовать для выполнения команд shell, повышения привилегий на веб-сервере, загрузки, удаления, скачивания и выполнения файлов на сервере и с сервера[2].

Типовые применения

Веб-оболочки применяются в атаках прежде всего из-за их многофункциональности и сложности обнаружения[4]. К числу наиболее распространённых злоупотреблений относят:

  • Кража данных[4]
  • Инфицирование посетителей сайта (атаки watering hole)[5]
  • Дефейсинг сайта путём вредоносной модификации файлов
  • Проведение атак отказа в обслуживании (DDoS)[2]
  • Передача команд внутри внутренних сетей, не доступных из Интернета[4]
  • Использование в качестве инфраструктуры управления и контроля, например, в составе ботнетов или для компрометации новых внешних сетей[4]

Веб-оболочки позволяют хакерам похищать информацию, искажать данные и устанавливать вредоносное ПО, наносящее серьёзный ущерб системе. Проблема усугубляется, если взломанные серверы используются для проникновения во внутреннюю сеть и заражения других машин. Веб-оболочки активно применяются для атак на различные отрасли, включая государственный, финансовый сектор и оборону, зачастую в целях кибершпионажа. Одним из самых известных примеров является «China Chopper»[6].

Установка веб-оболочек

Веб-оболочки устанавливаются посредством эксплуатации уязвимостей веб-приложений или ошибочной настройки безопасности сервера, в том числе[2][4]:

Злоумышленник также может подделать HTTP-заголовок Content-Type при загрузке файла, чтобы обойти неадекватную валидацию, основанную на MIME-типе от клиента, что позволяет загрузить собственную веб-оболочку.

Пример

Ниже приведён простой пример веб-оболочки на PHP, выполняющей и возвращающей результат произвольной shell-команды:

<?=`$_GET[x]`?>

Пусть файл сохранён как example.php, пример вызова для вывода содержимого файла /etc/passwd:

https://example.com/example.php?x=cat%20%2Fetc%2Fpasswd

Указанный запрос извлечёт значение параметра x из URL-строки запроса, передавая следующую shell-команду:

cat /etc/passwd

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

Предотвращение и снижение риска

Обычно веб-оболочки устанавливаются через уязвимости веб-сервера или его программного обеспечения. Поэтому важно своевременно устранять известные уязвимости для предотвращения компрометации сервера.

Ниже приведён перечень мер безопасности для предотвращения установки веб-оболочек[2][3]:

  • Регулярно обновлять приложения и операционную систему сервера-хоста для защиты от известных ошибок
  • Разграничивать интернет-сервера и внутренние сети с помощью демилитаризованной зоны (DMZ)
  • Безопасно настраивать веб-сервер[2]
  • Отключать или блокировать неиспользуемые сети и сервисы[4]
  • Проверять входящие данные пользователей для снижения рисков RFI и LFI[4]
  • Использовать reverse proxy для ограничения доступа к административным URL только легитимным и известным пользователям[4]
  • Регулярно проводить сканирование на уязвимости и использовать современные средства защиты веб-среды (при этом не исключая угрозу атак нулевого дня[4])
  • Устанавливать файервол[4]
  • Отключать просмотр каталогов
  • Не использовать стандартные/предустановленные пароли[4]

Обнаружение

Веб-оболочки легко модифицируются, что затрудняет их обнаружение; антивирусные средства зачастую не способны их выявить[2][9].

Вот некоторые характерные признаки присутствия веб-оболочки на веб-сервере[2][3]:

  • Необычно высокая нагрузка на веб-сервер (из-за большого количества загрузок и скачиваний злоумышленником)[2][9]
  • Файлы с подозрительными временны́ми метками (например, новее других легитимных файлов на сервере)[9]
  • Неизвестные файлы на диске веб-сервера
  • Файлы с подозрительными конструкциями, например, вызовы cmd.exe или функции eval
  • Необычные соединения в логах веб-сервера
  • Файлы, генерирующие аномальный сетевой трафик (например, изображения PNG, принимающие POST-параметры)[2][10][11][12]
  • Подозрительные подключения между серверами в DMZ и внутренними подсетями[4]

Веб-оболочки часто содержат собственный модуль входа, маскируемый под страницу ошибки[2][10][13][14].

Через веб-оболочки злоумышленники могут изменять файл .htaccess (при использовании Apache HTTP Server), перенаправляя посетителей с поисковых систем на страницы с вредоносным ПО или спам. Часто веб-оболочки анализируют user agent, чтобы показывать разный контент для поисковых роботов и обычным пользователям. Для обнаружения таких оболочек иногда требуется изменить user agent на поисковый, после чего вредоносный файл можно легко удалить[2].

Анализ логов веб-сервера помогает локализовать веб-оболочку: легитимные пользователи и посетители имеют разнообразные user agent и referer, тогда как у веб-оболочки обычно наблюдается ограниченное количество вариантов этих строк[2].

Примечания

Категории