Как выкачать забытую .git папку.

  1. Новичок
    O_Ray

    Сообщения:
    44
    Репутация:
    0
    Как выкачать забытую .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-ах тоже частенько встречает как простое задание. В реальной жизни это тоже нередко можно встретить, но будьте аккуратны, не нарушайте закон страны в которой живёте, последствия могут быть печальными.
     
CCv