Атаки на веб-приложения открывают широкие возможности для злоумышленников: это и хищение критичной информации или чувствительной информации; нарушение бизнес логики для извлечения финансовой выгоды; также, успешная атака веб-приложения может быть предвестником взлома корпоративной сети компании. В этой статье я расскажу об эволюции атак веб-приложений.
OWASP TOP 10
Классические уязвимости в данный момент представлены списком OWASP TOP 10:
- A1 Внедрение кода
- A2 Некорректная аутентификация и управление сессией
- A3 Межсайтовый скриптинг
- A4 Небезопасные прямые ссылки на объекты
- A5 Небезопасная конфигурация
- A6 Утечка чувствительных данных
- A7 Отсутствие контроля доступа к функциональному уровню
- A8 Подделка межсайтовых запросов
- A9 Использование компонентов с известными уязвимостями
- A10 Невалидированные редиректы
Атаки на веб-приложения применимы к данному списку, но далеко не все распространены повсеместно и встречаются каждый день.
Хорошим примером выявления той или иной уязивмости можно считатать the unofficial HackerOne disclosure timeline: http://h1.nobbd.de/index.php. Как мы видим — приобладают SQL-инъекции, client-side атаки и т.д.
Типы атак
Существует два типа атак: нецелевые и таргетированные. Нецелевые "бьют по площадям", и реализуют один-два вектора атак, не всегда реализую цель атаки. Как правило отличаются примитивностью. Мы наблюдаем такие атаки каждый день, представленные в виде эксплуатации той или иной уязвимости, попытки получения доступ к критичным файлам и т.д.
Таргетированные атаки отличает множество векторов, высокий профессионализм атакующих и результативность. Такие составляют примерно 5% от общего числа атак, но по эффективности они гораздо выше нецелевых.
Нецелевые атаки, как правило, автоматизированы и выполняются с помощью различных систем эксплуатации: от сканеров уязвимостей, до самописных скриптов и утилит. Отличаются, как правило, несколькими признаками (User-Agent, вектор применения, диапазон IP). Например попытка выявления /uploadify/uploadify.php — уязвимости в модуле MODX.
Статистика нецелевых атак выглядит следующим образом:
Наиболее популярные атаки:
- Попытки выявления SQL Injection: — 85%.
- Попытки выявления доступа к критичным папкам и файлам: — 7%.
- Попытки применения известных (нашумевших) эксплоитов — 5%.
- Попытки внедрения выявления Cross-Site Scripting — 3%.
Это касалось автоматизированных систем. Если сайт атакует злоумышленник, знающий веб-приложение и его уязвимые компоненты — атака становится более точечной и эффективной.
Эволюция атак
Эволюцию атак на веб-приложения можно рассматривать с нескольких ракурсов:
- усложнение веб-приложений — как следствие больше возможностей ошибки;
- усложнение архитектуры — как следствие больше возможностей ошибки;
- популяризация «кулхакерства» — как следствие больше материала в открытом доступе, больше атак;
- кажущаяся безнаказанность.
Этические рамки я оставлю вне этой статьи и хочу поговорить о технической стороне.
Появление новых векторов обусловлено использованием новых технологий либо выявлением уязвимостей в старых. Также, часть уязвимостей может оказаться "за бортом" и долгие годы не использоваться, как например XML External Entities: первые упоминания датируются 2002 годом, конкретизированные вектора 2009, массовая эксплуатация началась с 2011-2012 года практически повсеместно, например phpmyadmin. XXE уязвимости находили (в рамках BugBounty программ) на ресурсах Яндекс, Вконтакте, Uber и многих других.
Другим немаловажным фактором развития векторов атаки служат внедренные защитные средства. Мы установили уязвимое веб-приложение, указав тип уязвимости и защитили веб-приложение сервисом защиты: http://vulns.pentestit.ru.
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish/base.css.php?kc_ad=31&ver=2.0"
Уязвимый параметр kc_ad. Атакующие в первую очередь пытаются выявить наличие инъекции с помощью символа кавычки, классика жанра:
Уязвимость на сайте присутствует, но проэксплутатироватть сходу ее не удастся, поэтому атакующие применяют техники тамперинга данных для попытки обхода защитных средств:
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish-2.2/base.css.php?kc_ad=16+group%0aby%0a1%0aUNIO%6e%0aSELEC%74%0achar%0a(107,99,95,97,100,95,99,115,115),(selec%74%0acolumn_name%0afro%6d%0a`%69nformation%5fschem%61`.columns%0awher%65%0atable_name=0x746c5f746f6b656e%0alimit%0a0,1)
Такие методы обхода тоже не позволяют проэкспулатировать уязвимость, поэтому атакующие начинают использовать все более изощренные способы evasion-техник (о которых я писал в этой статье: методы обхода защитных средств веб-приложений при эксплуатации SQL-инъекций.
Это трансформируется в следующие запросы:
http://vulns.pentestit.ru/wp-content/plugins/kittycatfish-2.2/kittycatfish.js.php
Parameter kc_ad=%27%2F%2A%2A%2FanD%2F%2A%2A%2F3083%2F%2A%2A%2FbEtWEEN%2F%2A%2A%2F3083%2F%2A%2A%2FanD%2F%2A%2A%2F3083--%2F%2A%2A%2FiGqe&ver=2.0
Таким образом можно отметить, что в данный момент эксплуатируются практически все известные уязвимости, с поправкой на внедрение механизмов защиты при разработке приложений, так и на применяемые защитные средства. Также, это обусловлено большим количеством инструментов для проведения атак на веб-приложения.
Меры защиты
В качестве проверки своих навыков по обходу защитных средств веб-приложения мы предлагаем всем желающим возможность проверить свои силы на тестовом стенде (и даже получить вознаграждение, за успешную эксплуатацию вектора атаки).
Автор: LukaSafonov