Атаки на веб-приложения открывают широкие возможности для злоумышленников: это и хищение критичной информации или чувствительной информации; нарушение бизнес логики для извлечения финансовой выгоды; также, успешная атака веб-приложения может быть предвестником взлома корпоративной сети компании. В этой статье я расскажу об эволюции атак веб-приложений.
OWASP TOP 10
Классические уязвимости в данный момент представлены списком OWASP TOP 10:
- A1 Внедрение кода
- A2 Некорректная аутентификация и управление сессией
- A3 Межсайтовый скриптинг
- A4 Небезопасные прямые ссылки на объекты
- A5 Небезопасная конфигурация
- A6 Утечка чувствительных данных
- A7 Отсутствие контроля доступа к функциональному уровню
- A8 Подделка межсайтовых запросов
- A9 Использование компонентов с известными уязвимостями
- A10 Невалидированные редиректы
Атаки на веб-приложения применимы к данному списку, но далеко не все распространены повсеместно и встречаются каждый день.
Хорошим примером выявления той или иной уязвимости можно считать the unofficial HackerOne disclosure timeline:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
. Как мы видим — преобладают SQL-инъекции, client-side атаки и т.д.Типы атак
Существует два типа атак: нецелевые и таргетированные. Нецелевые "бьют по площадям", и реализуют один-два вектора атак, не всегда реализую цель атаки. Как правило отличаются примитивностью. Мы наблюдаем такие атаки каждый день, представленные в виде эксплуатации той или иной уязвимости, попытки получения доступ к критичным файлам и т.д.
Таргетированные атаки отличает множество векторов, высокий профессионализм атакующих и результативность. Такие составляют примерно 5% от общего числа атак, но по эффективности они гораздо выше нецелевых.
Нецелевые атаки, как правило, автоматизированы и выполняются с помощью различных систем эксплуатации: от сканеров уязвимостей, до самописных скриптов и утилит. Отличаются, как правило, несколькими признаками (User-Agent, вектор применения, диапазон IP). Например попытка выявления /uploadify/uploadify.php — уязвимости в модуле MODX.
Статистика нецелевых атак выглядит следующим образом:
Наиболее популярные атаки:
- Попытки выявления SQL Injection: — 85%.
- Попытки выявления доступа к критичным папкам и файлам: — 7%.
- Попытки применения известных (нашумевших) эксплоитов — 5%.
- Попытки внедрения выявления Cross-Site Scripting — 3%.
Эволюция атак
Эволюцию атак на веб-приложения можно рассматривать с нескольких ракурсов:
- усложнение веб-приложений — как следствие больше возможностей ошибки;
- усложнение архитектуры — как следствие больше возможностей ошибки;
- популяризация «кулхакерства» — как следствие больше материала в открытом доступе, больше атак;
- кажущаяся безнаказанность.
Появление новых векторов обусловлено использованием новых технологий либо выявлением уязвимостей в старых. Также, часть уязвимостей может оказаться "за бортом" и долгие годы не использоваться, как например XML External Entities:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
,
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
, массовая эксплуатация началась с 2011-2012 года практически повсеместно,
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
. XXE уязвимости находили (в рамках BugBounty программ) на ресурсах Яндекс, Вконтакте, Uber и многих других.Другим немаловажным фактором развития векторов атаки служат внедренные защитные средства. Мы установили уязвимое веб-приложение, указав тип уязвимости и защитили веб-приложение сервисом защиты:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
.
Код:
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-техник (о которых я писал в этой статье:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
.Это трансформируется в следующие запросы:
Код:
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
Таким образом можно отметить, что в данный момент эксплуатируются практически все известные уязвимости, с поправкой на внедрение механизмов защиты при разработке приложений, так и на применяемые защитные средства. Также, это обусловлено большим количеством инструментов для проведения атак на веб-приложения.
Меры защиты
В качестве проверки своих навыков по обходу
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
мы предлагаем всем желающим возможность проверить свои силы на
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
(и даже получить вознаграждение, за успешную эксплуатацию вектора атаки).