Розкритий каталог .git
Від усього вашого сховища до завантаження залишається лише одна URL-адреса.
Що таке Розкритий каталог .git?
Розгортання, яке копіює робоче дерево в кореневу мережу, копіює .git разом із ним. У цій папці зберігаються всі коміти та всі версії кожного файлу, а не лише поточні. Будь-хто, хто може подати запит, може перебудувати все дерево вихідних кодів, включаючи секрети, видалені в пізніших комітах. Ви надішлете запит /.git/ на живому сайті, запустіть git-dumper, щоб реконструювати джерело, і прочитаєте з нього пароль бази даних. Потім ви заблокуєте шлях на веб-сервері, розгортаєте створені артефакти замість сховища та обертаєте те, що витік.
Що ви дізнаєтесь у Розкритий каталог .git
- Розпізнайте відкритий каталог .git: розгортання, яке надсилає весь репозиторій до кореневого веб-сайту, перетворює загальнодоступну URL-адресу на повне джерело та розкриття історії
- Простежте атаку від списку /.git/, який можна переглядати, і .git/config, який можна читати, до git-dumper pull, який реконструює вихідне дерево, до секретів, відновлених із зафіксованої конфігурації
- Зрозумійте, що .git зберігає всю історію комітів, тому облікові дані, які були змінені або видалені під час пізніших комітів, залишаються доступними для відновлення з відкритого сховища
- Застосуйте надійне виправлення: розгорніть створені артефакти, а не репозиторій, щоб .git ніколи не вийшов на робочий стан, і ротуйте всі облікові дані, виявлені під час експозиції
- Відрізняйте доступ до сховища на стороні сервера в Інтернеті від секретів, що зберігаються в історії комітів розміщеного сховища, і розглядайте блокування URL-адреси /.git як тимчасовий проміжок, а не як повне виправлення
Розкритий каталог .git — Кроки навчання
-
Збільште розмір мішені
Сьогодні Боб націлений на Verlune, компанію з аналітики продуктів, інформаційна панель якої працює на app.verlune.io. Він починає там, де будь-хто міг би, на публічному сайті, щоб відчути, що компанія постачає, перш ніж шукати шлях. Сам додаток мало що дає. Цікаві помилки зазвичай містяться в шляхах, на які сайт ніколи не збирався відповідати.
-
Шлях, який не повинен відповідати
Боб запитує /.git/ безпосередньо на тому самому хості, шлях, який добре налаштований сервер ніколи б не відкрив. Замість 404 сервер відповідає списком каталогу, який можна переглядати. Внутрішні файли репозиторію Git, HEAD , config , objects , усі знаходяться в корені веб-сайту, обслуговуються як будь-яка інша сторінка.
-
Це справжнє сховище
Боб клацає файл config у списку. Він читається як звичайна конфігурація Git: віддалене джерело, гілка за замовчуванням, налаштування користувача. Це не бродячий файл, який хтось залишив. Весь робочий репозиторій надіслано до робочої версії, тому його повну історію можна завантажити лише за одне завантаження.
-
Реконструювати джерело
Боб не клацає список вручну. Він спрямовує інструмент для створення дампа на відкриту папку, яка обходить об’єкти, які обслуговує, і відновлює робоче дерево так, як воно існує в репозиторії. За кілька секунд він має повний вихідний код програми Verlune на своїй машині, історію та все інше.
-
Облікові дані в джерелі
Після перебудови джерела Боб відкриває конфігурацію відновленої бази даних. Найціннішими речами в репозиторії, який витік, рідко є сам код, це секрети, збережені разом з ним. Йому не потрібно придивлятися.
-
Пароль і ключ
Відновлений файл передає Бобу два живих секрети у вигляді звичайного тексту: рядок підключення до робочої бази даних, включений пароль, і ключ API для API адміністратора. Обидва були закріплені прямо в вихідному коді, тому їх витік через відкрите сховище.
-
Підключіться до витоку облікових даних
Витік облікових даних — це лише теорія, поки вона щось не відкриває. Відновлена конфігурація передає Бобу повний рядок з’єднання з базою даних, хост, ім’я, користувача та пароль, тож він відкриває клієнт SQL і з’єднується безпосередньо з робочою базою даних Verlune. Ні експлойту, ні вкраденого сеансу: база даних довіряє паролю, наданому репозиторієм.
-
Стіл клієнтів відкритий
Підключено. Боб виконує очевидний запит, і робоча таблиця клієнтів повертається повністю: імена, електронні адреси, плани та виставлення рахунків. Він читає записи клієнтів Verlune прямо з бази даних, не маючи власного облікового запису.
-
Перевірка знань
Ви щойно спостерігали, як одна загальнодоступна URL-адреса передає все дерево вихідних кодів і його секрети. Зафіксуйте чому.
-
Сповіщення про моніторинг
Ви володієте конвеєром веб-розгортання Verlune. Вночі спрацювала перевірка моніторингу, яка стежить за конфіденційними шляхами у виробництві: вона отримала .git/config на app.verlune.io і отримала 200. Операції безпеки надіслали вам це відкриття електронною поштою.
Охоплення стандартів безпеки
CWE
- CWE-527 Exposure of Version-Control Repository to an Unauthorized Sphere
- CWE-548 Exposure of Information Through Directory Listing
MITRE ATT&CK
- T1213.003 Data from Information Repositories: Code Repositories
CIS Controls
- CIS 16 Application Software Security
- CIS 4 Secure Configuration of Enterprise Assets and Software
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security