Перечисление интерфейсов администрирования инфраструктуры и приложений
Резюме
Интерфейсы администрирования могут присутствовать в приложении или на сервере приложений, чтобы позволить определенным пользователям выполнять привилегированные действия на сайте. Необходимо проводить тесты, чтобы выяснить, могут ли несанкционированные или стандартные пользователи получить доступ к этой привилегированной функциональности.
Приложение может требовать интерфейс администрирования для того, чтобы привилегированный пользователь мог получить доступ к функционалу, который может изменить работу сайта. Такие изменения могут включать:
- предоставление учетных записей пользователей
- проектирование и оформление сайта
- манипуляцию данными
- изменения конфигурации
Во многих случаях такие интерфейсы не имеют достаточных средств защиты от несанкционированного доступа. Тестирование направлено на выявление этих интерфейсов администрирования и доступ к функциональности, предназначенной для привилегированных пользователей.
Цели тестирования
- Идентификация скрытых интерфейсов администрирования и функциональности.
Как тестировать
Черный ящик (Black-Box Testing)
Следующий раздел описывает векторы, которые могут быть использованы для тестирования наличия административных интерфейсов. Эти методы также могут использоваться для тестирования связанных проблем, включая эскалацию привилегий, и описаны в других частях этого руководства (например, Тестирование на обход схемы авторизации и Тестирование на небезопасные прямые ссылки на объекты).
-
Перечисление директорий и файлов. Административный интерфейс может присутствовать, но не быть видимым для тестировщика. Попытка угадать путь к административному интерфейсу может быть такой же простой, как запрос:
/admin
или/administrator
, или в некоторых сценариях может быть обнаружена за считанные секунды с помощью Google dorks. -
Инструменты для брутфорса содержимого сервера. Существует множество инструментов для выполнения брутфорс-атак на содержимое сервера, см. раздел о инструментах ниже для получения дополнительной информации. Тестировщику также может потребоваться идентифицировать имя страницы администрирования. Принудительный переход к обнаруженной странице может предоставить доступ к интерфейсу.
-
Комментарии и ссылки в исходном коде. Многие сайты используют общий код, который загружается для всех пользователей сайта. Путем анализа всего исходного кода, отправленного клиенту, могут быть обнаружены ссылки на администраторскую функциональность, которые следует исследовать.
-
Обзор документации сервера и приложения. Если сервер приложения или само приложение развернуто с настройками по умолчанию, может быть возможно получить доступ к административному интерфейсу, используя информацию, описанную в документации по конфигурации или помощи. Если обнаружен административный интерфейс и требуются учетные данные, следует обратиться к спискам паролей по умолчанию.
-
Общедоступная информация. Многие приложения, такие как WordPress, имеют административные интерфейсы по умолчанию.
-
Альтернативный порт сервера. Интерфейсы администрирования могут находиться на другом порту хоста, чем основное приложение. Например, интерфейс администрирования Apache Tomcat часто доступен на порту 8080.
-
Подмена параметров. Может потребоваться параметр 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.
Использование данных методов и инструментов позволяет лучше защитить веб-приложения, а также идентифицировать уязвимости, которые могут возникнуть из-за неправильных настроек администраторских интерфейсов.