День 27. Content Discovery / Поиск контента
Узнайте о различных способах обнаружения скрытого или приватного контента на веб-сервере, который может привести к новым уязвимостям.
1. Что такое поиск контента?
Во-первых, в контексте безопасности веб-приложений следует задаться вопросом: что такое контент? Контент может представлять собой многое: файл, видео, изображение, резервную копию, функцию веб-сайта. Когда мы говорим об обнаружении контента, мы имеем в виду не очевидные вещи, которые мы можем увидеть на веб-сайте; это то, что не сразу отображается и не всегда предназначалось для публичного доступа.
Это может быть, например, страницы или порталы, предназначенные для использования сотрудниками, старые версии веб-сайта, файлы резервных копий, файлы конфигурации, панели администрирования и т. д.
Существует три основных способа обнаружения контента на веб-сайте, которые мы рассмотрим: вручную, автоматически и с помощью OSINT (разведка на основе открытых источников).
Запустите AttackBox (нажав синюю кнопку «Запустить AttackBox») и выполните эту задачу.
What is the Content Discovery method that begins with M?
Вопрос: Какой метод поиска контента начинается на букву М?
What is the Content Discovery method that begins with A?
Вопрос: Какой метод поиска контента начинается на букву А?
What is the Content Discovery method that begins with O?
2. Ручное обнаружение - Robots.txt
На веб-сайте есть несколько мест, где мы можем вручную проверить наличие нового контента, чтобы начать его поиск.
Файл robots.txt — это документ, который сообщает поисковым системам, какие страницы им разрешено, а какие запрещено показывать в результатах поиска, или же запрещает индексацию сайта определенным поисковым системам. Распространенной практикой является ограничение доступа к определенным разделам сайта, чтобы они не отображались в результатах поиска. К таким разделам могут относиться, например, административные порталы или файлы, предназначенные для пользователей сайта. Этот файл предоставляет нам отличный список мест на сайте, которые владельцы не хотят, чтобы мы, как специалисты по тестированию на проникновение, обнаружили.
Проверьте файл robots.txt на сайте ИТ-поддержки Acme, чтобы узнать, нет ли там чего-либо, что они не хотят отображать. Для этого откройте Firefox на AttackBox и введите URL-адрес : http://10.48.191.36/robots.txt ( Этот URL-адрес обновится через 2 минуты после запуска машины в задаче 1 )
What is the directory in the robots.txt that isn't allowed to be viewed by web crawlers?
Вопрос: Какая директория в файле robots.txt запрещена для просмотра веб-краулерами?
3. Ручное обнаружение - значок сайта
Фавикон — это небольшой значок, отображаемый в адресной строке или вкладке браузера и используемый для брендирования веб-сайта.
Иногда при использовании фреймворков для создания веб-сайта остаётся неиспользованный значок сайта (favicon), и если разработчик сайта не заменяет его на собственный, это может подсказать, какой фреймворк используется. OWASP предоставляет базу данных распространенных значков фреймворков, которую можно использовать для сравнения со значком сайта целевого фреймворка : https://wiki.owasp.org/index.php/OWASP_favicon_database . Зная стек фреймворков, мы можем использовать внешние ресурсы, чтобы узнать о нём больше (см. следующий раздел ) .
В AttackBox откройте Firefox и введите URL-адрес https://static-labs.tryhackme.cloud/sites/favicon/. Здесь вы увидите простой веб-сайт с пометкой «Веб-сайт скоро будет доступен...». Если вы посмотрите на свои вкладки, вы заметите значок, подтверждающий, что на этом сайте используется фавикон.
Просматривая исходный код страницы, вы увидите, что шестая строка содержит ссылку на файл images/favicon.ico.
Если вы выполните следующую команду на AttackBox, она загрузит значок сайта (favicon) и получит его хеш MD5 , который затем можно будет найти в базе данных
https://wiki.owasp.org/index.php/OWASP_favicon_database .
user@machine$ curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico | md5sum
Примечание: Если вы являетесь бесплатным пользователем AttackBox, выполнение этой команды curl завершится неудачей. В этом случае вам следует использовать виртуальную машину. Если ваш хеш заканчивается на 427e, значит, команда curl завершилась неудачей, и вам, возможно, потребуется повторить попытку. Вы также можете запустить эту команду в PowerShell под управлением Windows, как показано ниже.
PS C:\> curl https://static-labs.tryhackme.cloud/sites/favicon/images/favicon.ico -UseBasicParsing -o favicon.ico PS C:\> Get-FileHash .\favicon.ico -Algorithm MD5
ищем тут https://wiki.owasp.org/index.php/OWASP_favicon_database
What framework did the favicon belong to?
Вопрос: К какому фреймворку принадлежал значок сайта (favicon)?
4. Ручное обнаружение - Sitemap.xml
В отличие от файла robots.txt, который ограничивает доступ поисковых роботов к данным, файл sitemap.xml содержит список всех файлов, которые владелец сайта хочет видеть в результатах поиска. Иногда в этот список могут входить разделы сайта, к которым сложнее получить доступ, или даже старые веб-страницы, которые текущий сайт больше не использует, но всё ещё работают в фоновом режиме.
Посмотрите файл sitemap.xml на сайте ИТ-поддержки Acme , чтобы узнать, нет ли там нового контента , который мы еще не обнаружили: http://10.48.191.36/sitemap.xml (Откройте это в браузере Firefox на AttackBox).
What is the path of the secret area that can be found in the sitemap.xml file?
Вопрос: Какой путь к секретной области можно найти в файле sitemap.xml?
5. Ручное обнаружение — HTTP-заголовки
Когда мы отправляем запросы к веб-серверу, сервер возвращает различные HTTP- заголовки. Эти заголовки иногда могут содержать полезную информацию, такую как программное обеспечение веб-сервера и, возможно, используемый язык программирования/скриптов. В приведенном ниже примере мы видим, что веб-сервер — это NGINX версии 1.18.0 и работает под управлением PHP версии 7.4.3. Используя эту информацию, мы могли бы найти уязвимые версии используемого программного обеспечения. Попробуйте выполнить следующую команду curl к веб-серверу, где ключ -v включает подробный режим, который выведет заголовки (возможно, там найдется что-то интересное!).
What is the flag value from the X-FLAG header?
Вопрос: Какое значение флага содержится в заголовке X-FLAG?
Так же этот флаг мы находили в прошлом посте только через консоль разработчика браузера.
6. Ручное обнаружение — стек фреймворков
Определив структуру веб-сайта, будь то на основе приведенного выше примера с иконкой сайта или путем поиска подсказок в исходном коде страницы, таких как комментарии, уведомления об авторских правах или благодарности, вы можете найти веб-сайт, на котором основана эта структура. Оттуда мы можем узнать больше о программном обеспечении и другой информации, что, возможно, приведет к обнаружению дополнительного контента.
Если посмотреть исходный код страницы нашего сайта Acme IT Support ( http://10.48.191.36 ), то в конце каждой страницы вы увидите комментарий с указанием времени загрузки и ссылкой на сайт фреймворка: https://static-labs.tryhackme.cloud/sites/thm-web-framework . Давайте посмотрим на этот сайт. Просмотр страницы документации показывает путь к административному порталу фреймворка, который отображается на сайте Acme IT Support.
Переходим на фреймворк и читаем документацию - там указа страница авторизации и креды админа
What is the flag from the framework's administration portal?
Вопрос: Какой флаг отображается на административном портале фреймворка?
7. OSINT - Взлом Google / Доркинг
Также существуют внешние ресурсы, которые могут помочь в поиске информации о целевом веб-сайте; эти ресурсы часто называют OSINT (Open-Source Intelligence — разведка на основе открытых источников), поскольку это свободно доступные инструменты для сбора информации.
Поиск с помощью Google (Dorking) использует расширенные функции поисковой системы Google, позволяющие выбирать контент, не имеющий аналогов. Например, вы можете выбрать результаты для определенного доменного имени, используя фильтр site: (например, site: tryhackme.com ). Затем вы можете сопоставить это с определенными поисковыми запросами, скажем, со словом admin (например, site: tryhackme.com admin).
В этом случае будут возвращены только результаты с сайта tryhackme.com , содержащие слово admin. Вы также можете комбинировать несколько фильтров. Вот пример других фильтров, которые вы можете использовать:
What Google dork operator can be used to only show results from a particular site?
Вопрос: Какой оператор Google Dork можно использовать для отображения результатов только с определенного сайта?
8. OSINT - Wappalyzer
Wappalyzer ( https://www.wappalyzer.com/ ) — это онлайн-инструмент и расширение для браузера, которое помогает определить, какие технологии использует веб-сайт, такие как фреймворки, системы управления контентом ( CMS ), платежные системы и многое другое, а также может определять номера версий.
What online tool can be used to identify what technologies a website is running?
Вопрос: Какой онлайн-инструмент можно использовать для определения того, какие технологии использует веб-сайт?
9. OSINT - Wayback Machine
Wayback Machine ( https://archive.org/web/ ) — это исторический архив веб-сайтов, начиная с конца 90-х годов. Вы можете выполнить поиск по доменному имени, и он покажет вам все случаи, когда сервис сканировал веб-страницу и сохранял её содержимое. Этот сервис может помочь обнаружить старые страницы, которые всё ещё могут быть активны на текущем веб-сайте.
What is the website address for the Wayback Machine?
Вопрос: Какой адрес сайта Wayback Machine?
Ответ: https://archive.org/web/
10. OSINT - GitHub
Чтобы понять GitHub, сначала нужно понять Git . Git — это система контроля версий , которая отслеживает изменения файлов в проекте. Работа в команде упрощается, потому что вы можете видеть, что редактирует каждый член команды и какие изменения он внес в файлы. Когда пользователи заканчивают вносить изменения, они фиксируют их с помощью сообщения, а затем отправляют обратно в центральное место (репозиторий), чтобы другие пользователи могли затем получить эти изменения на свои локальные компьютеры. GitHub — это размещенная в интернете версия Git . Репозитории могут быть публичными или приватными и иметь различные уровни контроля доступа. Вы можете использовать функцию поиска GitHub, чтобы искать названия компаний или веб-сайтов и пытаться найти репозитории, принадлежащие вашей цели. После обнаружения вы можете получить доступ к исходному коду, паролям или другому контенту, который вы еще не нашли.
11. OSINT - S3-корзины
S3 -корзины — это сервис хранения данных, предоставляемый Amazon AWS , позволяющий пользователям сохранять файлы и даже статический контент веб-сайтов в облаке, доступном по протоколам HTTP и HTTPS.
Владелец файлов может установить права доступа, сделав файлы общедоступными, приватными и даже доступными для записи. Иногда эти права доступа устанавливаются неправильно и непреднамеренно предоставляют доступ к файлам, которые не должны быть доступны для общественности.
Формат S3 -корзин — http (s):// {name}. s3 .amazonaws.com , где {name} определяется владельцем, например, tryhackme-assets. s3 .amazonaws.com .
S3-корзины можно найти различными способами, например, найдя URL-адреса в исходном коде веб-страницы, репозиториях GitHub или даже автоматизировав этот процесс. Один из распространенных методов автоматизации — использование названия компании с последующими распространенными терминами, такими как {name} -assets, {name} -www, {name} -public, {name} -private и т. д.
Amazon S3 — это как «интернет-кладовка», где компании хранят файлы в облаке.
Как найти такую кладовку:
У каждой кладовки есть свой адрес в интернете, который всегда заканчивается на:
.s3.amazonaws.com
Проблема безопасности:
Иногда компания случайно оставляет свою «кладовку» открытой. Тогда любой, кто найдёт этот адрес, может посмотреть или скачать файлы, которые не должен видеть.
What URL format do Amazon S3 buckets end in?
Вопрос: В каком формате URL-адресов заканчиваются файлы cookie Amazon S3?
12. Автоматическое обнаружение
Что такое автоматическое обнаружение?
Автоматизированное обнаружение — это процесс использования инструментов для поиска контента вместо ручного поиска. Этот процесс автоматизирован, поскольку обычно включает сотни, тысячи или даже миллионы запросов к веб-серверу. Эти запросы проверяют, существует ли файл или каталог на веб-сайте, предоставляя нам доступ к ресурсам, о существовании которых мы ранее не знали. Этот процесс становится возможным благодаря использованию ресурса, называемого списками слов (wordlists).
Списки слов — это просто текстовые файлы, содержащие длинный перечень часто используемых слов; они могут использоваться в самых разных целях. Например, список слов для паролей будет включать наиболее часто используемые пароли, тогда как в нашем случае нам нужен список, содержащий наиболее часто используемые имена каталогов и файлов. Отличный ресурс со списками слов, предустановленный на THM AttackBox, — это https://github.com/danielmiessler/SecLists , который курирует Даниэль Мисслер.
Хотя существует множество различных инструментов для поиска контента, каждый из которых имеет свои особенности и недостатки, мы рассмотрим три, которые предустановлены на нашем сервере для атак: ffuf, dirb и gobuster .
На сервере AttackBox выполните следующие три команды, нацелившись на веб-сайт службы ИТ-поддержки Acme, и посмотрите, какие результаты вы получите.
user@machine$ ffuf -w /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt -u http://10.48.191.36/FUZZ
user@machine$ dirb http://10.48.191.36/ /usr/share/wordlists/SecLists/Discovery/Web-Content/common.txt
user@machine$ gobuster dir --url http://10.48.191.36/ -w /usr/sha-гre/wordlists/SecLists/Discovery/Web-Content/common.txt
Используя результаты выполнения приведенных выше команд, ответьте, пожалуйста, на следующие вопросы:
What is the name of the directory beginning “/mo….” that was discovered?
Вопрос: Как называется обнаруженная директория, начинающаяся с "/mo...."?
What is the name of the log file that was discovered?
Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!