<style> .reveal { font-size: 36px; } </style> # Web App Pentest ## 2 - Web application overview ## Information gathering --- Вопросы по заданиям? --- ## Темы занятия * Обзор устройства веб-приложений * Сбор информации * Дирбастинг и краулинг --- ## Обзор устройства веб-приложений --- ## Веб-приложение - Приложение, которое обрабатывает HTTP запросы. При их обработке оно может обрабатывать как информацию, полученную из HTTP, так и информацию полученную со сторонних ресурсов, в том числе хранимую в БД --- ## Веб-приложение В коде веб-приложений можно легко получить информацию из запроса. Пример PHP. --- ## Веб-приложение В современном мире очень редко используют такой подход - программирование "с нуля", обычно используют фреймворки. Фреймворк облегчает разработку приложения, так как существенная часть кода уже написана. --- ## MVC Популярный подход - Model-View-Controller <img style="float: right;" src="https://i.imgur.com/79eRmbf.png"> Model - отвечает за представление данных View - отвечает за отображение данных Controller - обрабатывает HTTP-ответы, реализует бизнес логику, формирует модель и передает её View. --- ## Фреймворки Существует множество фреймворков, поддерживающих MVC, для разных языков: * Java - Spring * PHP - Laravel, Symfony * Ruby - Ruby on rails * Python - flask, django * и т.д. *некоторые из этих не только MVC. Пример (https://github.com/CarolinB/flask-shop-app) --- ## Routing Route (routing) определяет как приложение должно обрабатывать запросы в зависимости от path. Есть два подхода: * основанный на файлах (как PHP) * не основанный на файлах, роуты контролируются фреймворком Примеры: * spring (https://spring.io/guides/gs/routing-and-filtering/) * django (https://docs.djangoproject.com/en/3.0/topics/http/urls/) --- ## SPA (приложения-одностраничники) Single Page Applications - приложения, работа с которыми проходит на 1 странице в браузере. Клиентский интерфейс отрисовывается с помощью javascript, информация динамически запрашивается с серверной части с помощью AJAX. Как правило используют клиентские фреймворки: * Angular * React * Vue.js Пример: https://facebook.com --- ## Веб-сервер Веб-сервер отвечает за предварительную обработку поступающих запросов. Он управляет сетевыми соединениями, может реализовывать кеширование, балансировку и передачу запросов другим серверам (проксирование). Также он передает запросы программному коду на различных языках программирования. Примеры: * Apache * Nginx * IIS --- ## Сбор информации о приложении --- ## Что вообще можно собирать * Используемые технологии (ЯП, фреймворк и т.д.) * Входные точки (пути, имена api методов и т.д.) --- ## Сбор информации об используемых технологиях Большинство фреймворков использует характерные особенности: * имена файлов * имена элементов HTML * имена Cookie * и т.д. Это позволяет их идентифицировать. --- ## Сбор информации об используемых технологиях **Wappalyzer** - плагин для браузера, который позволяет это делать. --- ## Сбор входных точек Нужен для расширения поверхности атаки. Основные способы: * пассивный сбор * краулинг * дирбастинг --- ## Пассивный сбор * Пускаем трафик через Burp. * Далее пользуемся как можно большим количеством функций веб-приложения. * Результат в Target -> Sitemap. --- ## Crawling Crawler, он же spider. Автоматический скрипт, который анализирует страницу веб-приложения. Если видит ссылку - переходит по ней. Работает рекурсивно, то есть новую страницу анализирует также. Есть встроенный в Burp. Также есть множество реализаций, например: https://github.com/gocolly/colly --- ## Дирбастинг (брут файлов/директорий) Посылка большого количества запросов с разными путями. Просмотр и сравнение ответов. Наиважнейший шаг в анализе веб-приложений! Позволяет найти то что не найти другими методами, в том числе критичные вещи, такие как: * бэкапы * исходный код * учетные записи * логи --- ## Дирбастинг (брут файлов/директорий) Существует множество программ для этого, рекомендуется dirsearch https://github.com/maurosoria/dirsearch Linux: `sudo apt-get install dirsearch` <пример dirsearch> --- ## Словари Словари: * Встроенный словарь dirsearch * https://wordlists.assetnote.io/ * raft-* из SecLists (https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) * https://github.com/Bo0oM/fuzz.txt * https://github.com/sorokinpf/cth_wordlists --- ## Дирбастинг с помощью Burp Intruder (демо) --- ## Виртуальные хосты Веб-сервер может по разному отвечать при разных значениях заголовка Host. Мы можем провести попытку подбора имеющихся в веб-приложении виртуальных хостов и расширить поверхность атаки. Делается с помощью Burp Intruder. Словари: https://github.com/sharsi1/sublazerwlst https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS --- ## Работа с .git/.svn Инструменты для дампа репозитория: * https://github.com/kost/dvcs-ripper * https://github.com/internetwache/GitTools Команды git для анализа: `git log` - показывает историю коммитов `git checkout <commit_hash>` - позволяет откатиться к определенному коммиту --- ## Задания - на CTFd (http://web-fund.hackeru.pro) - тест для самопроверки в LMS ---
{"metaMigratedAt":"2023-06-16T09:48:41.062Z","metaMigratedFrom":"YAML","title":"Web App Pentest - 2 - Web application overview Information gathering","breaks":true,"slideOptions":"{\"transition\":\"fade\",\"parallaxBackgroundImage\":\"https://i.imgur.com/YClZ1aY.jpg\"}","contributors":"[{\"id\":\"0c054233-c19a-4022-8ae1-7189582f00e1\",\"add\":5466,\"del\":18}]"}
    309 views