Перейти к содержанию

Перечисление интерфейсов администрирования инфраструктуры и приложений

Резюме

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

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

  • предоставление учетных записей пользователей
  • проектирование и оформление сайта
  • манипуляцию данными
  • изменения конфигурации

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

Цели тестирования

  • Идентификация скрытых интерфейсов администрирования и функциональности.

Как тестировать

Черный ящик (Black-Box Testing)

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

  1. Перечисление директорий и файлов. Административный интерфейс может присутствовать, но не быть видимым для тестировщика. Попытка угадать путь к административному интерфейсу может быть такой же простой, как запрос: /admin или /administrator, или в некоторых сценариях может быть обнаружена за считанные секунды с помощью Google dorks.

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

  3. Комментарии и ссылки в исходном коде. Многие сайты используют общий код, который загружается для всех пользователей сайта. Путем анализа всего исходного кода, отправленного клиенту, могут быть обнаружены ссылки на администраторскую функциональность, которые следует исследовать.

  4. Обзор документации сервера и приложения. Если сервер приложения или само приложение развернуто с настройками по умолчанию, может быть возможно получить доступ к административному интерфейсу, используя информацию, описанную в документации по конфигурации или помощи. Если обнаружен административный интерфейс и требуются учетные данные, следует обратиться к спискам паролей по умолчанию.

  5. Общедоступная информация. Многие приложения, такие как WordPress, имеют административные интерфейсы по умолчанию.

  6. Альтернативный порт сервера. Интерфейсы администрирования могут находиться на другом порту хоста, чем основное приложение. Например, интерфейс администрирования Apache Tomcat часто доступен на порту 8080.

  7. Подмена параметров. Может потребоваться параметр GET или POST или переменная cookie, чтобы включить функциональность администратора. Улики к этому включают наличие скрытых полей, таких как:

<input type="hidden" name="admin" value="no">

или

Cookie: session_cookie; useradmin=0

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

Серый ящик (Gray-Box Testing)

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

Каждый веб-фреймворк может иметь свои собственные стандартные страницы или пути для администрирования. Например:

WebSphere:

  • /admin
  • /admin-authz.xml
  • /admin.conf
  • /admin.passwd
  • /admin/*
  • /admin/logon.jsp
  • /admin/secure/logon.jsp

PHP:

  • /phpinfo
  • /phpmyadmin/
  • /phpMyAdmin/
  • /mysqladmin/
  • /MySQLadmin
  • /MySQLAdmin
  • /login.php
  • /logon.php
  • /xmlrpc.php
  • /dbadmin

FrontPage:

  • /admin.dll
  • /admin.exe
  • /administrators.pwd
  • /author.dll
  • /author.exe
  • /author.log
  • /authors.pwd
  • /cgi-bin

WebLogic:

  • /AdminCaptureRootCA
  • /AdminClients
  • /AdminConnections
  • /AdminEvents
  • /AdminJDBC
  • /AdminLicense
  • /AdminMain
  • /AdminProps
  • /AdminRealm
  • /AdminThreads

WordPress:

  • wp-admin/
  • wp-admin/about.php
  • wp-admin/admin-ajax.php
  • wp-admin/admin-db.php
  • wp-admin/admin-footer.php
  • wp-admin/admin-functions.php
  • wp-admin/admin-header.php

Инструменты

  • OWASP ZAP — Forced Browse — это поддерживаемая версия предыдущего проекта OWASP DirBuster.
  • THC-HYDRA — инструмент, который позволяет выполнять брутфорс многих интерфейсов, включая аутентификацию на основе форм.
  • Брутфорсер значительно эффективнее, если использует хорошую словарную базу, например, словарь от Netsparker.

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