Автор: BlameUself
Источник: xss.pro
После сотен пройденных CTF во мне проснулся интерес к поиску целей в реальной сети, в большом Интернете. Я хочу начать статью с небольшой предыстории, а затем перейти к обзору сервиса. В общем, было решено начать с таргетов, уязвимость которых заранее известна. Более того, сперва пройтись по публичным доркам. Итак, поскольку я пишу в основном для начинающих, небольшое вступление. Для поиска уязвимых ресурсов можно использовать так называемые дорки, а помимо стандартных поисковых систем, таких как Google или Yahoo, существуют альтернативные поисковые движки, которые гораздо лучше подходят для пентест задач.
Самым громким проектом такого типа является Shodan. Этот сервис анализирует все устройства, подключенные к Интернету, и оперирует таким понятием, как баннеры. Он позволяет понять, какую версию программного обеспечения использует тот или иной компьютер.
Я люблю ссылаться на TryHackMe в своих статьях, и этот раз не станет исключением. Если вы хотите узнать больше о Shodan, вот вам ссылочка на прекрасную комнату: https://tryhackme.com/room/shodan.
Дополнительная комната про Google дорки: https://tryhackme.com/r/room/googledorking.
После прохождения комнаты, найдите на форуме "Расширенное руководство по использованию Shodan". Это прекрасное руководство, которое расскажет все о том, как работает данная магия. Оно содержит перечисление некоторых уязвимостей, раскрывает терминологию, дополнительные возможности, и домашние задания - невероятно увлекательное руководство.
Изучая руководство, меня заинтересовала одна забавная уязвимость, дорк — product:MongoDB metrics, выводящая все базы данных MongoDB, к которым осуществляется подключение с открытой аутентификацией. На самом деле, такие базы можно найти также доркой "MongoDB Server Information" port:27017 -authentication, но суть в другом.
В руководстве был описан код, который решал довольно странную проблему, а именно анализировал размер базы данных и считал количество названий. Это было очень интересно, но меня интересовало немного другое.
Мне было необходимо подключиться к базе, вывести список баз данных, а также коллекций в них. Я просматривал результаты вручную, поэтому для этого я использовал небольшой скрипт на Python с библиотекой pymongo.
Я обнаружил там интересную картину: практически каждая база была отработана локером. К сожалению, скриншотов нет, но вы можете попробовать это сделать самостоятельно. Я проверил несколько десятков доступов, и лишь на одном из них данные остались нетронутыми. Вот таким скриптом можно пройтись по базам, чтобы выкачать их.
Этот путь заставил меня задуматься об альтернативных сервисах вроде Shodan; возможно, они были бы менее подвержены отработки, чем Shodan. Я обратил свое внимание на Fofo. Оказалось, что информации о нем практически нет. Эта небольшая статья призвана исправить данное упущение. В ней я сделаю краткий обзор возможностей сервиса и проведу небольшое сравнение с Shodan.
Что представляет собой Fofa?
Судя по всему, этот сервис базируется в Китае, либо все выглядит именно так. Определение гласит, что FOFA - это поисковая система для отображения киберпространства, направленная на помощь пользователям в поиске интернет-активов в общественной сети. Отображение киберпространства можно рассматривать как "карту" киберпространства, аналогично Google Maps.
Взаимодействие с движком также, как и с Shodan, может происходить через веб-интерфейс. Минимализм в дизайне, а также возможность использовать сервис без регистрации отличают его от Shodan. Правда, он работает немного медленнее, судя по моим тестам.
Для входа в аккаунт можно использовать Google или некий NOSEC. Использование первого варианта довольно неожиданно для подобного сервиса, а второй вариант, кажется, представляет собой какое-то китайское собственное решение. Не знаю, где еще оно встречается, поскольку я не нашел много информации об этом. Тем не менее, я рекомендую выбирать его.
Попробовав запрос с Shodan, станет понятно, что синтаксис у сервиса будет отличаться, ибо либо вы получите некорректный результат, либо не получите его вовсе.
Пример запроса Shodan: city:"Rome" - параметр, двоеточие, аргумент в кавычках.
Пример запроса Fofa: city=Rome - параметр, равно, аргумент. (Кавычки добавляются автоматически).
Первым делом обращаю внимание на поиск по favicon. Favicon - это иконка изображения, которая обычно отображается во вкладке браузера рядом с названием сайта. В Shodan также возможен поиск по хешу иконок, но здесь работа с этими иконками выведена на новый уровень.
Поиск сайтов на WordPress с использованием хеша иконок:
Как можно видеть, поисковые запросы объединяются через оператор логического "и" - &&. Остальные параметры доступны для просмотра в справке Query Description, доступной на главной странице.
Также в самой строке поиска отображаются подсказки, однако они не всегда работают. Но такая функция также присутствует.
Возвращаясь к нашей поисковой выдаче, можно заметить некое обозначение FID:
"FID (Feature ID)" - это информация об отпечатках системы, созданная самим FOFA. Она объединяет ресурсы по субъективным похожим критериям.
Также есть возможность скачать результат сразу в формате JSON (либо CSV).
Цена за F-поинты на момент написания статьи. Оплата происходит через PayPal.
Возвращаясь к баннеру, в остальном информация пересекается с Shodan.
Первая кнопка покажет тело сайта в HTML формате, кнопка IP polymerization покажет информацию о IP-адресе (включая все баннеры, захваченные с него), а иконка перезагрузки сделает принудительное обновление информации (работает только для владельцев ресурса).
Возвращаясь к панели слева, всё достаточно знакомо: порты, сервисы, протоколы, заголовки.
Безусловно, если мы говорим про автоматизацию процессов, то API — это наше все, и также, как и у Shodan, у нас есть возможность работать, используя API. Хочу также отметить плюс сервиса, который заключается в куда более лояльном отношении к пулу tor адресов. Первым минусом использования Shodan API для меня стало фактическая невозможность комфортного взаимодействия с ним через Whonix OC — я просто не мог привязать ключ.
Само по себе API Fofa представляет собой довольно простое REST API, примеры из документации явно показывают взаимодействие - https://en.fofa.info/api
Однако, как и Shodan, существуют библиотеки для Python, Java и Go. Примеры взаимодействия библиотеки Go также явно показывают её возможности - https://github.com/LubyRuffy/gofofa
Изучая Shodan, меня заинтересовала прекрасная возможность поиска целей сразу по CVE, типа vuln:CVE-2014-0160. Это очень крутая функция, доступная для аккаунтов выше уровня Small Business. В Fofa такой функциональности нет, однако API позволяет реализовать пайплайн через Nuclei.
Вы также можете попробовать найти ключ в открытых источниках. Если дорка для ключей Shodan на GitHub (shodan_api_key), то аналогичный дорк для Fofa будет fofa_api_key. В выдаче таких результатов гораздо меньше, но вдруг сегодня ваш день.
Если вы захотите узнать больше о Fofa, обратитесь к репозиторию Awesome-FOFA - https://github.com/FofaInfo/Awesome-FOFA/tree/main. Моя единственная рекомендация - изучать информацию сразу на китайском языке. Многая информация на английском является достаточно кривым переводом, и перевод с китайского на русский чатом GPT обычно получается качественнее. Там есть действительно интересные advanced кейсы использования.
Многих прекрасных возможностей Shodan здесь не предусмотрено, однако это может быть и плюсом. Я не нашел возможности просматривать публичные запросы, такие как https://www.shodan.io/explore/recent. Предполагаю, что такой функционал не предусмотрен сервисом, и это может быть хорошо.
Дополнительные функции Fofa вы можете найти в своем профиле (Personal center —> Open Lab). Видим возможность обхода WAF для выявления исходного IP-адреса.
Наиболее разрекламированной функцией сервиса является FofaHub. Насколько я понял, это что-то вроде No-code решения. То, что можно построить через API, можно реализовать, перетаскивая разноцветные блоки.
Возвращаясь к нашим баранам, изначально я хотел проверить, есть ли неотработанные БД MongoDB с открытой аутентификацией. Поиск по product возвращает пейвол. Используем поиск по MongoDB минус authentication, но не получаем нужного результата. В итоге, нужны параметр "protocol", а ключевое слово в баннере — "metrics". Итак, запрос для FOFA под данную задачу будет следующим: "metrics" && protocol="mongodb". Дорки для Shodan обратно не совместимы с FOFA, но их можно переписать.
Сравниваем результаты:
Разница, так сказать, очевидна. Более того, здесь мы сразу видим коллекции. Но, к сожалению, и здесь забывчивые владельцы баз создают коллекцию, в которой описывают инструкцию по резервному копированию прямо в MongoDB.
Подводя итоги, хочу отметить, что поиск по другим источникам, в частности, Fofa, может быть очень полезным, и порой, как и с поисковыми движками Google/Yahoo, он может показывать разные результаты.
Как говорил Чеширский кот: "Кто ищет, тот всегда найдет... если правильно ищет."
Источник: xss.pro
После сотен пройденных CTF во мне проснулся интерес к поиску целей в реальной сети, в большом Интернете. Я хочу начать статью с небольшой предыстории, а затем перейти к обзору сервиса. В общем, было решено начать с таргетов, уязвимость которых заранее известна. Более того, сперва пройтись по публичным доркам. Итак, поскольку я пишу в основном для начинающих, небольшое вступление. Для поиска уязвимых ресурсов можно использовать так называемые дорки, а помимо стандартных поисковых систем, таких как Google или Yahoo, существуют альтернативные поисковые движки, которые гораздо лучше подходят для пентест задач.
Самым громким проектом такого типа является Shodan. Этот сервис анализирует все устройства, подключенные к Интернету, и оперирует таким понятием, как баннеры. Он позволяет понять, какую версию программного обеспечения использует тот или иной компьютер.
Я люблю ссылаться на TryHackMe в своих статьях, и этот раз не станет исключением. Если вы хотите узнать больше о Shodan, вот вам ссылочка на прекрасную комнату: https://tryhackme.com/room/shodan.
Дополнительная комната про Google дорки: https://tryhackme.com/r/room/googledorking.
После прохождения комнаты, найдите на форуме "Расширенное руководство по использованию Shodan". Это прекрасное руководство, которое расскажет все о том, как работает данная магия. Оно содержит перечисление некоторых уязвимостей, раскрывает терминологию, дополнительные возможности, и домашние задания - невероятно увлекательное руководство.
Изучая руководство, меня заинтересовала одна забавная уязвимость, дорк — product:MongoDB metrics, выводящая все базы данных MongoDB, к которым осуществляется подключение с открытой аутентификацией. На самом деле, такие базы можно найти также доркой "MongoDB Server Information" port:27017 -authentication, но суть в другом.
В руководстве был описан код, который решал довольно странную проблему, а именно анализировал размер базы данных и считал количество названий. Это было очень интересно, но меня интересовало немного другое.
Мне было необходимо подключиться к базе, вывести список баз данных, а также коллекций в них. Я просматривал результаты вручную, поэтому для этого я использовал небольшой скрипт на Python с библиотекой pymongo.
Python:
import pymongo
# Подключение к MongoDB
client = pymongo.MongoClient("mongodb://1.116.111.111:27017/")
all_databases = client.list_database_names()
# Вывод всех баз данных
print("Список всех баз данных:")
for database in all_databases:
print(database)
# Получение списка всех коллекций в каждой базе данных
for database in all_databases:
db = client[database]
all_collections = db.list_collection_names()
print("\nКоллекции в базе данных", database)
for collection in all_collections:
print(collection)
Python:
import pymongo
import os
# Подключение к MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# Получение списка всех баз данных
all_databases = client.list_database_names()
# Директория для сохранения файлов
output_dir = "/home/user/Desktop/data"
os.makedirs(output_dir, exist_ok=True)
# Проход по каждой базе данных
for database_name in all_databases:
db = client[database_name]
# Получение списка всех коллекций в базе данных
all_collections = db.list_collection_names()
# Проход по каждой коллекции
for collection_name in all_collections:
collection = db[collection_name]
# Получение всех документов из коллекции
documents = collection.find()
# Создание файла для коллекции
filename = f"{output_dir}/{database_name}_{collection_name}.json"
with open(filename, "w") as file:
# Запись содержимого коллекции в файл
for document in documents:
file.write(str(document) + "\n")
print("Результаты сохранены в файлы.")
Этот путь заставил меня задуматься об альтернативных сервисах вроде Shodan; возможно, они были бы менее подвержены отработки, чем Shodan. Я обратил свое внимание на Fofo. Оказалось, что информации о нем практически нет. Эта небольшая статья призвана исправить данное упущение. В ней я сделаю краткий обзор возможностей сервиса и проведу небольшое сравнение с Shodan.
Что представляет собой Fofa?
Судя по всему, этот сервис базируется в Китае, либо все выглядит именно так. Определение гласит, что FOFA - это поисковая система для отображения киберпространства, направленная на помощь пользователям в поиске интернет-активов в общественной сети. Отображение киберпространства можно рассматривать как "карту" киберпространства, аналогично Google Maps.
Взаимодействие с движком также, как и с Shodan, может происходить через веб-интерфейс. Минимализм в дизайне, а также возможность использовать сервис без регистрации отличают его от Shodan. Правда, он работает немного медленнее, судя по моим тестам.
Для входа в аккаунт можно использовать Google или некий NOSEC. Использование первого варианта довольно неожиданно для подобного сервиса, а второй вариант, кажется, представляет собой какое-то китайское собственное решение. Не знаю, где еще оно встречается, поскольку я не нашел много информации об этом. Тем не менее, я рекомендую выбирать его.
Попробовав запрос с Shodan, станет понятно, что синтаксис у сервиса будет отличаться, ибо либо вы получите некорректный результат, либо не получите его вовсе.
Пример запроса Shodan: city:"Rome" - параметр, двоеточие, аргумент в кавычках.
Пример запроса Fofa: city=Rome - параметр, равно, аргумент. (Кавычки добавляются автоматически).
Первым делом обращаю внимание на поиск по favicon. Favicon - это иконка изображения, которая обычно отображается во вкладке браузера рядом с названием сайта. В Shodan также возможен поиск по хешу иконок, но здесь работа с этими иконками выведена на новый уровень.
Поиск сайтов на WordPress с использованием хеша иконок:
Как можно видеть, поисковые запросы объединяются через оператор логического "и" - &&. Остальные параметры доступны для просмотра в справке Query Description, доступной на главной странице.
Также в самой строке поиска отображаются подсказки, однако они не всегда работают. Но такая функция также присутствует.
Возвращаясь к нашей поисковой выдаче, можно заметить некое обозначение FID:
"FID (Feature ID)" - это информация об отпечатках системы, созданная самим FOFA. Она объединяет ресурсы по субъективным похожим критериям.
Также есть возможность скачать результат сразу в формате JSON (либо CSV).
Цена за F-поинты на момент написания статьи. Оплата происходит через PayPal.
Возвращаясь к баннеру, в остальном информация пересекается с Shodan.
Первая кнопка покажет тело сайта в HTML формате, кнопка IP polymerization покажет информацию о IP-адресе (включая все баннеры, захваченные с него), а иконка перезагрузки сделает принудительное обновление информации (работает только для владельцев ресурса).
Возвращаясь к панели слева, всё достаточно знакомо: порты, сервисы, протоколы, заголовки.
Безусловно, если мы говорим про автоматизацию процессов, то API — это наше все, и также, как и у Shodan, у нас есть возможность работать, используя API. Хочу также отметить плюс сервиса, который заключается в куда более лояльном отношении к пулу tor адресов. Первым минусом использования Shodan API для меня стало фактическая невозможность комфортного взаимодействия с ним через Whonix OC — я просто не мог привязать ключ.
Само по себе API Fofa представляет собой довольно простое REST API, примеры из документации явно показывают взаимодействие - https://en.fofa.info/api
Однако, как и Shodan, существуют библиотеки для Python, Java и Go. Примеры взаимодействия библиотеки Go также явно показывают её возможности - https://github.com/LubyRuffy/gofofa
Изучая Shodan, меня заинтересовала прекрасная возможность поиска целей сразу по CVE, типа vuln:CVE-2014-0160. Это очень крутая функция, доступная для аккаунтов выше уровня Small Business. В Fofa такой функциональности нет, однако API позволяет реализовать пайплайн через Nuclei.
Вы также можете попробовать найти ключ в открытых источниках. Если дорка для ключей Shodan на GitHub (shodan_api_key), то аналогичный дорк для Fofa будет fofa_api_key. В выдаче таких результатов гораздо меньше, но вдруг сегодня ваш день.
Если вы захотите узнать больше о Fofa, обратитесь к репозиторию Awesome-FOFA - https://github.com/FofaInfo/Awesome-FOFA/tree/main. Моя единственная рекомендация - изучать информацию сразу на китайском языке. Многая информация на английском является достаточно кривым переводом, и перевод с китайского на русский чатом GPT обычно получается качественнее. Там есть действительно интересные advanced кейсы использования.
Многих прекрасных возможностей Shodan здесь не предусмотрено, однако это может быть и плюсом. Я не нашел возможности просматривать публичные запросы, такие как https://www.shodan.io/explore/recent. Предполагаю, что такой функционал не предусмотрен сервисом, и это может быть хорошо.
Дополнительные функции Fofa вы можете найти в своем профиле (Personal center —> Open Lab). Видим возможность обхода WAF для выявления исходного IP-адреса.
Наиболее разрекламированной функцией сервиса является FofaHub. Насколько я понял, это что-то вроде No-code решения. То, что можно построить через API, можно реализовать, перетаскивая разноцветные блоки.
Возвращаясь к нашим баранам, изначально я хотел проверить, есть ли неотработанные БД MongoDB с открытой аутентификацией. Поиск по product возвращает пейвол. Используем поиск по MongoDB минус authentication, но не получаем нужного результата. В итоге, нужны параметр "protocol", а ключевое слово в баннере — "metrics". Итак, запрос для FOFA под данную задачу будет следующим: "metrics" && protocol="mongodb". Дорки для Shodan обратно не совместимы с FOFA, но их можно переписать.
Сравниваем результаты:
Разница, так сказать, очевидна. Более того, здесь мы сразу видим коллекции. Но, к сожалению, и здесь забывчивые владельцы баз создают коллекцию, в которой описывают инструкцию по резервному копированию прямо в MongoDB.
Подводя итоги, хочу отметить, что поиск по другим источникам, в частности, Fofa, может быть очень полезным, и порой, как и с поисковыми движками Google/Yahoo, он может показывать разные результаты.
Как говорил Чеширский кот: "Кто ищет, тот всегда найдет... если правильно ищет."
. У Фофа поиск чуть лучше, чем у шодана (имхо), но это субьетивно.