Ищем уязвимости с помощью google

    Любой поиск уязвимостей на веб-ресурсах начинается с разведки и сбора информации.
    Разведка может быть как активной — брутфорс файлов и директорий сайта, запуск сканеров уязвимостей, ручной просмотр сайта, так и пассивной — поиск информации в разных поисковых системах. Иногда бывает так, что уязвимость становится известна еще до открытия первой страницы сайта.

    Как такое возможно?
    Поисковые роботы, безостановочно бродящие по просторам интернета, помимо информации, полезной обычному пользователю, часто фиксируют то, что может быть использовано злоумышленниками при атаке на веб-ресурс. Например, ошибки скриптов и файлы с чувствительной информацией (начиная от конфигурационных файлов и логов, заканчивая файлами с аутентификационными данными и бэкапами баз данных).
    С точки зрения поискового робота сообщение об ошибке выполнения sql-запроса — это обычный текст, неотделимый, например, от описания товаров на странице. Если вдруг поисковый робот наткнулся на файл с расширением .sql, который почему-то оказался в рабочей папке сайта, то он будет воспринят как часть содержимого сайта и так же будет проиндексирован (включая, возможно, указанные в нём пароли).

    Подобную информацию можно найти, зная устойчивые, часто уникальные, ключевые слова, которые помогают отделить «уязвимые страницы» от страниц, не содержащих уязвимости.
    Огромная база специальных запросов с использованием ключевых слов (так называемых дорков) существует на exploit-db.com и известна под названием Google Hack Database.

    Почему google?
    Дорки ориентированы в первую очередь на google по двум причинам:
    − наиболее гибкий синтаксис ключевых слов (приведен в Таблице 1) и специальных символов (приведен в Таблице 2);
    − индекс google всё же более полный нежели у других поисковых систем;

    Таблица 1 – Основные ключевые слова google
    Ключевое слово
    Смысл
    Пример
    site
    Поиск только на указанном сайте. Учитывает только url
    site:somesite.ru – найдет все страницы по данному домену и поддоменам
    inurl
    Поиск по словам, присутствующим в uri. В отличие от кл. слова “site”, ищет совпадения после имени сайта
    inurl:news – найдет все страницы, где в uri встретится данное слово
    intext
    Поиск в теле страницы
    intext:”пробки” – полностью аналогично обычному запросу “пробки”
    intitle
    Поиск в заголовке страницы. Текст, заключенный между тэгами <title>
    intitle:”index of”  — найдет все страницы с листингом директории
    ext
    Поиск страниц с указанным расширением
    ext:pdf – найдет все pdf-файлы
    filetype
    В настоящее время полностью аналогично кл. слову “ext”
    filetype:pdf – аналогично
    related
    Поиск сайтов со схожей тематикой
    related:google.ru – покажет свои аналоги
    link
    Поиск сайтов, ссылающихся на данный
    link:somesite.ru  — найдет все сайты, на которых есть ссылка на данный
    define
    Показать определение слова
    define:0day  — определение термина
    cache
    Показать содержимое страницы в кэше (если имеется)
    cache:google.com – откроет страницу из кэша


    Таблица 2 – Специальные символы запросов google
    Символ
    Смысл
    Пример

    Точная фраза
    intitle:«RouterOS router configuration page»   — поиск роутеров
    *
    Любой текст
    inurl:«bitrix*mcart»   — поиск сайтов на bitrix с уязвимым модулем mcart
    .
    Любой символ
    Index.of  — аналогично запросу index of
    -
    Исключить слово
    error –warning    — показать все страницы, где есть error, но нет warning
    ..
    Диапазон
    cve 2006..2016  — показать уязвимости по годам начиная с 2006
    |
    Логическое «или»
    linux | windows  — показать страницы, где встречается либо первое либо второе слово

    Стоит понимать, что любой запрос к поисковой системе — это поиск только по словам.
    Бесполезно искать на странице мета-символы (кавычки, скобки, знаки пунктуации и т. п). Даже поиск по точной фразе, указанной в кавычках, — это поиск по словам, с последующим поиском точного совпадения уже в результатах.

    Все дорки Google Hack Database разделены логически на 14 категорий и представлены в таблице 3.
    Таблица 3 – Категории Google Hack Database
    Категория
    Что позволяет найти
    Пример
    Footholds
    Веб-шеллы, публичные файловые менеджеры
    Найти все взломанные сайты, где залиты перечисленные вебшеллы:
    (intitle:«phpshell» OR intitle:«c99shell» OR intitle:«r57shell» OR intitle:«PHP Shell » OR intitle:«phpRemoteView») `rwx` «uname»
    Files containing usernames
    Файлы реестра, конфигурационные файлы, логи, файлы, содержащие историю введенных команд
    Найти все файлы реестра, содержащие информацию об аккаунтах:
    filetype:reg reg +intext:«internet account manager»
    Sensitive Directories
    Каталоги с различной информацией (личные документы, конфиги vpn, скрытые репозитории и т.д.)
    Найти все листинги директорий содержащих файлы, относящиеся к vpn:
    «Config» intitle:«Index of» intext:vpn
    Сайты, содержащие git-репозитории:
     (intext:«index of /.git») («parent directory»)
    Web Server Detection
    Версию и иную информацию о веб-сервере
    Найти административные консоли сервера JBoss:
    inurl:"/web-console/" intitle:«Administration Console»
    Vulnerable Files
    Скрипты, содержащие известные уязвимости
    Найти сайты, использующие скрипт, позволяющий выгрузить произвольный файл с сервера:
    allinurl:forcedownload.php?file=
    Vulnerable Servers
    Инсталляционные скрипты, веб-шеллы, открытые административные консоли и т.д
    Найти открытые PHPMyAdmin консоли, запущенные от root:
    intitle:phpMyAdmin «Welcome to phpMyAdmin ***» «running on * as root@*»
    Error Messages
    Различные ошибки и предупреждения часто раскрывающие важную информацию – начиная от версии CMS до паролей
    Сайты, имеющие ошибки в выполнении sql-запросов к базе:
    «Warning: mysql_query()» «invalid query»
    Files containing juicy info
    Сертификаты, бэкапы, электронные письмы, логи, sql-скрипты и т.д
    Найти инициализационные sql-скрипты:
    filetype:sql and «insert into» -site:github.com
    Files containing passwords
    Всё что может содержать пароли – логи, sql-скрипты и т.д
    Логи, упоминающие пароли:
    filetype:log intext:password | pass | pw
    sql-скрипты содержащие пароли:
    ext:sql intext:username intext:password
    Sensitive Online Shopping Info
    Информацию связанную с онлайн покупками
    Найти пинкоды:
    dcid= bn= pin code=
    Network or vulnerability data
    Информацию, не относящуюся непосредственно к веб-ресурсу, но затрагивающую сеть либо прочие не веб-сервисы
    Найти скрипты автоматической настройки прокси, содержащие информацию о внутренней сети:
    inurl:proxy | inurl:wpad ext:pac | ext:dat findproxyforurl
    Pages containing login portals
    Страницы, содержащие формы входа
    Веб-страницы saplogon:
    intext:«2016 SAP AG. All rights reserved.» intitle:«Logon»
    Various Online Devices
    Принтеры, роутеры, системы мониторинга и т.д
    Найти конфигурационную панель принтера:
    intitle:"hp laserjet" inurl:SSI/Auth/set_config_deviceinfo.htm
    Advisories and Vulnerabilities
    Сайты на уязвимых версиях CMS
    Найти уязвимые плагины, через которые можно загрузить произвольный файл на сервер:
    inurl:fckeditor -intext:«ConfigIsEnabled = False» intext:ConfigIsEnabled

    Дорки чаще ориентированы на поиск по всем сайтам сети интернет. Но ни что не мешает ограничить область поиска на каком-либо сайте или сайтах.
    Каждый запрос к google можно сосредоточить на определённом сайте, добавив к запросу ключевое слово «site:somesite.com». Данное ключевое слово может быть дописано к любому дорку.

    Автоматизация поиска уязвимостей
    Так родилась идея написать простенькую утилиту, автоматизирующую поиск уязвимостей с помощью поисковой системы (google) и опирающуюся на Google Hack Database.

    Утилита представляет из себя скрипт, написанный на nodejs с использованием phantomjs. Если быть точным, то скрипт интерпретируется самим phantomjs.
    Phantomjs — это полноценный веб-браузер без графического интерфейса, управляемый с помощью js-кода и обладающий удобным API.
    Утилита получила вполне понятное название – dorks. Запустив её в командной строке (без опций) получаем короткую справку с несколькими примерами использования:
    image
    Рисунок 1 — Список основных опций dorks

    Общий синтаксис утилиты: dork «команда» «список опций».
    Подробное описание всех опций представлено в таблице 4.

    Таблица 4 – Синтаксис dorks
    Команда
    Опция
    Описание
    ghdb
    -l
    Вывести нумерованный список категорий дорков Google Hack Database
    -c «номер или название категории»
    Загрузить дорки указанной категории по номеру или названию
    -q «фраза»
    Загрузить дорки, найденные по запросу
    -o «файл»
    Сохранить результат в файл (только вместе с опциями  -c|-q)
    google
    -d «дорк»
    Задать произвольный дорк (опция может использоваться много раз, допускается сочетание с опцией –D)
    -D «файл»
    Использовать дорки из файла
    -s «сайт»
    Задать сайт (опция может использоваться много раз, допускается сочетание с опцией –S)
    -S «файл»
    Использовать сайты из файла (перебор дорков будет выполнен по каждому сайту независимо)
    -f «фильтр»
    Задать дополнительные ключевые слова (будет добавлено к каждому дорку)
    -t «количество мс»
    Интервал между запросами к google
    -T «количество мс»
    Таймаут, если встретилась каптча
    -o «файл»
    Сохранить результат в файл (будут сохранены только те дорки, по которым что-то нашлось)

    С помощью команды ghdb можно получить все дорки с exploit-db по произвольному запросу, либо указать целиком всю категорию. Если указать категорию 0 — то будет выгружена вся база (около 4.5 тысяч дорков).

    Список категорий доступных на данный момент представлен на рисунке 2.
    image

    Рисунок 2 — Список доступных категорий дорков GHDB

    Командой google будет произведена подстановка каждого дорка в поисковик google и проанализирован результат на предмет совпадений. Дорки по которым что-то нашлось будут сохранены в файл.
    Утилита поддерживает разные режимы поиска:
    • 1 дорк и 1 сайт;
    • 1 дорк и много сайтов;
    • 1 сайт и много дорков;
    • много сайтов и много дорков;
    Список дорков и сайтов можно задать как через аргумент, так и через файл.

    Демонстрация работы
    Попробуем поискать какие-либо уязвимости на примере поиска сообщений об ошибках. По команде: dorks ghdb –c 7 –o errors.dorks будут загружены все известные дорки категории “Error Messages” как показано на рисунке 3.
    image
    Рисунок 3 – Загрузка всех известных дорков категории “Error Messages”

    Дорки загружены и сохранены в файл. Теперь остается «натравить» их на какой-нибудь сайт (см. рисунок 4).
    image
    Рисунок 4 – Поиск уязвимостей интересуемого сайта в кэше google

    Спустя какое-то время на исследуемом сайте обнаруживается несколько страниц, содержащих ошибки (см. рисунок 5).

    image
    Рисунок 5 – Найденные сообщения об ошибках

    Итог, в файле result.txt получаем полный список дорков, приводящих к появлению ошибки.
    На рисунке 6 представлен результат поиска ошибок сайта.
    image
    Рисунок 6 – Результат поиска ошибок

    В кэше по данному дорку выводится полный бэктрейс, раскрывающих абсолютные пути скриптов, систему управления содержимым сайта и тип базы данных (см. рисунок 7).
    image
    Рисунок 7 – раскрытие информации об устройстве сайта

    Однако стоит учитывать, что не все дорки из GHDB дают истинный результат. Так же google может не найти точного совпадения и показать похожий результат.

    В таком случае разумнее использовать свой персональный список дорков. Например, всегда стоит поискать файлы с «необычными» расширениями, примеры которых приведены на рисунке 8.
    image
    Рисунок 8 – Список расширений файлов, не характерных для обычного веб-ресурса

    В итоге, по команде dorks google –D extensions.txt –f банк, с самого первого запроса google начинает отдавать сайты с «необычными» расширениями файлов (см. рисунок 9).
    image
    Рисунок 9 – Поиск «нехороших» типов файлов на сайтах банковской тематики

    Стоит иметь ввиду, что google не воспринимает запросы длиннее 32 слов.

    С помощью команды dorks google –d intext:”error|warning|notice|syntax” –f университет
    можно поискать ошибки интерпретатора PHP на сайтах учебной тематики (см. рисунок 10).
    image
    Рисунок 10 – Поиск PHP-ошибок времени исполнения

    Иногда пользоваться какой-то одной или двумя категориями дорков не удобно.
    Например, если известно, что сайт работает на движке wordpress, то нужны дорки именно по wordpress. В таком случае удобно воспользоваться поиском Google Hack Database. Команда dorks ghdb –q wordpress –o wordpress_dorks.txt загрузит все дорки по Wordpress, как показано на рисунке 11:
    image
    Рисунок 11 – Поиск дорков, относящихся к Wordpress

    Снова вернемся к банкам и командой dorks google –D wordpress_dords.txt –f банк попробуем найти что-нибудь интересное, связанное с wordpress (см. рисунок 12).
    image
    Рисунок 12 – Поиск уязвимостей Wordpress

    Стоит заметить, что поиск на Google Hack Database не воспринимает слова короче 4 символов. Например, если CMS сайта не известна, но известен язык — PHP. В таком случае можно отфильтровать нужное вручную с помощью пайпа и системной утилиты поиска dorks –c all | findstr /I php > php_dorks.txt (см. рисунок 13):
    image
    Рисунок 13 – Поиск по всем доркам, где есть упоминание PHP

    Поиск уязвимостей или какой-то чувствительной информации в поисковой системе следует искать только в случае если по данному сайту есть значительный индекс. Например, если у сайта проиндексировано 10-15 страниц, то глупо что-либо искать подобным образом. Проверить размер индекса просто — достаточно ввести в строку поиска google «site:somesite.com». Пример сайта с недостаточным индексом показан на рисунке 14.
    image
    Рисунок 14 – Проверка размера индекса сайта

    Теперь о неприятном… Периодически google может запросить каптчу — тут ничего не поделать — её придется ввести. Например, у меня, при переборе категории «Error Messages» (90 дорков) каптча выпала только один раз.

    Стоит добавить, что phantomjs поддерживает работу так же и через прокси, как через http, так и через socks интерфейс. Для включения режима прокси надо раскоментировать соответствующую строку в dorks.bat или dorks.sh.

    Инструмент доступен в виде исходного кода github.com/USSCltd/dorks и для своей работы требует только phantomjs.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 14

      0
      Ничего нет о результатах поиска — как часто, какие наиболее часто встречаемые и т.д.
      Можете рассказать?
        0
        Наиболее часто встречаемые пожалуй из категории «Error messages». Так же удобный собственный дорк – с рисунка 8, на все необычные типы файлов, достаточно часто находит инфу.
        +10
        Астрологи объявили неделю гугл-хакеров, численность скрипт-кидди увеличена вдвое.
          –13
          Жаль не могу плюсануть. Сейчас школота начитается и начнет буянить
            –2
            Школота уже давно знает это Но и был недостаток у оного способа (не знаю как сейчас). Google через какое-то число запросов считал их подозрительными и требовал ввести капчу.
              0
              Ничего, школота вам понаставила минусов, я смотрю. На большее они не способны.
                0
                Ну видимо люди не восстанавливали пачками сайты на джумлах после очередной статьи «Новая уязвимость в плагине к Joomla… для поиска уязвимых сайтов воспользуемся гуглом: inurl:com_*..». Имхо последствия для дырявого горесайтенга вполне на уровне школоты-- удаленные файлы или еще чего, ну там максимум был залит шелл или запилен iframe на какой-нибудь убогий сайт очередного нахера, ну или на древнюю паблик связку сплоитов на бесплатном хостинге(*ушел рыдать в кусты*). А не школоте сайты на джумлах вообще не упирались.
              +6
              объявили неделю гугл-хакеров, численность скрипт-кидди

              Не надо так предвзято относиться, это достаточно важная тема.
              Из практики: проводили внешний аудит сайта крупной конторы (очень крупной). Сама контора использует проги типа «acunetix web vulnerability scanner» и исправно сканирует весь сайт каждый месяц и/или после каждого изменения кода. Но, несмотря на это уязвимость мы все-таки нашли, и именно с помощью google (inurl:domainname.com). Все просто, линк на страницу с уязвимостью был не с самого сайта, а с сайта партнера; так что acunetix туда не дoбирался совсем, а google был в курсе.
              –3
              Печаль. Школота негодует.

              categories element not found
              warn: https://www.exploit-db.com/google-hacking-database/: fail
                0
                Данная ошибка просто означает что страница не загрузилась. Причина – интернет соединение, либо временная недоступность ресурса (строки 363-365).
                  0
                  wget https://www.exploit-db.com/google-hacking-database/
                  --2016-05-11 02:55:47-- https://www.exploit-db.com/google-hacking-database/
                  Resolving www.exploit-db.com (www.exploit-db.com)… 192.124.249.8
                  Connecting to www.exploit-db.com (www.exploit-db.com)|192.124.249.8|:443… connected.
                  HTTP request sent, awaiting response… 200 OK
                  Length: 12275 (12K) [text/html]
                  Saving to: ‘index.html’

                  index.html 100%[==================================================================>] 11.99K --.-KB/s in 0s

                  2016-05-11 02:55:47 (44.5 MB/s) — ‘index.html’ saved [12275/12275]
                    0
                    Прекрасно, пробуйте снова, например dorks.sh ghdb –c 3
                –1
                Spasibo za informatsii.
                  0
                  Так это же Аккордеон!

                  Only users with full accounts can post comments. Log in, please.