Современные методы исследования безопасности веб-приложений

    image
     
    В данной статье я расскажу о современных методах и подходах к тестированию безопасности веб-приложений.

    Начало исследования


    Для успешного тестирования веб-приложений необходимо применять систематизированный подход или методологию. Наиболее известные это OWASP и WASC. Они являются наиболее полными и формализованными методологиями на сегодняшний день.

    Далее необходимо определится с веб-приложением — для исследования можно взять последнюю версию одной из бесплатных CMS, и установить в нее уязвимый плагин (уязвимые версии можно скачать с сайта exploit-db.com).

    Методы тестирования


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

    Есть несколько принципов тестирования, которые мы можем применить:

    DAST – динамический (т.е. требующий выполнения) анализ приложения без доступа к исходному коду и серверной части, по сути BlackBox.
    SAST – статический (т.е. не требующий выполнения) анализ приложения с доступом к исходному коду веб-приложения и к веб-серверу, по сути это анализ исходного кода по формальным признакам наличия уязвимостей и аудит безопасности сервера.
    IAST – динамический анализ безопасности веб-приложения, с полным доступом к исходному коду, веб-серверу — по своей сути является WhiteBox тестированием.
    Анализ исходного кода – статический или динамический анализ с доступом к исходному коду без доступа к серверному окружению.

    Эти методы полностью подойдут для тренировки навыков выявления уязвимостей веб-приложения при наличии у вас доступа к веб-приложению, либо частиноч, если вы исследуете веб-приложение, к примеру, при участии в программе BugBounty.

    Основные этапы


    Для полноты тестирования необходимо стараться следовать нижеприведенным рекомендациям кастомизирую те или иные этапы в зависимости от веб-приложения.

    Разведка


    • Сканирование портов.
    • Сканирование поддоменов.
    • Исследование видимого контента.
    • Поиск скрытого контента (директорий, файлов)
    • Определение платформы и веб-окружения.
    • Определение форм ввода.

    Контроль доступа


    • Проверка средств аутентификации и авторизации.
    • Определение требований парольной политики.
    • Тестирование подбора учетных данных.
    • Тестирование восстановления учетной записи.
    • Тестирование функций сохранения сессии.
    • Тестирование функций идентификации учетной записи.
    • Проверка полномочий и прав доступа.
    • Исследования сессии (время жизни, сессионный токены, признаки, попытки одновременной работы и т.д.)
    • Проверка CSRF.

    Фаззинг параметров


    • Тестирование приложения к различному виду инъекций (SQL, SOAP, LDAP, XPATH и т.д.)
    • Тестирование приложения к XSS-уязвимостям.
    • Проверка HTTP заголовков.
    • Проверка редиректов и переадресаций.
    • Проверка выполнения команд ОС.
    • Проверка локального и удаленного инклуда.
    • Проверка к внедрению XML-сущностей.
    • Проверка тимплейт-инъекций.
    • Проверка взаимодествия веб-сокетов.

    Проверки логики работы веб-приложения


    • Тестирование логики работы приложения на стороне клиента.
    • Тестирования на т.н. «состояние гонки» — race condition.
    • Тестирование канала передачи данных.
    • Тестирование доступности информации исходя из прав доступа или его отсутствия.
    • Проверка возможности дублирования или разделения данных.

    Проверка серверного окружения


    • Проверка архитектуры сервера.
    • Поиск и выявление публичных уязвимостей.
    • Проверка серверных учетных записей (службы и сервисы).
    • Определение настроек сервера или компонентов (SSL и т.д.).
    • Проверка прав доступа.

    Итого


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

    В следующей статье я расскажу об инструментарии, подходящем для тестирования веб-приложения по данному чек-листу.
    Метки:
    Pentestit 914,37
    Информационная безопасность
    Поделиться публикацией
    Комментарии 10
    • +3
      Кажется я это уже где-то видел… Наверное, в том же OWASP Testing Guide…
      • 0
        OWASP довольно объемный документ, в статье я собрал основные параметры, которые необходимо проверять.
      • +5
        Занудство:
        Где же «современные методы»? Статья должна называться как-то вроде: «Базовый чеклист для проведения тестирования безопасности web приложения».

        PS: Время публикации специально подгадали?:)
        • 0
          В комментариях к какому-то из постов отвечали, что публикации автоматизированы на данное время в качестве дани уважения «хакерским традициям».
        • +1
          На первый взгляд исчерпывающе.
          • +3
            Напомнило лекцию в универе. Теория дана. Хотелось бы продолжения в виде практического использования данного алгоритма на реальном примере. Спасибо)
            • +2
              Как нарисовать сову.
              Если по делу: для новичка (меня) это слишком кратко. Но и на чеклист не тянет. А для профи -ничего нового, думаю.
              • +1
                >Современные методы
                А вот честно, кто-то реально использует инфо с WASC? Последняя статья по запросу CSP — за 2013 год. Простите.
                • 0
                  Используют даже NIST 800-115 от 2008 года.
                  • 0
                    А вот такой обзор был бы вправду интересен — по каким-то основным стандартам, методологиям, может просто краеугольным источникам информации, типа сайта OWASP'a — именно актуальным, реально практически используемым. Imho.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое