Тестирование на перебор (OWASP-AT-004)

  1. Краткое содержание
  2. Связанные действия безопасности
  3. Описание проблемы
  4. Тестирование и пример черного ящика
  5. Атаки грубой силой
  6. Тестирование и пример серая коробка
  7. Рекомендации

Руководство по тестированию OWASP v3 Содержание

Эта статья является частью Руководства по тестированию OWASP v3. Полное руководство по тестированию OWASP v3 можно загрузить Вот ,

OWASP в настоящее время работает над Руководством по тестированию OWASP v4: вы можете просмотреть Руководство Вот

Краткое содержание

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

Связанные действия безопасности

Описание уязвимостей грубой силы

Смотрите статью OWASP на Грубая сила Атаки.

Описание проблемы

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

После успешной атаки методом перебора злоумышленник может получить доступ к:

  • Конфиденциальная информация / данные;
    • Частные разделы веб-приложения могут раскрывать конфиденциальные документы, данные профиля пользователя, финансовое состояние, банковские реквизиты, взаимоотношения пользователей и т. Д.
  • Административные панели;
    • Эти разделы используются веб-мастерами для управления (изменения, удаления, добавления) содержимого веб-приложения, управления предоставлением пользователей, назначения различных привилегий пользователям и т. Д.
  • Наличие дальнейших векторов атаки;
    • Частные разделы веб-приложения могут скрывать опасные уязвимости и содержать расширенные функциональные возможности, недоступные для публичных пользователей.

Тестирование и пример черного ящика

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

Если объект не решит применить сложную веб-аутентификацию, два наиболее часто встречающихся метода следующие:

  • HTTP-аутентификация;
    • Базовая аутентификация доступа
    • Дайджест-аутентификация доступа
  • Аутентификация на основе форм HTML;

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


HTTP-аутентификация

Для организации доступны две собственные схемы аутентификации доступа HTTP - Basic и Digest.

  • Базовая аутентификация доступа

Базовая аутентификация доступа предполагает, что клиенты будут идентифицировать себя с помощью имени для входа (например, «owasp») и пароля (например, «пароль»). Когда клиентский браузер первоначально обращается к сайту с использованием этой схемы, веб-сервер ответит ответом 401, содержащим заголовок «WWW-Authenticate», содержащий значение «Basic» и имя защищенной области (например, WWW-Authenticate). : Basic realm = "wwwProtectedSite”). После этого браузер клиента запрашивает у пользователя имя и пароль для этой области. Затем браузер клиента отвечает веб-серверу заголовком «Authorization», содержащим значение «Basic» и сцепление в кодировке base64 имени для входа, двоеточия и пароля (например, Авторизация: Basic b3dhc3A6cGFzc3dvcmQ =). К сожалению, ответ аутентификации может быть легко декодирован, если злоумышленник прослушивает передачу.

Тест запроса и ответа:

1. Клиент отправляет стандартный HTTP-запрос на ресурс:

GET /members/docs/file.pdf HTTP / 1.1 Хост: цель

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

3. Сервер отправляет ответ с HTTP 401 Требуется авторизация:

HTTP / 1.1 401 Требуется авторизация Дата: сб, 04 ноя. 2006 12:52:40 GMT WWW-Authenticate: Basic realm = "User Realm" Длина содержимого: 401 Keep-Alive: timeout = 15, max = 100 Соединение: Keep- Alive Content-Type: text / html; кодировка = изо-8859-1

4. Браузер отображает всплывающее окно для ввода имени пользователя и пароля.

5. Клиент повторно отправляет HTTP-запрос с учетными данными:

GET /members/docs/file.pdf HTTP / 1.1 Хост: целевой Авторизация: Basic b3dhc3A6cGFzc3dvcmQ =

6. Сервер сравнивает информацию о клиенте со своим списком учетных данных.

7. Если учетные данные действительны, сервер отправляет запрошенный контент. Если авторизация не удалась, сервер повторно отправляет код состояния HTTP 401. Если пользователь нажимает кнопку Отмена, браузер, скорее всего, отобразит сообщение об ошибке. Если злоумышленник может перехватить запрос на шаге 5, строка

b3dhc3A6cGFzc3dvcmQ =

может быть просто декодирован base64 следующим образом (декодирован Base64):

OWASP: пароль

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

  • Дайджест-аутентификация доступа

Дайджест-аутентификация доступа расширяет безопасность базовой аутентификации доступа, используя односторонний криптографический алгоритм хеширования (MD5) для шифрования аутентификационных данных и, во-вторых, добавляя одноразовое (уникальное соединение) значение «nonce», установленное веб-сервером. Это значение используется клиентским браузером при расчете ответа хешированного пароля. Хотя пароль скрывается за счет использования криптографического хеширования, а использование значения nonce исключает угрозу повторной атаки, имя для входа представляется в виде открытого текста.

Тест запроса и ответа:

1. Вот пример начального заголовка Response при обработке цели HTTP Digest:

HTTP / 1.1 401 Несанкционированный WWW-Authenticate: Digest realm = "OwaspSample", nonce = "Ny8yLzIwMDIgMzoyNjoyNCBQTQ", opaque = "0000000000000000", \ stale = false, алгоритм = MD5, qop = "auth"

2. Последующие заголовки ответа с действительными учетными данными будут выглядеть так:

GET /example/owasp/test.asmx HTTP / 1.1 Принять: * / * Авторизация: Digest username = "owasp", realm = "OwaspSample", qop = "auth", алгоритма = "MD5", uri = "/ example / OWASP / test.asmx», Nonce = "Ny8yLzIwMDIgMzoyNjoyNCBQTQ", NC = 00000001, cnonce = "c51b5139556f939768f770dab8e5277a", непрозрачным = "0000000000000000", ответ = "2275a9ca7b2dadf252afc79923cd3823"


