Эта страница содержит незащищенный контент

Ищем уязвимости с помощью 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. Запустив её в командной строке (без опций) получаем короткую справку с несколькими примерами использования:

Рисунок 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.

Рисунок 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 дорков) каптча выпала только один раз.

Быть взрослым — значит понимать, что ты не сможешь

защитить тех, кого любишь, от всего.

Сериал «Касл»

Некоторые вещи нельзя защитить, как бы ты ни хотел. Такова реальность.

Герой при заклятом враге

— Мы здесь, чтобы защитить тебя!
— Вы здесь, чтобы защитить меня? Тогда у меня действительно проблемы…

Волчонок/Оборотень

Незащищённость как качество личности – неспособность приумножить начальное благочестие добродетельным образом жизни и тем самым позволить себе находиться в умиротворённом, спокойном состоянии.

Молодая пара наслаждалась медовым месяцем и уже хотела предаться любовным утехам в гостиничном номере, как в комнату влез грабитель в маске. Он начертил мелом круг на полу и сказал мужу: — Стань в круг. Если попробуешь выйти за его пределы, я прострелю тебе голову. Пока муж стоял в кругу, грабитель схватил всё, что попадалось под руку. Он забросил добычу в мешок и уже хотел уходить, как заметил, что на кровати лежит прелестная невеста, прикрытая всего лишь одной простынёй. Он сделал ей знак, включил радио, заставил танцевать с собой, поцеловал её и изнасиловал бы, не окажи она бешеное сопротивление. Когда, наконец, грабитель скрылся, женщина повернулась к мужу и завопила: — Что ты за мужик такой? Стоишь в середине этого круга и ничего не предпринимаешь, когда меня почти насилуют! — Нельзя говорить, что я ничего не делал, — возразил мужчина. — И что же ты делал? — Я бросал ему вызов! Каждый раз, когда он поворачивался ко мне спиной, я выставлял ногу за пределы круга!

Человек, воспринимающий себя как тело, не может чувствовать себя защищенным. Какая может быть защищённость, если он думает, что смерть – это когда тухлое мясо кидают в вырытую яму. И всё! Финал! Остаётся только память близких. Когда и они умирают, не остается ничего. Пройдет двести – триста лет, и старое кладбище снесут.

Всё материальное тленно. Под влиянием могучей силы – Времени, не может устоять ничто. Вопрос времени, когда то или иное тело постепенно разрушится и погибнет. Можно призвать всех ученых мира, всех лучших врачей планеты, соорудить вокруг себя сотни линий Маннергейма, нанять блестящих телохранителей, но всё тщетно: никто не может победить Время, никто не сможет защититься от него.

Глупо и нечестно давать кому-то гарантии защищённости. «Не обещайте деве юной любови вечной на земле», — пел Окуджава. Можно с большими оговорками и условиями обещать защищённость на какой-то отрезок времени и то, нужно понимать, что никто тебе не обещает утром, что ты будешь жив вечером, и наоборот никто не может тебя заверить, что, ложась спать, ты проснешься завтра. Смерть также естественна, как и жизнь. Человек внезапно смертен. С этим ничего не поделаешь. Поэтому люди с материалистическим сознанием никогда не могут чувствовать себя защищёнными.

Когда человек воспринимает себя как духовную сущность, как вечно существующую душу, он не только становится бесстрашным, но и чувствует себя защищённым. Он знает, что его охраняет Бог. Он знает, что душа – это вечность, счастье и знание. Как искра Божья, она не подлежит разрушению. Она духовна. Перед ней Время бессильно. Душа ничего не боится. Она волнуется лишь тогда, когда попадает под дурное влияние ненасытных чувств, сумбурного, вожделенного ума, разбухшего ложного эго и безвольного разума, не способного жестко контролировать вакханалию чувств, ума и эго.

В этом мире человеку ничего не принадлежит. В гроб с собой не заберешь деньги, машины, драгоценности, квартиры и яхты. Всё, чем он обладает при жизни, принадлежит Богу. Человеку богатство, материальные блага даны во временное пользование, в аренду, даны, чтобы он об этом заботился и рационально использовал. Как ни защищай, вечного пользования этими благами не получится. Как глупо выглядит скупец, сидящий на сундуках с золотом, живущий впроголодь: умирает он, и всё его богатство переходит к ненавистным наследникам или государству.

Словом, человек материального мира, живущий под влиянием энергии страсти или невежества, может мечтать лишь о временной защищённости. Но и тут всё далеко не просто.

Незащищённость – следствие отсутствия благочестия и добродетельного образа жизни в настоящем. Благочестие (Благочестивость) как качество личности – способность иметь большой запас добрых дел, которые принесли реальную пользу людям; соизмерять свои поступки с Богом, жить в строгом соответствии с Божьими заповедями.

Многие думают, что защищённость напрямую зависит от числа телохранителей и качества работы службы безопасности. Это поверхностный, иллюзорный подход к проблеме защищённости. Если у человека на небесном счете благочестия высвечивает красный остаток, его не спасёт никакое охранное агентство. Американский бизнесмен Дональд Трамп, представляя людей, находящихся под влиянием энергии страсти и невежества, пишет: «Мы только кажемся себе цивилизованными. На самом деле мир жесток, а люди безжалостны. Они могут вам улыбаться, но за улыбками прячется желание вас прикончить. Хищники в джунглях убивают ради пропитания — и только люди убивают забавы ради. Даже друзья рады нанести удар в спину: им нужна ваша работа, ваш дом, ваши деньги, ваша жена — и ваша собака, в конце концов. Враги и того хуже! Вы должны уметь защищаться. Мой девиз: «Нанимай лучших — и не доверяй им ни в чем»».

Иногда преступник совершает несколько преступлений, и ему всё сходит до поры до времени с рук. Благочестие хорошее. С прошлых жизней накопил достаточно много благочестия, чтобы в этой непотребные поступки сходили с рук. А бывает: вор украл и тут же в тюрьму. То есть даже не было стадии: украл – выпил – в тюрьму. Без всяких выпил. Даже бутылки пива не удалось выпить за чужой счёт. Сразу в тюрьму. Это говорит об отсутствии у человека благочестия.

Когда у человека нет начального сальдо благочестия, пришедшего из прошлых воплощений, и он, к тому же начинает вести неправедную жизнь, Силы Вселенной тут же вмешиваются и различными способами осуществляют наказание. То есть незащищённым человек становится, когда его отказывается защищать Бог. Он не богоугоден. Делай добрые дела, пополняй свой небесный счёт благочестия, и ты постепенно станешь богоугодным человеком, то есть Силы Вселенной возьмут тебя под свою защиту.

Переход на https – правим смешанный контент

Переход на https далеко не у всех получился гладкий. Давайте разбираться в тех особенностях и трудностях перехода, которые нам предстоит решить.

Начнем с того, что в первую очередь нам надо выяснить — какие проблемы мешают нашему сайту чисто перейти с открытого протокола на закрытый. Как это сделать?

Я предлагаю в первую очередь открыть Ваш сайт в браузере Google Chrome. Именно этот браузер очень хорошо показывает все детали проблем.

Итак, открываем в браузере ту страницу, которая отмечена желтым замочком. Надо сказать, что в Хром желтый замочек не показан, а показана буква «i» в кружочке.

Нажмите на этот кружочек и на выпадающем окне пройдите по ссылке — Подробнее.
Откроется окно, где мы сможем посмотреть все ошибки.


Окно браузера разделится на два поля. На первом будет показан Ваш сайт, на правом — вся информация, касающаяся проблем данной страницы. Сколько у нас проблем — видно в правом верхнем углу — на данном скриншоте — 6 «желтых»

Обратите внимание на три раздела страницы, отмеченные чекбоксами: первые два зеленые, а последний, который я выделила красной рамкой — красный. Именно здесь и кроются наши ошибки. Называется эта группа — смешанный контент.

Что это такое?

По сути, это содержимое страницы загружается как по протоколу https, так и по открытому протоколу. То есть оно — содержимое, смешанное. И не полностью защищено. Так как сертификат SSL распространяется только на протоколы https. И если часть контента подгружена по http, это значит, что есть дыры в защите.

Значит если Вы хотите получить зеленый замочек — надо почистить контент.

Смешанный контент делится на активный и пассивный.

Пассивный (от англ. Mixed passive content или Mixed display content — отмечен желтым) — это в основном рисунки, видео, аудио… То есть тот контент, который не влияет на функциональность сайта. Его можно заменить другим подобным контентом, может с неправильным содержанием… И это все.

Активный (от англ. Mixed Active Content — отмечен красным) — достаточно опасный смешанный контент. В этом случае возможно изменение информации на странице, либо скачивание вводимых данных клиентом или посетителем сайта. Обычно такой контент блокируется браузером либо системой. Но умельцев в настоящее время множество. Поэтому от такого контента надо избавиться.

В принципе — все очень просто. Надо заменить все протоколы http на https. Или перевести абсолютные ссылки — ссылки с указанием протокола, на относительные. Такие ссылки, в которых протокол не указан и робот имеет право самостоятельно принять решение о защищенности ссылки.

Вот так выглядит абсолютная

1 http://vachdomen.ru/news/ https://vachdomen.ru/news/

А вот так относительная

1 //vachdomen.ru/news/

Есть вопросы с картинками. Картинка загружается на сайт по ссылке

1 <img src=»http://domain.com/libraries/photos/background.png»>

Убираем протокол и ссылка будет выглядеть вот так

То есть Вам предстоит очень большая ручная работа.
Но есть и хорошая новость. Я свой «рыжий» сайт почистила за пару часов. Как? Все расскажу и покажу в видео.

Теперь о плагинах

1. Плагин, который должен быть установлен на Вашем сайте и быть активированным всегда CloudFlare Flexible SSL

2. Плагин для быстрого поиска ссылок с открытым протоколом и их исправления Better Search Replace

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *