[Software-testing] Тестирование безопасности (Арсений Батыров, Виталий Котов)
Тестирование безопасности — одна из наиболее интересных тем во всей профессии тестировщика. Здесь пересекаются знания теории тестирования, поведения приложений, человеческой психологии и распространенных компьютерных ошибок.
Наиболее популярна эта тема для веб-приложений. Почему?
- Веб-приложения ориентированы на массовое использование, поэтому сбои в работе, вызванные действиями злоумышленника, могут оказать негативное воздействие на большое количество ни в чём неповинных пользователей.
- Веб-приложения могут хранить конфиденциальную информацию, утечка этих данных может иметь очень серьёзные последствия.
- Доступ к веб-приложению имеет множество “недоверенных” пользователей, при этом владельцы или разработчики приложения как правило не могут контролировать или ограничивать их действия.
- Обмен информацией между браузером и сервером происходит по открытым каналам с использованием открытых протоколов, поэтому сложно контролировать данные, передаваемые клиентами.
- Разработка веб-приложений не всегда ведётся с должным вниманием к обеспечению защищенности и надёжности, потому что время разработки продукта для рынка — важнее качества.
На тренинге мы рассмотрим как простые способы поиска уязвимостей, не требующие особых знаний, так и более сложные и комплексные задачи, при тестировании которых придется углубиться в схемы работы приложений.
Введение
- что такое уязвимость
- чем уязвимость отличается от бага
- чем опасны уязвимости
- что такое 'вектор атаки' и эксплойт
- смена пароля чужого аккаунта и token
- неавторизованный доступ к контенту
- валидация данных и наборов данных
- что такое брутфорс
- как устроена капча
- словари паролей
- что такое инъекция кода
- чем опасны инъекции
- пример простой HTML-инъекции
- какие бывают способы борьбы с инъекциям
- как устроено веб-приложение
- свойства value, data и т.п.
- чем опасна HTML-инъекция
- пример поиска и использования HTML-инъекции
- где стоит искать JavaScript-инъекцию
- чем опасна JavaScript-инъекция
- пример JavaScript-инъекции
- что такое XSS и отличается ли она от JavaScript-инъекции?
- чем опасны XSS
- что такое self-XSS
- примеры XSS атак
- как устроена авторизация и работа с cookie-файлами
- что такое CSRF
- что такое token запроса
- чем опасен CSRF
- пример CSRF
- что такое SQL-инъекция
- когда стоит искать SQL-инъекцию
- чем опасна SQL-инъекция
- пример инъекции для GET-запроса
- сложный пример SQL-инъекции для POST-запроса - авторизация без пароля
- что такое 'слепая (blind) SQL-инъекция', способы поиска
- комментирование в SQL и изменения вида запроса
- пример SQL-инъекции на вставке данных Insert
- работа с ответом сервера
- пример слепой SQL-инъекции
- что такое захват shell
- чем опасен захват shell
- как происходит захват shell и что такое exec
- раскрытие полного пути (Full path disclosure)
- пример захвата shell
- как файлы передаются на сервер
- как обойти валидацию данных
- чем опасен исполняемый файл на сервере
- пример загрузки файла на сервер
- как устроены сканеры безопасности веб-приложений
- что такое социальная инженерия
- что такое Bug Bounty программы и причем тут тестирование безопасности
Для выполнения заданий вам потребуется:
- Windows 7+ / Mac OS Mohave+ / Ubuntu 18.08+
- Процессор i-серии (i3, i5, i7) или аналогичный от AMD
- Минимум 4 GB RAM
- 10 GB на жёстком диске
- Разрешение экрана минимум 1280 x 800