<style> .reveal { font-size: 36px; } </style> # Web App Pentest ## 1 - Intro --- ## whoami Алимов Азиз ведущий специалист по тестированию на проникновение в Bi.Zone опыт работы более 5 лет --- ## Сертификаты Offensive Security Certified Professional (OSCP) Offensive Security Certified Expert (OSCE) Offensive Security Web Expert (OSWE) CREST Registered Penetration Tester (CRT) и другие --- ## Темы модуля 1. Введение. 2. Обзор веб-технологий 3. Структура веб-приложений 4. Первоначальный анализ, сбор информации 5. Уязвимости серверной части веб-приложений 6. Тестирование механизмов аутентификации и менеджмента сессий 7. Логические уязвимости 8. Безопасность протокола HTTP 9. Безопасность клиентской части веб-приложений 10. Вопросы на собеседовании --- ## Темы занятия * Обзор тестирования веб-приложений * Что есть полезного для изучающих пентест веба * HTTP * Кодировки в вебе * HTTPS vs HTTP * HTML, Javascript, CSS. --- # Обзор тестирования веб-приложений --- * Пресейл - определение объема работы и уточнение деталей * Договор * Авторизационное письмо - перед началом работы клиент подтверждает что разрешает такой-то компании его пенетрировать, с таких то IP-адресов, в такие то даты и т.д. и т.п. * <span style="color:red">Непосредственный анализ защищенности</span> * <span style="color:red">Формирование рекомендаций и написание отчета</span> --- Тестирование веб-приложений может быть как отдельным проектом, так и входить в более крупный проект (например, в проект по внешнему тестированию на проникновение) --- ## Подходы к анализу Blackbox Graybox Whitebox --- ## Подходы к анализу * Черный ящик - специалисту не известно ничего о системе * Серый ящик - клиент предоставляет ограниченный доступ, например, с правами обычного пользователя * Белый ящик - клиент предоставляет полный доступ к приложению, в том числе к исходным кодам --- ## Полезные материалы --- ## OWASP - Open Web Application Security Project [Testing Guide](https://github.com/OWASP/wstg) [Cheat sheets](https://github.com/OWASP/CheatSheetSeries/tree/master/cheatsheets) [Developer Guide](https://github.com/OWASP/DevGuide) [OWASP Top 10](https://owasp.org/www-pdf-archive/OWASP_Top_10-2017_(en).pdf.pdf) --- ## Portswigger Web Security Academy https://portswigger.net/web-security Тут есть как текстовые материалы, так и лаборатории, в которых можно упражняться --- ## Площадки для тренировок ### CTF (Capture the Flag) https://ctftime.org/ - агрегатор Основные категории: * web * crypto * reverse * binary (он же pwn, он же exploit) * forensics * osint --- ## Площадки для тренировок ### ever CTF * https://www.root-me.org/ * https://w3challs.com/ * etc --- ## Площадки для тренировок ### Vulnerable Applications * bWAPP * Damn Vulnerable Web Application * etc --- ## Площадки для тренировок ### Bug Bounty Поиск уязвимостей за вознаграждение https://www.hackerone.com https://bugcrowd.com --- ## Площадки для тренировок ### Статья 272 УК РФ. Неправомерный доступ к компьютерной информации --- ## Программное обеспечение - Burp Suite - Сервис хранения заметок --- ## Репозитории на github * https://github.com/danielmiessler/SecLists - словари для всех случаев жизни * https://github.com/swisskyrepo/PayloadsAllTheThings - информация по эксплуатации различных уязвимостей * https://github.com/tennc/webshell - коллекция веб-шеллов --- ## Настройка среды * Burp * FoxyProxy * Инструменты разработчика браузера --- # HTTP --- ## HTTP HyperText Transfer Protocol * Протокол 7 уровня ISO OSI. * Работает поверх TCP. * Клиент-серверный протокол * Сейчас используются две версии: HTTP/1.1 и HTTP/2 --- ## HTTP request ![](https://i.imgur.com/qBh9B6q.png) --- ## HTTP response ![](https://i.imgur.com/2zUO1p7.png) --- ## Методы HTTP (HTTP verbs) Метод – операция, выполняемая над ресурсом. Виды методов: * GET – получает содержимое узла (Read) * POST – передаёт пользовательские данные (Write). * PUT – загружает содержимое на сервер, чаще обновляет существующее (Update) * DELETE – удаляет указанный ресурс (Delete) * HEAD – аналогичен GET, но возвращает только заголовки * OPTIONS – определение параметров сервера (почти не используется). * и другие (TRACE, PATCH, CONNECT). --- ## Коды состояния ответов HTTP Код состояния: * 1xx – информационной (102 Processing); * 2xx – успех (200 OK); * 3xx – перенаправление (301 Moved Permanently); * 4xx – ошибка клиента (400 Bad Request); * 5xx – ошибка сервера (500 Internal Server Error). --- ## URL - Uniform Resource Locator **Структура**: schema://host:port/path?parameter=value#anchor **Схема**: http, https, ftp и другие; **Узел**: доменное имя или IP-адрес; **Порт**: порт ресурса (80 – порт по умолчанию для HTTP); **Путь**: путь к ресурсу; **Параметр**: отправляемые на сервер переменные имеют вид – parameter0=value0&parameter1=value1; **Якорь**: идентификатор элемента HTML внутри документа для перемещения браузера на него; --- ## HTTP - текстовый протокол Демонстрация запроса через nc --- ## HTML - HyperText Markup Language Язык разметки гипертекста. Является XML-образным языком. (демонстрация) * `<body>` * `<title>` * `<hX>` * `<a>` * `<form>` * `<input>` --- ## Javascript и CSS Javascript - язык программирования, который позволяет работать с отображаемыми в браузере элементами. Позволяет создавать динамические веб-интерфейсы CSS - Cascading Style Sheets - язык описания внешнего вида документа. Декларирует как браузер должен отображать тот или иной элемент HTML. --- ## Кодировки в вебе HEX - кодирует каждый символ в два символа из набора `0123456789abcedf`. Шестнадцатиричная кодировка `admin/test` -> `61646d696e2f74657374` URL - кодирует некоторые символы в HEX, добавляя перед ними символ % `admin/test` -> `admin%2ftest` Base64 - кодирует 3 байта в 4 символа из набора [a-z A-Z 0-9] а также / и +. В конце может быть несколько символов = для выравнивания. `admin/test` -> `YWRtaW4vdGVzdA==` --- ## Кодировки в вебе Демонстрация кодировок CyberChef: https://gchq.github.io/CyberChef/ Burp Автоматическая URL-кодировка параметров --- ## Кодировки в вебе Практика. Раскодируйте: * 4865782d656e636f64696e67272068657265 * %48%34%43%6b%33%52%59%30%55 * %22hack%65r%22%20%69%73%20%68er%65%3f * SSBMaUszIFAzblQzc3Q= --- ## HTTP vs HTTPS HTTPS - это тот же HTTP, который работает поверх SSL/TLS. Данные передаваемые по HTTPS криптографически защищены от перехвата в канале (просмотра и модификации). Важные данные не должны передаваться по HTTP без шифрования. --- ## Content-Type Content-Type - заголовок HTTP. Определяет тип передаваемого содержимого. В зависимости от него веб-приложение и браузер будут обрабатывать тело HTTP по разному Для указания формата использует MIME типы. --- ## Content-Type Браузер как правило использует в запросах: * text/plain * application/x-www-form-urlencoded * multipart/form-data <демонстрация различия> --- ## Content-Type Веб-приложение использует в ответах: * text/html * text/javascript * text/css * application/json * text/xml * и многие другие. --- ## Практика - https://hackmd.io/O-8R0RNpR8GqS7WAj5DVmA?view - на CTFd http://web-fund.hackeru.pro/ --- ## Тест для самопроверки В LMS ---
{"metaMigratedAt":"2023-06-16T09:38:13.957Z","metaMigratedFrom":"YAML","title":"Web App Pentest - 1 - Intro","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"parallaxBackgroundImage\":\"https://i.imgur.com/YClZ1aY.jpg\"}","contributors":"[{\"id\":\"0c054233-c19a-4022-8ae1-7189582f00e1\",\"add\":7424,\"del\":1}]"}
    370 views