image
 
Hacksplaining представляет каталогизированный и наглядный онлайн-туториал по основным веб-уязвимостям. По каждой уязвимости представлено подробное описание, насколько часто встречается, как сложно ее эксплуатировать и уровень ее критичности. К каждой уязвимости приложено подробное описание, вектор эксплуатации, уязвимый код и рекомендации по устранению и защите. В качестве примера в статье приведен разбор одного из заданий по взлому виртуального онлайн-банкинга с помощью эксплуатации sql-инъекции.

Рассматриваемые уязвимости:




SQL Injection

Внедрение SQL-кода — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.

Cross-site Scripting (XSS)

XSS — «межсайтовый скриптинг» тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействии этого кода с веб-сервером злоумышленника. В контексте сайта рассматриваются три вида таких атак: хранимые, отраженные и DOM-based.

Command Execution

Атака, при которой целью является выполнение произвольных команд в операционной системе хоста через уязвимое веб-приложение.

Clickjacking

Клиент-сайд вектор атаки: пользователь, совершая клик на специально сформированной странице злоумышленника, на самом деле кликает по ссылке на совершенно другом сайте.

Cross-site Request Forgery

«Межсайтовая подделка запроса», — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника).

Directory Traversal

Обход каталога (или обход пути) заключается в использовании недостаточной проверки безопасности предоставленных пользователем имен файлов, так что символы, представляющие переход к родительскому каталогу, передаются через API.

File Upload Vulnerabilities

К загрузкам файлов следует относиться с осторожностью — они представляют собой простой способ для злоумышленника внедрить вредоносный код в ваше приложение.

Broken Access Control

Все ресурсы на вашем сайте должны иметь реализованный контроль доступа, даже если они не предназначены для обычных пользователей. Полагаться на «security through obscurity» нельзя.

Open Redirects

Большинство веб-приложений использует функционал переадресаций. Если ваш сайт перенаправляет все URL-адреса, указанные в строке запроса — это может помочь злоумышленнику сформировать фишинговые вектора атак.

Unencrypted Communication

Недостаточное шифрование может сделать вас уязвимыми для атак типа «Man-in-the-Middle». Обязательно используйте HTTPS при передаче любого типа конфиденциальной информации.

User Enumeration

Если злоумышленник может злоупотреблять функцией проверки подлинности, чтобы проверить, существует ли имя пользователя на вашем сайте, это значительно упростит использование других уязвимостей.

Information Leakage

Выявление служебной информации помогает злоумышленнику узнать о технологиях вашего сайта, путях и т.д. и может дать возможность злоумышленнику

Password Mismanagement

Безопасная обработка паролей имеет важное значение для безопасной системы аутентификации.

Privilege Escalation

Повышение привилегий — злоумышленник использует уязвимость для представления другим пользователем (как правило с более высокими правами) или получения дополнительных разрешений.

Session Fixation

Небезопасная обработка идентификаторов сеансов может привести к захвату сессии пользователя.

Weak Session IDs

Предполагаемые идентификаторы сеанса делают ваш сайт уязвимым для захвата сеанса.

XML Bombs

XML-документы могут включать встроенные макросы. Небезопасная обработка этих макросов может сделать ваш сервер уязвимым для атак из специально сформированных XML-файлов.

XML External Entities

XML-файлы могут включать встроенные ссылки на другие документы. Небезопасная обработка внешних ссылок позволяет злоумышленнику получить доступ к файловой системе.

Разбор кейса уязвимости SQL-инъекция


На первом шаге мы видим форму авторизации онлайн-банкинга и уведомление о наличии вероятной уязвимости:
 

 
Для удобства внизу страницы расположен лог запроса:
 

 
Далее нас просят ввести произвольный легитимный логин и пароль:
 

 
Данные неверны, попробуем обойти системы авторизации:
 

 
Получаем сообщение об ошибке (и более детальную информацию в логе):
 

 
На появившейся вкладке CODE выявляем природу ошибки:
 

 
Мы видим завершение запроса, теперь попробуем использовать эту уязвимость для обхода авторизации онлайн-банкинга:
 

 
Как вы видите мы добавили условие «1=1», значит критерием проверки будет «если логин ‘user’ или 1=1», но ведь 1 всегда равно 1. Если описать более простым языком — мы пытаемся войти в систему под пользователем user, с паролем равным условию 1=1.
 

 
Условие соблюдено — 1=1, а парольное поле отбрасывается!
 

 
Таким способом мы проникли внутрь онлайн-банкинга. Далее нам предоставляется описание методов защиты от инъекций: примеры кода, описание рисков и т.д.

Дополнительно


В качестве дополнения к эксплуатации вектора SQL-инъекция рекомендую ознакомиться: со следующим материалом:


Заключение


Онлайн туториал сделан довольно подробно и добротно и рекомендован к изучению в первую очередь разработчикам в качестве наглядного пособия «как не надо писать код.» Для специалистов по информационной безопасности это неплохая шпаргалка и средство визуализации веб-уязвимостей с хорошим описанием и пошаговой демонстрацией вектора атаки.

www.hacksplaining.com
Поделиться с друзьями
-->

Комментарии (5)


  1. vesper-bot
    25.04.2017 16:13

    Хорошо бы было в таких курсах уровни сделать. Хотя бы в SQL injection. Первый уровень — поймать на апострофе. Второй — поймать на необработанном поле нестрокового типа. Третий (или какой получится) — найти место под blind SQL injection. И так далее.



  1. McARIS74
    02.05.2017 16:49

    Хорошая статья, почитал не отрываясь. Не являюсь специалистом, но захватило именно описание типов уязвимостей. Спасибо.


  1. NeuroZ
    03.05.2017 18:00

    Спасибо)) интересная информация :) Поставил бы лайк, но кармы маловато)))


  1. Desem
    05.05.2017 19:48

    Клиент-сайд вектор атаки — глаз кровоточит, или на английском или на русский манер сделайте пожалуйста