3.3. Определение каталогов и файлов веб-приложения

 

Введение

В этом уроке мы определим структуру веб-сайта и найдем точки входа.

Для чего нам это нужно?

Структура веб-сайта даст нам следующую информацию:

  • Фреймворк - по специфичной структуре каталогов, названию файлов и каталогов мы можем определить какой CMS/фреймворк был использован при создании приложения, что даст нам информацию о уже раскрытых уязвимостях и возможных эксплойтах.
  • Скрытые каталоги/файлы - сайты могут содержать скрытые каталоги и файлы, содержимое которых может помочь при взломе сайта либо они могут содержать конфиденциальные данные.
  • Параметры (в том числе и скрытые) - обнаруженные параметры представляют собой точки входа/доступа на сайт, с помощью которых мы можем воздействовать на само приложение и сохраненные в нем данные. Практически все атаки инъекций (Injection Attacks) работают через параметры GET/POST.

Ниже даны некоторые примеры названий, по которым можно определить серверные технологии.

Расширения файлов:

  • asp—Microsoft Active Server Pages
  • aspx—Microsoft ASP.NET
  • jsp—Java Server Pages
  • cfm—Cold Fusion
  • php— PHP
  • d2w—WebSphere
  • pl—Perl
  • py— Python
  • dll— скомпилированный нативный код (C или C++)
  • nsf или ntf—Lotus Domino

Названия директорий/каталогов:

  • servlet—Java servlets
  • pls—Oracle Application Server PL/SQL gateway
  • cfdocs или cfide—Cold Fusion
  • SilverStream—SilverStream web server
  • WebObjects или {function}.woa—Apple WebObjects
  • rails—Ruby on Rails

Какие методы исследования нам доступны?

Для получения вышеописанных данных мы можем воспользоваться следующими методами:

  • Анализ файла txt
  • Анализ комментариев и кода HTML/JavaScript
  • Анализ файла xml
  • Spidering/Crawling – ручное/автоматическое исследование доступных ссылок и переход по ним для построения карты сайта.
  • Busting/Перебор по словарю – скрытые каталоги/файлы и параметры определяются с помощью большого списка общеизвестных названий файлов и каталогов.
  • Фаззинг – в параметрах передается большое количество данных с целью выявить реакцию сервера и определить какие значения параметров принимает сервер.

Теперь обо всем по порядку.

 

Файл robots.txt

Файл robots.txt представляет собой обычный текстовый файл, который содержит директивы для поисковых роботов Google и Яндекс. Директивы простые и их всего 2: индексировать или не индексировать определенные директории/файлы. Сам файл находится в корневом каталоге сайта и доступен по простой ссылке https://example.com/robots.txt, то есть вы можете открыть его в обычном браузере, хотя также можете открыть с помощью таких программ, как Netcat и Curl.

Вот как выглядит файл robots.txt:

Содержимое файла robots.txt

Нас интересуют директивы disallow и их значения, так как в них обычно могут находиться названия каталогов/директорий, которые хотят скрыть от индексирования поисковым роботом. Несмотря на это поисковые роботы могут игнорировать инструкции файла. Сам файл присутствует не на всех сайтах, так как его отсутствие или присутствие никак не влияет на работу сайта.

В качестве примера запустите приложение Juice Shop, а затем в браузере введите ссылку http://127.0.0.1:3000/robots.txt:

Содержимое файла robots.txt в huice Shop

Файл содержит одну запрещающую директиву для каталога ftp. Попробуем перейти в этот каталог:

Содержимое папки ftp в Juice Shop

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

 

Файл sitemap.xml

Файл sitemap.xml также используется для поисковой оптимизации (SEO) и называется картой сайта. Он содержит ссылки сайта и помогает поисковикам быстрее индексировать страницы. Хранится файл в корневом каталоге вместе с файлом robots.txt, то есть он также доступен по ссылке http://example.com/sitemap.xml.

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

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

 

Spidering/Crawling

Spidering или Crawling называется процесс автоматического определения доступных ссылок, страниц и других ресурсов на сайте. Поисковой робот или программа просматривает страницу, и если в ней имеются ссылки, то они вносятся в список обнаруженных ссылок. Затем робот переходит по этим ссылкам, и если в открытой странице он находит другие ссылки, то они также помечаются, как найденные и процесс продолжается до тех пор, пока не будут обнаружены все ссылки. В целом процесс поиска представляет собой дерево, где корнем является главная или домашняя страница сайта, а ответвлениями и дочерними элементами выступают страницы, рисунки, файлы и другие ресурсы.

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

 

OWASP ZAP Proxy

Данная программа представляет собой прокси-перехватчик, который расположен между браузером и сервером сайта. Если сайт поддерживает SSL, то защищенное соединение устанавливается не с браузером, а с прокси-перехватчиком.

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

Для начала установим программу. Для этого выполните команду sudo apt install zaproxy -y.

Затем откройте главное меню программ и перейдите по 03-Web Application Analysis --> zap или просто в поисковой строке введите zap:

Расположение программы ZAP в меню

Сразу после запуска программа предлагает, как вы хотите сохранять сессию и результаты работы. Первый вариант основан временных метках, то есть сессия будет сохранена под названием текущего временной метки. Второй вариант предлагает вам самим выбрать название сессии. Третий вариант используется, когда сессию не нужно сохранять либо она будет сохранена позже вручную. Выбирайте одну из трех указанных опций и жмите на Start:

Опции для сохранения сессии в ZAP

Программа сразу предлагает автоматический и ручной метод исследования. Для начала выберем ручной:

Варианты тестирования сайта с ZAP

Программа имеет встроенные браузеры, Chrome и Firefox. Выбирайте любой из них и кликайте по кнопке Launch Browser:

Ручное сканирование сайта с ZAP

В открывшемся браузере вводим адрес и переходим к приложению WackoPicko. Исследуйте приложение, заполните некоторые формы, а затем перейдите к ZAP. Вам откроется следующая картина:

Результат скарирования WackoPicko с ZAP

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

Теперь запустим функцию автоматического сканирования ссылок. Для этого выбираем корневой каталог WackoPicko, открываем контекстное меню правой кнопкой мыши и выбираем опцию Attack-->Spider.

В открывшемся диалогом окне ничего не меняем и просто нажимаем на Start Scan. После окончания тестирования каталог пополнится новыми ссылками. Каждая ссылка помечена методом GET или POST.

Выберете любую ссылку, а затем в правой панели выберете Request, чтобы отобразить запрос или Response, чтобы отобразить ответ:

Отображение запросов и ответов в ZAP

Что можно сделать с полученными результатами?

Для начала необходимо пройтись по всем ссылкам и понять для чего они используются. Затем отметьте для себя те ссылки, которые используют GET/POST/PUT параметры, так как они в первую очередь подвержены атакам SQL Injection, Command Injection, Cross Site Scripting и другим. Однако это не означает, что ссылки без параметров вовсе не подвержены атакам. Там используются другие типы атак и о них поговорим позже.

Сканирование каталогов также можно провести и другими программами по типу ZAP. Например. Burp Suite Pro, WebScarab и другие.