Как стать автором
Обновить

Безопасность сайта по его заголовкам, или что делать, если хочется залезть во внутренности каждого сайта

Время на прочтение2 мин
Количество просмотров18K
Всего голосов 33: ↑29 и ↓4+25
Комментарии31

Комментарии 31

А есть сайт с оценкой A?
Наверняка, но я видел самое лучшее «B»)
И что же это за сайт такой интересный?
Это поисковик уязвимостей что я использую (https://vulners.com/), если бы они настроили «CONTENT-SECURITY-POLICY», у них был бы «A».
На этот сайт расширение у меня C+ показывает.
Observatory by Mozilla показывает A+. Расширение показывает вообще F
Согласен, это баг, исправлю.
НЛО прилетело и опубликовало эту надпись здесь
Глупый вопрос — Вы обновляли страницу перед нажатием? На уже открытых и не обновлённых страницах даже в хроме ничего не покажет — и это нормальная ситуация, у расширения же нет пакетов с этого сайта.
НЛО прилетело и опубликовало эту надпись здесь
Я до конца не уверен, но думаю дело в следующем:
Расширение использует API браузера(google chrome), где оно подписывается на конкретные события. По вашей ссылке расширение, которое помогает устанавливать расширения из магазина google. Я попробовал, и мое расширение установилось без изменений (я открыл в редакторе установленный в Firefox файл и изменений не обнаружил), что натолкнуло меня на мысль, что расширение от googl конвертацию не производит, оно создает что то типа обертки над методами Firefox. Возможно не все методы имеют обертки, или суть в том что я подписываюсь на события браузера chrome, а в Firefox они другие.
НЛО прилетело и опубликовало эту надпись здесь
Для Firefox есть Wappalyzer.
НЛО прилетело и опубликовало эту надпись здесь
Если найденная версия софта не самая свежая и это подсвечивается красным, правила хорошего тона требуют так же дать информацию о текущей, считающейся актуальной версии.
Согласен, хорошая идея
Не забывайте о пользователях enterprise-дистрибутивов — там уязвимости исправляются БЕЗ повышения версии, а отдельным патчем.
> но вместе с тем, он показывает на каком языке он работает, и версия этого языка малость устарела

Это если верить хидерам. Но это же просто буковки и циферки. Я, например, на некоторых серверах специально отдаю «левые» значения в server, x-powered-by и тп, не имеющие отношения к реальному софту. Глупенькие боты радостно бросаются искать дыры в php или апаче, а их там отродясь не стояло :)
Зато тем самым они отлично себя выдают и попадают в бан.
Тема на самом деле важная и как показала проверка различных сайтов актуальная. Молодец что поднял.
UPD а и добавь фишку с обзервера, чтобы было ясно за что снимаются баллы, а что хорошо.
Думаю, можно зеленым подсвечивать headers которые расширение считает валидными. Добавлю.
Хм, ну вот я проверил свой сайт и получил рейтинг F.
«Отлично», но что дальше? Ни одна строчка не подсвечена, куда двигаться для исправления — неясно.
Версию ни PHP ни вебсервера не отдаю, только server: nginx и всё, про PHP ни слова.
Было бы очень неплохо, если бы выдавались рекомендации по исправлению, типа как в Page Speed Insights или SSLLabs.
Да, хорошая идея.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Можно еще немножко расширить функционал и добавить к учету рейтинга факт использования уязвимой версии ПО.
Если использовать запрос на Vulners вот так:

Поисковый запрос:

affectedSoftware.name:"nginx" AND affectedSoftware.version:"1.11.0"


Делаем запрос API

То получаем выхлоп с уязвимостью. Можно использовать параметр «total»: 1 как метрику.
Не на все софты это сработает подобным образом, но на многие.

Вот еще пример для Apache:

(affectedSoftware.name:*apache*) AND (affectedSoftware.version:"2.4.18")


P.S.
Мануал по query лежит вот тут.
Спасибо огромное за пример!
Идея хорошая, но так почему-то находит гораздо меньше. Я пробовал

affectedSoftware.name:«php» AND affectedSoftware.version:«5.3.3»

и просто

php-5.3.3

в последнем случае найдено намного больше (хоть и не все по делу).

Когда запрос идет без конкретизации полей, то работает механика обычного полнотекстового поиска.
А вот с affectedSoftware можно пользоваться уже точными сравнениями.

Хоть и не очень удобный, но правильный путь это посмотреть на все коллекции. Потом выбрать один элемент из нее, к примеру на Nginx.

Дальше там есть малозаметная но полезная кнопка «JSON source»:
image

И посмотреть как выглядит разметка для автоматизации сканирования:

"affectedSoftware": [
{
"operator": "le",
"version": "1.9.9",
"name": "nginx"
}
],


Соответственно, «operator» подразумевает оператор сравнения, который надо применить между целевой версией софта и указанной в advisory. Если оператор выдал True, значит уязвимость присутствует.

Для поиска по конкретным полям в запросах надо применять разделитель "."
То есть, если мы хотим искать по name из примера, то affectedSoftware.name:«запрос»

Теперь понял, спасибо)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории