Особенности поиска в Яндекс Синтаксис запросов в Яндекс отличается от 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:<ГГГГММДД Дата изменения страницы указана частично: date:ГГГГ** Примечание. Год изменения указывается обязательно. Месяц и день можно заменить символом *. Примеры, в которых ищется слово «фестиваль» в документах, для которых дата изменения соответствует 10.10.2014: фестиваль date:20141010 Дата изменения находится в интервале между 10.10.2014 и 10.11.2014 включительно: фестиваль date:20141010..20141110 Дата изменения позднее 10.11.2014: фестиваль 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/works/__5dDvrTYvFwt9Z5YrqV5PRc0jiZYTcKgZzK.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/"
А что вы думаете по поводу новых апдейтов Яндекса, который они недавно анонсировали в своем часовом рекламном ролике? Вроде, изначально опираются на алгоритмы гугла, но обучают ИИ по-своему. Как все это в итоге повлияет на выдачу?