Как выкачать забытую .git папку. Прошлые заметки по данной теме. Заметка по Web №2. В данной заметке мы рассмотрим не совсем уязвимость, а больше косяк администраторов и разработчиков. Почти любая более-менее серьёзная разработка введётся с помощью системы контроля версий, думаю, если вы увлекаетесь ИБ и ИТ, то наверняка слышали и даже примерно представляете как это выглядит. Немного теории. При деплоее, то есть развёртывании разрабатываемого приложения, часто просто копируют репозиторий и в итоге в корень сайта помещается директория .git, которая содержит историю коммитов и с помощью неё можно восстановить часть или весь исходный код, не факт, что он будет актуальным, но вы можете многое получить, например захардкоженные учётные данные или что-то в этом роде. Для того, чтобы самостоятельно не изучать устройство папки .git, можно использовать уже готовые инструменты для дампа и распаковки содержимого данной директории. Вот пример хорошего проекта, который содержит в себе 3 самодостаточных инструмента - https://github.com/internetwache/GitTools Его и рекомендуется использовать. Практический пример. Для того, чтобы рассмотреть небольшой пример, нам нужно создать локальный репозиторий в папке, которая будет отображаться на веб-сервер. По стандарту это - /var/www/html для apache2. Для того, чтобы создать новый репозиторий просто пишем следующую команду git init Теперь у нас есть директория .git, однако пока никаких коммитов не было, по этому в ней будет только несколько байт метаданных и информации о репозитории. Создадим простой index.html и положим в него флаг Теперь добавим его в репозиторий и закоммитим. git add . git commit -m "first commit" Если мы обратимся к веб-странице и посмотрим исходный код, то увидим там в комментарии флаг Теперь изменим файл и сделаем новый коммит Уберём флаг из файла и сделаем коммит. Теперь при обращении к странице мы не увидим флага. Отлично, теперь у нас уже есть два коммита и мы можем попробовать выкачать директорию .git. Стоит отметить, что данная директория есть в стандратных списках проверки утилиты dirb, однако один из самых верных способов проверки - это обращение по пути "http://<host>/.git/HEAD". Будет получено примерно следующее. Попробуем сдампить с помощью выше упомянутых инструментов. Хорошо, мы получили закодированные объекты, которые представляют собой коммиты и части файлов (в нашем случае всего одного файла). Теперь нам надо распаковать их с помощью Extractor. Отлично, было найдено два коммита и мы получили две версии файла "index.html". Как можно заметить, один из файлов это прошлая версия нашего исходника и таким образом мы можем получить какие-то чувствительные данные или выкачать исходники. В ctf-ах тоже частенько встречает как простое задание. В реальной жизни это тоже нередко можно встретить, но будьте аккуратны, не нарушайте закон страны в которой живёте, последствия могут быть печальными.