Аутентификация на основе форм HTML

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

Исходный код взят из формы HTML:

<form method = "POST" action = "login"> <input type = "text" name = "username"> <input type = "password" name = "password"> </ form>

Атаки грубой силой

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

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

Поисковые атаки будут пытаться охватить все возможные комбинации заданного набора символов и заданного диапазона длины пароля. Этот тип атаки очень медленный, потому что пространство возможных кандидатов довольно велико. Например, при известном идентификаторе пользователя общее количество паролей, которые нужно попробовать, длиной до 8 символов, равно 26 ^ (8) в нижней альфа-кодировке (более 200 миллиардов возможных паролей!).

  • Поисковые атаки на основе правил

Чтобы увеличить охват комбинированного пространства, не сильно замедляя процесс, предлагается создать хорошие правила для генерации кандидатов. Например, «Джон Потрошитель» может генерировать изменения пароля из части имени пользователя или изменять с помощью предварительно настроенной маски слова на входе (например, 1-й раунд «ручка» -> 2-й раунд «p3n» -> 3-й раунд »p3np3n «).

Bruteforcing HTTP Basic Authentication

raven @ blackbox / hydra $ ./hydra -L users.txt -P words.txt www.site.com http-head / private / Hydra v5.3 (c) 2006 г. van Hauser / THC - использование разрешено только в юридических целях , Hydra (http://www.thc.org), начиная с 2009-07-04 18:15:17 [DATA] 16 задач, 1 сервер, 1638 попыток входа (l: 2 / p: 819), ~ 102 попытки за задача [ДАННЫЕ] атакующая служба http-head на порту 80 [СОСТОЯНИЕ] 792,00 попыток / мин, 792 попытки в 00: 01h, 846 задач в 00: 02h [80] [www] хост: 10.0.0.1 логин: owasp пароль: пароль [СТАТУС] Атака завершена для www.site.com (ожидание завершения дочерних процессов)

Брутфорс-дайджест-аутентификация

za @ think / $ hydra -l zaki -P test.txt -vV localhost http-get / forbidden-d2 Hydra v6.5 (c) 2011 от van Hauser / THC и David Maciejak - использование разрешено только в юридических целях. Hydra (http://www.thc.org/thc-hydra), начиная с 2011-08-26 14:30:09 [VERBOSE] Определено больше задач, чем пар входа / прохода. Задачи уменьшены до 5. [ДАННЫЕ] 5 задач, 1 сервер, 5 попыток входа в систему (l: 1 / p: 5), ~ 1 попытка на задачу [ДАННЫЕ] атакующая служба http-head на порту 80 [VERBOSE] Разрешение адресов .. . done C: HEAD / ~ za / Forbidden-d2 HTTP / 1.0 Хост: localhost Авторизация: дайджест username = "zaki", realm = "realm", response = "f7cfc5844e0ca7fffdd38be2c89fccc5", nonce = "vg / mg2OrBAA = 544ece2cbb7b764764610510510510764764764764610764764764764764764764764764764764776476477647647647 = "гидра", nc = 00000001, алгоритм = MD5, qop = auth, uri = "/ ~ za / forbidden-d2" User-Agent: Mozilla / 4.0 (Hydra) S: HTTP / 1.1 301 Дата окончательного перемещения: пт, 26 августа 2011 07:30:09 GMT Сервер: Apache / 2.2.16 (Ubuntu) Расположение: http: // localhost / ~ za / Forbidden-d2 / Варьируется: Accept-Encoding Соединение: закрыть Content-Type: text / html; charset = iso-8859-1 A [80] [www] хост: 127.0.0.1 логин: zaki пароль: zaki Hydra (http://www.thc.org/thc-hydra) завершено в 2011-08-26 14: 30:09

Брутфорсинг аутентификации на основе HTML-форм

raven @ blackbox / hydra $ ./hydra -L users.txt -P words.txt www.site.com https-post-form "/index.cgi:login&name=^USER^&password=^PASS^&login=Login:Not Разрешено "& Hydra v5.3 (c) 2006 by van Hauser / THC - использование разрешено только в законных целях. Hydra (http://www.thc.org), начиная с 2009-07-04 19:16:17 [ДАННЫЕ] 16 задач, 1 сервер, 1638 попыток входа (l: 2 / p: 819), ~ 102 попытки за задача [DATA] атакующая служба http-post-form на порт 443 [STATUS] атака завершена для wiki.intranet (ожидает завершения дочерних процессов) [443] host: 10.0.0.1 login: owasp password: password [STATUS] атака завершена для www.site.com (ожидая, пока ребенок закончит) Hydra (http://www.thc.org) закончила работу в 2009-07-04 19:18:34

Тестирование и пример серая коробка

Частичное знание пароля и реквизитов аккаунта

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

Фактически, ограничивая количество символов и определяя длину пароля, общее количество значений пароля значительно уменьшается

Атаки на обмен памяти

Чтобы выполнить атаку с обменом памяти, тестеру требуется, по крайней мере, хэш пароля, ранее полученный тестером путем использования недостатков в приложении (например, SQL-инъекция) или перехвата HTTP-трафика. В настоящее время наиболее распространенные атаки такого типа основаны на Rainbow Tables, специальном типе таблицы поиска, используемой для восстановления открытого текста из зашифрованного текста, созданного односторонним хешем.

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

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


Рекомендации

Белые бумаги

связи

инструменты


]]