Главная » Хабрахабр » 390k. вебсайтов с открытой папкой .git

390k. вебсайтов с открытой папкой .git

В июле исследователь безопасности Владимир Смитка решил проверить интернет на предмет наличия открытых папок .git после того, как недавно был проведен подобный аудит для интернет доменов Чехии и Словакии.

leak

Напомню, 9 лет назад точно такая же история была с российским сегментом интернета пораженным синдромом открытой .svn. Как говорится: «никогда такого не было, и вот опять». Далее представлены результаты кропотливой работы чешского исследователя, инструментарий и методы.

Так выглядит дерево типичного проекта. Злоумышленник может почерпнуть довольно много критически важной для безопасности сайта информации из директории .git.

├── HEAD
├── branches
├── config
├── description
├── hooks
│ ├── pre-commit.sample
│ ├── pre-push.sample
│ └── ...
├── info
│ └── exclude
├── objects
│ ├── info
│ └── pack
└── refs ├── heads └── tags

Там могут хранится пароли и ключи доступа к различным API, базам данных и вынесенным в облако службам.

Для того, чтобы удостовериться в том, что сайт не подвержен уязвимости следует открыть страницу домен/.git/HEAD. Часто, как и положено, попытка открыть папку .git выдает HTTP ошибку 403, но причина всего лишь в отсутствии index.html / index.php и прав автоматической индексации папки, в то время как отдельные файлы все еще доступны.

Этот файл содержит ссылку на текущую ветку проекта.

$ cat .git/HEAD
ref: refs/heads/master

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

На все, про все ушло 250 долл. Не смотря на всю сложность и амбициозность задачи, затраты в денежном эквиваленте оказались скромными. США.

Сервера

По его словам, его выбор не пал на AWS по той причине, что полная стоимость услуги с учетом ожидаемых гигантских объемов трафика, значительного дискового пространства и высоких нагрузок на CPU, не поддавалась простой калькуляции. Смитка арендовал для проекта 18 VPS и 4 физических сервера. Цена же арендованных VPS была фиксирована известна наперед.

Список доменов

В основу списка легли текстовые логи проекта OpenData Rapid7 в формате JSON.

Схема базы данных Forward DNS

, "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "timestamp": { "$id": "/properties/timestamp", "type": "string", "description": "The time when this response was received in seconds since the epoch" }, "name": { "$id": "/properties/name", "type": "string", "description": "The record name" }, "type": { "$id": "/properties/type", "type": "string", "description": "The record type" }, "value": { "$id": "/properties/value", "type": "string", "description": "The response received for a record of the given name and type" } }
}

После некоторой фильтрации TLD и доменов второго уровня в списке все еще оставалось более 230 миллионов записей.

Далее базу данных разделили на блоки по 2 миллиона записей и распределили нагрузку по различным серверам с помощью PHP приложения.

Софт

Попытка использования для этих целей Requests и Urllib3 успехом не увенчалась, из которых первый вполне мог бы сгодиться, но исследователь не разобрался с тайм-аутами в документации. В качестве рабочей лошадки выступил Python обвешанный библиотеками асинхронной связи asyncio с aiohttp. Второй же неважно справлялся с перенаправлением доменов и из-за этого довольно скоро исчерпал на серверах память.

Для опознания платформы, профиля уязвимых сайтов Смитка использовал утилиту WAD, основанной на базе данных Wappalyzer — расширение для веб браузера, позволяющее определять используемые на странице технологии.

Также были использованы простые утилиты командной строки вроде GNU Parallels для того, чтобы ускорить время исполнения обработчика и предотвратить остановку сценария из-за одного зависания.

cat sites.txt | parallel --bar --tmpdir ./wad --files wad -u {} -f csv

Сканирование продолжалось 2 недели, в итоге исследователь:

  • обнаружил 390 тыс. уязвимых веб сайтов;
  • собрал 290 тыс. адресов электронной почты;
  • оповестил 90 тыс. адресатов о найденной уязвимости.

В ответ на свои старания Смитка получил:

  • 18 тыс. ошибок доставки сообщения;
    • около 2000 благодарственных писем;
    • 30 ложных срабатывай с honeypot систем;
    • 1 угроза позвонить в полицию Канады;

platform

Однако, если нормализовать результат относительной доле того или иного ЯП, то PHP уступает лидерство Python и Node.js. Самым популярным языком программирования оказался PHP. Впрочем непонятно насколько достоверной может быть такая статистика определения доли рынка данного языка программирования.

Список популярности веб серверов возглавляет Apache, на втором месте Nginx, а китайский клон Nginx Tengine внезапно оказался на третьем месте.

Самой популярной ОС оказалась Ubuntu, далее Debian, а CentOS на третьем месте.

OS

Номинация CMS практически оказалась театром одного актера, и этим актером является WordPress с 85% долей всех обнаруженных платформ.

Починить уязвимость несложно.

.htaccess

RewriteRule "(^|/)\.(?!well-known\/)" - [F]

.nginx

location ~ /\.(?!well-known\/) { deny all;
}

apache22.conf

<Directory ~ "/\.(?!well-known\/)"> Order deny,allow Deny from all
</Directory>

apache24.conf

<Directory ~ "/\.(?!well-known\/)"> Require all denied
</Directory>

Caddyfile

status 403 /blockdot
rewrite { r /\.(?!well-known\/) to /blockdot
}


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Больше всех пахала лошадь, но председателем колхоза так и не стала

Мне стало интересно понять профит от этих штук. В последнее время в мобильном сообществе часто можно услышать про Flutter, React Native. В итоге было создано 4 (одинаковых с точки зрения выполняемых функции) приложения: нативное Android, нативное iOS, Flutter, React Native. ...

Бесплатная трансляция DotNext 2018 Moscow

Меньше недели осталось до конференции DotNext 2018 Moscow: она пройдет в конгресс-парке гостиницы «Рэдиссон Ройал Москва» 22-23 ноября. Между докладами будут вестись интервью с ключевыми спикерами конференции. По традиции, прямо на YouTube будет открыта бесплатная онлайн-трансляция первого зала (ссылка спрятана ...