Особенности поиска в Яндекс
Синтаксис запросов в Яндекс отличается от Google: операторы называются по-другому и логика их работы отличается, аналоги каких-то гугловских операторов отсутствуют вовсе, а какие-то, напротив, являются уникальными только для Яндекса.
Пожалуй, главным отличием поиска Яндекса является свой собственный индекс, с огромным охватом сайтов на русском языке. А также свои собственные алгоритмы определения релевантности (насколько страница соответствует поисковому запросу) и ранжирования (как высоко в результатах поисковой выдачи должна находиться страница).
И хотя операторы поиска в Яндекс работают иначе чем в Google, они довольно гибкие для составления в том числе и сложных запросов по нескольким критериям. Я покажу несколько примеров Яндекс-дорков, с помощью которых можно найти пароли и другую очень интересную для пентестера информацию.
Итак, давайте познакомимся с продвинутыми приёмами поиска Яндекс, которые в любом случае пригодятся всем, кто что-то ищет в Интернете (то есть всем) – даже если вы не занимаетесь расследованиями на основе открытых источников.
Язык запросов Яндекс для расширенного поиска
Поиск по одному слову
Яндекс ищет не только по точной форме слова, но и по различным его формам (единственное-множественное число, различные падежи, различные глагольные формы и другое). В справке это не указано, но очевидно, что поиск производится также по синонимам слова
Поиск по фразе
Ищутся страницы, содержащие все слова из фразы. Как и для отдельных слов, поиск выполняется по различным словоформам, синонимам
Например, запрос
недорогие авиабилеты
Найдёт страницы, содержащие фразы «недорогие авиабилеты», «дешёвые авиабилеты», «поиск дешёвых авиабилетов» и другие.
Поиск слова в заданной форме
Если вы не хотите, чтобы при поиске использовались различные формы слова либо его синонимы, то перед этим словом поставьте восклицательный знак (
!):
!недорогие авиабилеты
Допустимо использовать несколько операторов
! в рамках одного запроса.
На самом деле, результаты поиска по-прежнему содержат документы с синонимами – возможно, этот оператор работает не всегда или влияют другие факторы.
Важные слова в поисковом запросе
дёшево +доехать +суварнабхуми +сукумвит
Необычная концепция – будет выполнен поиск документов, в которых обязательно присутствует выделенное знаком плюс (
+) слово. Допустимо использовать несколько операторов
+ в одном запросе.
Т.е. по приведённому поисковому запросу обязательно будут найдены страницы, содержащие слова «доехать» «суварнабхуми» «сукумвит» и, возможно, слово «дёшево».
Поиск по точной цитате
Точно также как в Гугл, вы можете искать страницы, содержащие точную цитату. Для этого поместите её в кавычки.
"безопасно хранить свои денежные средства в батах"
Будут найдены страницы (документы) которые содержат все слова поискового запроса, именно в той последовательности и в точной форме, как они идут в самом запросе.
Поиск по цитате с пропущенным словом (словами)
Один оператор
* соответствует одному пропущенному слову.
Вы можете использовать это только при поиске по точной цитате – т.е. внутри двойных кавычек.
"без труда не * и рыбку из пруда"
Правда иногда Яндекс издевается:
В общем, я так и не вспомнил, какое там именно слово…
Поисковый запрос с альтернативами
SVO | DME | трактор
Вы можете выполнить поиск страниц, в которых присутствует любое слово из запроса – это ещё называют логическим ИЛИ. Для этого используется оператор, обозначенный символом труба (
|). Операторы отделяется от слов пробелами.
Допустимо использовать несколько операторов
|в одном запросе.
Напомню, что в Google можно использовать оператор OR либо также использовать трубу.
Поиск любой из фраз
"большой адронный коллайдер" | "смешные кошки"
Вы можете использовать ИЛИ (
|) вместе с поиском по точно совпадающим фразам.
В результате будут найдены страницы, содержащие фразу "большой адронный коллайдер", а также страницы с фразой "смешные кошки".
Использование скобок для группировки
обучение (java | PHP)
По умолчанию, логическое ИЛИ разбивает поисковый запрос на две части – то, что стоит до этого оператора и то, что стоит после него.
Т.е. запрос
обучение java | PHP
привёл бы к тому, что поисковая система стала бы искать страницы с фразой «обучение java» и страницы с фразой «PHP». Но если нам нужно, чтобы были найдены страницы с фразой «обучение java» и страницы с фразой «обучение PHP», то нам нужно использовать скобки для отделения обязательной части от альтернативной.
Поиск документов, в которых отсутствует заданное слово
лечение аппендицита -самостоятельно
При поиске по фразе из нескольких слов, вы можете указать те слова, которые не должны встречаться на найденных страницах. Т.е. в результатах поиска будут те документы, на которых есть искомая раза, но без нежелательного слова.
В качестве оператора отрицания используется знак минус (
-). Исключается только слово, перед которым стоит оператор. При этом исключаемое слово должно размещаться в конце поискового запроса.
Допустимо использовать несколько операторов минус (
-) в одном запросе.
Видимо, минус работает только со словами для поиска, но не работает с операторами, которые будут рассмотрены далее.
Продвинутые операторы
Уточнить поисковый запрос можно с помощью данных, относящихся к служебной информации о страницах. Например, можно ограничить поиск по:
- типу файла
- хосту
- URL
- языку страницы
- дате
Синтаксис для уточнения поиска по данным параметрам называется «
документные операторы».
Документный оператор рекомендуется указывать после текста поискового запроса и отделять от него пробелом. В одном запросе одновременно можно использовать несколько операторов, так же разделяя их пробелом. Например,
поиск site:
www.yandex.ru mimedf
При использовании операторов, где в качестве параметра задается имя хоста (
url,
hostи
rhost), следует указывать главное зеркало сайта. Например,
host:lib.ru
а не
host:
www.lib.ru
Поиск по страницам, размещенным по заданному адресу (URL)
Для поиска по определённому адресу страницы используется оператор
url: со следующим синтаксисом:
url:полный URL
или:
url:имя хоста/папка/*
Регистр букв в адресе не учитывается.
Чтобы найти все документы, адреса которых начинаются с заданного значения, поставьте в конце URL символ
*.
URL в запросе следует заключить в кавычки, если он содержит один из следующих символов:
Обратите внимание, что запрос:
уязвимость sql инъекция url:hackware.ru
Ничего не найдёт! Поскольку поиск будет проводиться именно по домашней странице hackware.ru (а не по всему сайту). Чтобы выполнялся поиск по всему сайту используйте звёздочку:
уязвимость sql инъекция url:hackware.ru/*
Параметр
url: предназначен в первую очередь для поиска по определённым разделам сайта, например:
уязвимость sql инъекция url:hackware.ru/?cat=*
Будет выполнен поиск фразы «уязвимость sql инъекция» только по страницам вида
hackware.ru/?cat= (категории).
Для поиска по всему целевому хосту используйте один из следующих параметров.
Поиск по всем поддоменам и страницам указанного сайта
Синтаксис:
site:URL сайта
Пример:
уязвимость sql инъекция site:hackware.ru
Будут найдены документы, содержащие фразу «уязвимость sql инъекция» и размещенные на поддоменах и страницах сайта hackware.ru.
Поиск по страницам, размещенным на данном хосте
Синтаксис:
host:имя хоста в формате
www.домен второго уровня.домен верхнего уровня
Идентичен оператору
url: с заданным именем хоста.
Пример:
sqli host:tools.kali.org
Будут найдены документы, содержащие слово «sqli» и размещенные на хосте tools.kali.org (один из поддоменов сайта kali.org).
Другой вариант поиска страниц на определённому субдомене – это использование оператоора
rhost:
Идентичен оператору
host:, но имя хоста записывается в обратном порядке: сначала домен верхнего уровня, затем домен второго уровня и т. д.
Для поиска по всем поддоменам заданного домена в конце URL поставьте символ
*.
Синтаксис:
rhost:имя хоста в формате домен верхнего уровня.домен второго уровня.www
Вариант с подстановочным символом:
rhost:имя хоста в формате домен верхнего уровня.домен второго уровня.*
Пример, вывод всех страниц поддомена tools.kali.org:
rhostrg.kali.tools
Показать все страницы любых субдоменов kali.org, начинающихся на букву
a:
rhostrg.kali.a*
Поиск по доменам
Синтаксис:
domain:домен
Обратите внимание, что домен может быть любого уровня. То есть можно указать домен верхнего уровня, такой как
ru,
net,
org,
name,
com и т. д. Можно указать домен второго уровня, например,
hackware,
zalinux,
yandex,
google и т. д. Также можно указать домен любого другого уровня.
Пример поиска по домену верхнего уровня:
information security labs domain:edu
Будет найдена фраза «
information security labs» только на сайтах доменной зоны
edu.
Поиск по домену других уровней. Этот вариант будет искать любые домены второго и другого уровней с именем hackware на которых встречается слово «уязвимости»:
уязвимости domain:hackware
Будет выполнен поиск по доменом верхнего уровня
tools и других уровней с этим же названием:
sqli domain:tools
Поиск по типу файлов
Синтаксис:
mime:тип файла
Поиск по документам в заданном типе файла. Поддерживаются следующие типы файлов:
- doc
- docx
- html
- odg
- odp
- ods
- odt
- pdf
- ppt
- pptx
- rtf
- swf
- xls
- xlsx
Пример:
анкета загранпаспорт mime:doc
Будут найдены документы в формате
doc, содержащие слова «
анкета» и «
загранпаспорт».
Можно указать сразу несколько расширений для поиска, но обязательно объедините их логическим ИЛИ (
|):
site:vasexperts.ru (mimedf | mime:doc | mime:docx)
Поиск по страницам на заданном языке
Синтаксис:
lang:язык
Поддержижваются языки:
- русский (ru)
- украинский (uk)
- белорусский (be)
- английский (en)
- французский (fr)
- немецкий (de)
- казахский (kk)
- татарский (tt)
- турецкий (tr)
Пример:
passport lang:en
Будут найдены документы на английском языке, содержащие слово «passport».
Поиск по дате и диапазону дат
А вот в этом поиск Яндекса точно обогнал Google – у Гугла очень невнятный поиск по датам изменения документа, практически, можно сказать что его нет, т.к. результаты странные.
Вы можете выполнять поиск по страницам с ограничением по дате их последнего изменения.
Варианты поиска по дате
Изменение страницы соответствует указанной дате:
date:ГГГГММДД
Изменение страницы находится в интервале:
date:ГГГГММДД..ГГГГММДД
Изменение страницы находится до или после указанной даты (, >=):
date:20141110
Дата изменения соответствует 2014 году:
фестиваль date:2014**
Допустим, я хочу узнать, какие страницы сайта hackware.ru изменились в период с 10 июня 2018 года по 10 июля 2018 года:
site:hackware.ru date:20180610..20180710
Я хочу найти любые документы на любом сайте, в которых присутствует точная фраза "алексей милосердов" и которые изменены в период с 5 июля 2018 года по 10 июля 2018 года:
"алексей милосердов" date:20180705..20180710
Всего один документ с адресом
https://student.knastu.ru/upload/wor...iZYTcKgZzK.pdf
Кстати, можно посмотреть, какие ещё студенческие работы там есть:
site:student.knastu.ru/upload/works/
Поиск по заголовку
Вы можете искать по заголовку веб-страниц. Но в Яндекс это реализовано немного необычно – вы можете искать ИЛИ по заголовку ИЛИ по документу, но не одновременно и там и там.
Чтобы выполнить поиск по названию страницы, вы можете воспользоваться формой расширенного поиска:
https://yandex.ru/search/advanced. Этот интерфейс расширенного поиска больше не работает, попробуйте альтернативный вариант:
https://suip.biz/ru/?act=yandex-search
Либо к адресу страницы с результатами поиска добавьте
&zone=title
Возможно имеется специальный оператор, чтобы не нужно было менять URI, но я не нашёл информации об этом. Напрашивается аналогия
zone:title, но, на мой взгляд, это не работает.
Если вы об этом что-то знаете – то пишите в комментариях.
Поиск по точной форме слова
Мы уже рассмотрели этот вопрос – если фраза для поиска помещена в кавычки, то на страницах ищется точное соответствие. В противном случае ищутся все формы и синонимы слов.
Если вы хотите искать по точным формам слов, но вам не важен их порядок и слова не обязательно должны составлять одну фразу, то, по идее, каждое слово можно поместить в кавычки. Ещё один вариант – это отредактировать URI. Если там
wordforms=all, то выполняется поиск по всем формам, а если
wordforms=exact – то ищутся точные совпадения.
Яндекс дорки?
Поиск в Яндекс, безусловно, может оказаться полезным для исследователей на основе открытых источников. В том числе, при поиске утечек.
А как насчёт поиска в Яндекс для хакеров и пентестеров? Хотя язык запросов Яндекса менее гибок, всё равно и через Яндекс можно найти разнообразную чувствительную информацию и файлы, не предназначенные для всеобщего доступа.
Брутфорс поддоменов по одной букве
Мы уже рассматривали как
с помощью Гугл перечислеть поддомены. Там же я говорил про плюсы и минусы этого способа. В Яндекс тоже есть такая возможность. Причём, для тех сайтов, которые я попробовал, Яндекс знает больше субдоменов чем Google!
Для этого можно использовать оператор
rhost: Напомню, при нём домен/поддомен пишется в обратном порядке, т.е. начиная с домена верхнего уровня, затем домен второго уровня, затем поддомен третьего уровня и так далее.
Самое интересное – используя подстановочный символ
* мы можем искать по части поддомена – к слову, Google не воспринимает частично написанные домены вообще.
Допустим, меня интересуют поддомены сайта
kali.org. Я делаю запросы вида:
rhostrg.kali.a*
rhostrg.kali.b*
rhostrg.kali.c*
rhostrg.kali.d*
rhostrg.kali.e*
rhostrg.kali.f*
rhostrg.kali.g*
rhostrg.kali.h*
rhostrg.kali.i*
…
rhostrg.kali.t*
…
…
В результате я нашёл несколько новых субдоменов, которые не смог найти с помощью Гугл:
- buildd-amd64.kali.org
- eros.kali.org
- eos.kali.org
- iris.kali.org
- images.kali.org
Можно создать скрипт и при правильно написанном алгоритме можно получить весь список субдоменов за несколько десятков запросов либо сотен запросов (в зависимости от выбранного алгоритма) – это может конкурировать с брут-форсом субдоменов по словарю. Самое важное – кроме Яндекса запросы никуда больше не делаются.
Аналогично для offensive-security.com с помощью Яндекса я нашёл субдомены, о которых не знал Гугл:
rhost:com.offensive-security.d*
- download.offensive-security.com
rhost:com.offensive-security.f*
- forums.offensive-security.com
rhost:com.offensive-security.i*
- images.offensive-security.com
rhost:com.offensive-security.s*
- support.offensive-security.com
- screenconnect.offensive-security.com:8040
Поиск папок с открытым листингом
"Index of /" "Parent Directory"
В таких папках может быть что угодно – от публичных файлообменников до личных фото архивов.
Иногда там можно найти файлы со списком паролей:
Причём разных пользователей:
Пробуйте разные названия папок. Например, поиск папки
adminлистингом файлов:
"Index of /admin" "Parent Directory"
Поиск папки
mail(иногда в них лежат электронные письма):
"Index of /mail" "Parent Directory"
Вариантов много, посмотрите также
примеры для Google.
Поиск админок и страниц аутентификации
"Вход" url:."ru/admin"
Или
"Вход" url:."ru/login"
Пробуйте свои варианты!
Поиск ключей для подключения по SSH
"Index of /.ssh/"