Ищем уязвимости с помощью google
Любой поиск уязвимостей на веб-ресурсах начинается с разведки и сбора информации.
Разведка может быть как активной — брутфорс файлов и директорий сайта, запуск сканеров уязвимостей, ручной просмотр сайта, так и пассивной — поиск информации в разных поисковых системах. Иногда бывает так, что уязвимость становится известна еще до открытия первой страницы сайта.
Как такое возможно? Поисковые роботы, безостановочно бродящие по просторам интернета, помимо информации, полезной обычному пользователю, часто фиксируют то, что может быть использовано злоумышленниками при атаке на веб-ресурс. Например, ошибки скриптов и файлы с чувствительной информацией (начиная от конфигурационных файлов и логов, заканчивая файлами с аутентификационными данными и бэкапами баз данных).
С точки зрения поискового робота сообщение об ошибке выполнения sql-запроса — это обычный текст, неотделимый, например, от описания товаров на странице. Если вдруг поисковый робот наткнулся на файл с расширением .sql, который почему-то оказался в рабочей папке сайта, то он будет воспринят как часть содержимого сайта и так же будет проиндексирован (включая, возможно, указанные в нём пароли).
Подобную информацию можно найти, зная устойчивые, часто уникальные, ключевые слова, которые помогают отделить «уязвимые страницы» от страниц, не содержащих уязвимости.
Огромная база специальных запросов с использованием ключевых слов (так называемых дорков) существует на
exploit-db.com и известна под названием Google Hack Database.
Почему google? Дорки ориентированы в первую очередь на google по двум причинам:
− наиболее гибкий синтаксис ключевых слов (приведен в Таблице 1) и специальных символов (приведен в Таблице 2);
− индекс google всё же более полный нежели у других поисковых систем;
Таблица 1 – Основные ключевые слова google
Таблица 2 – Специальные символы запросов google
Стоит понимать, что любой запрос к поисковой системе — это поиск только по словам.
Бесполезно искать на странице мета-символы (кавычки, скобки, знаки пунктуации и т. п). Даже поиск по точной фразе, указанной в кавычках, — это поиск по словам, с последующим поиском точного совпадения уже в результатах.
Все дорки Google Hack Database разделены логически на 14 категорий и представлены в таблице 3.
Таблица 3 – Категории Google Hack Database
Дорки чаще ориентированы на поиск по всем сайтам сети интернет. Но ни что не мешает ограничить область поиска на каком-либо сайте или сайтах.
Каждый запрос к google можно сосредоточить на определённом сайте, добавив к запросу ключевое слово «site:somesite.com». Данное ключевое слово может быть дописано к любому дорку.
Автоматизация поиска уязвимостей Так родилась идея написать простенькую утилиту, автоматизирующую поиск уязвимостей с помощью поисковой системы (google) и опирающуюся на Google Hack Database.
Утилита представляет из себя скрипт, написанный на nodejs с использованием phantomjs. Если быть точным, то скрипт интерпретируется самим phantomjs.
Phantomjs — это полноценный веб-браузер без графического интерфейса, управляемый с помощью js-кода и обладающий удобным API.
Утилита получила вполне понятное название – dorks. Запустив её в командной строке (без опций) получаем короткую справку с несколькими примерами использования:
Рисунок 1 — Список основных опций dorks
Общий синтаксис утилиты: dork «команда» «список опций».
Подробное описание всех опций представлено в таблице 4.
Таблица 4 – Синтаксис dorks
С помощью команды ghdb можно получить все дорки с exploit-db по произвольному запросу, либо указать целиком всю категорию. Если указать категорию 0 — то будет выгружена вся база (около 4.5 тысяч дорков).
Список категорий доступных на данный момент представлен на рисунке 2.
Рисунок 2 — Список доступных категорий дорков GHDB
Командой google будет произведена подстановка каждого дорка в поисковик google и проанализирован результат на предмет совпадений. Дорки по которым что-то нашлось будут сохранены в файл.
Утилита поддерживает разные режимы поиска:
• 1 дорк и 1 сайт;
• 1 дорк и много сайтов;
• 1 сайт и много дорков;
• много сайтов и много дорков;
Список дорков и сайтов можно задать как через аргумент, так и через файл.
Демонстрация работы Попробуем поискать какие-либо уязвимости на примере поиска сообщений об ошибках. По команде: dorks ghdb –c 7 –o errors.dorks будут загружены все известные дорки категории "Error Messages" как показано на рисунке 3.
Рисунок 3 – Загрузка всех известных дорков категории "Error Messages"
Дорки загружены и сохранены в файл. Теперь остается «натравить» их на какой-нибудь сайт (см. рисунок 4).
Рисунок 4 – Поиск уязвимостей интересуемого сайта в кэше google
Спустя какое-то время на исследуемом сайте обнаруживается несколько страниц, содержащих ошибки (см. рисунок 5).
Рисунок 5 – Найденные сообщения об ошибках
Итог, в файле result.txt получаем полный список дорков, приводящих к появлению ошибки.
На рисунке 6 представлен результат поиска ошибок сайта.
Рисунок 6 – Результат поиска ошибок
В кэше по данному дорку выводится полный бэктрейс, раскрывающих абсолютные пути скриптов, систему управления содержимым сайта и тип базы данных (см. рисунок 7).
Рисунок 7 – раскрытие информации об устройстве сайта
Однако стоит учитывать, что не все дорки из GHDB дают истинный результат. Так же google может не найти точного совпадения и показать похожий результат.
В таком случае разумнее использовать свой персональный список дорков. Например, всегда стоит поискать файлы с «необычными» расширениями, примеры которых приведены на рисунке 8.
Рисунок 8 – Список расширений файлов, не характерных для обычного веб-ресурса
В итоге, по команде dorks google –D extensions.txt –f банк, с самого первого запроса google начинает отдавать сайты с «необычными» расширениями файлов (см. рисунок 9).
Рисунок 9 – Поиск «нехороших» типов файлов на сайтах банковской тематики
Стоит иметь ввиду, что google не воспринимает запросы длиннее 32 слов.
С помощью команды dorks google –d intext:"error|warning|notice|syntax" –f университет
можно поискать ошибки интерпретатора PHP на сайтах учебной тематики (см. рисунок 10).
Рисунок 10 – Поиск PHP-ошибок времени исполнения
Иногда пользоваться какой-то одной или двумя категориями докров не удобно.
Например, если известно, что сайт работает на движке wordpress, то нужны дорки именно по wordpress. В таком случае удобно воспользоваться поиском Google Hack Database. Команда dorks ghdb –q wordpress –o wordpress_dorks.txt загрузит все дорки по Wordpress, как показано на рисунке 11:
Рисунок 11 – Поиск дорков, относящихся к Wordpress
Снова вернемся к банкам и командой dorks google –D wordpress_dords.txt –f банк попробуем найти что-нибудь интересное, связанное с wordpress (см. рисунок 12).
Рисунок 12 – Поиск уязвимостей Wordpress
Стоит заметить, что поиск на Google Hack Database не воспринимает слова короче 4 символов. Например, если CMS сайта не известна, но известен язык — PHP. В таком случае можно отфильтровать нужное вручную с помощью пайпа и системной утилиты поиска dorks –c all | findstr /I php > php_dorks.txt (см. рисунок 13):
Рисунок 13 – Поиск по всем доркам, где есть упоминание PHP
Поиск уязвимостей или какой-то чувствительной информации в поисковой системе следует искать только в случае если по данному сайту есть значительный индекс. Например, если у сайта проиндексировано 10-15 страниц, то глупо что-либо искать подобным образом. Проверить размер индекса просто — достаточно ввести в строку поиска google «site:somesite.com». Пример сайта с недостаточным индексом показан на рисунке 14.
Рисунок 14 – Проверка размера индекса сайта
Теперь о неприятном… Периодически google может запросить каптчу — тут ничего не поделать — её придется ввести. Например, у меня, при переборе категории «Error Messages» (90 дорков) каптча выпала только один раз.
Стоит добавить, что phantomjs поддерживает работу так же и через прокси, как через http, так и через socks интерфейс. Для включения режима прокси надо раскоментировать соответствующую строку в dorks.bat или dorks.sh.
Инструмент доступен в виде исходного кода
github.com/USSCltd/dorks и для своей работы требует только phantomjs.
Комментариев нет:
Отправить комментарий