• XSS.stack #1 – первый литературный журнал от юзеров форума

прочее GitLeaks - Шерстим историю репозиториев

leax

floppy-диск
Пользователь
Регистрация
15.07.2025
Сообщения
2
Реакции
0
1. GitLeaks - Что такое, и с чем едят

Bash:
┌─○───┐
│ │╲  │
│ │ ○ │
│ ○ ░ │
└─░───┘


Здравствуйте случайные посетители, сегодня хочу рассказать вам о инструменте с говорящим названием - gitleaks
Если коротко - инструмент создан для поиска случайно оставленных паролей, ключей, токенов, и все остальные тому подобные секреты.
логично будет сказать что крупные и малые компании заботятся о том чтобы никакие ключи не попадали в открытые репозитории GitHub, с одной стороны это верно, но с другой, на практике, оказывается большое колличество людей не совсем понимают как работают репозитории и их история на Git, благодаря этому gitleaks имеет право существовать, и даже приносить пользу для вас.

Данный инструмент не обязательно применять в целях кражи чужих данных, вы можете проверять свои репозитории на наличие таких забытых паролей или ключей, провести ревизию своих старых репозиториев, так-же его вполне можно применить в целях Bug Bounty, а так-же для анализа форкнутых репозиториев.

Типы секретов которые ищет GitLeaks:
  • API-ключи Google, AWS, Azure, Discord, Telegram, GPT, и даже строки которые просто очень похожи на ключи
  • Потанцевальные логины и пароли в коде
  • SSH ключи private key, и тому подобные структуры
  • Строки подключения баз данных, таких как mongodb, mysql, postgresql
  • JWT - токены, и другие сессионные токены
  • А так-же если вы более менее понимаете с чем имеете дело, можно сделать кастомные паттерны, или правила.
2. Как работает GitLeaks
И так, теперь перейдём к устройтсву данного инструмента, устроен он достаточно просто, но от того не становится бесполезным.
Инструмент прочёсывает весь репозиторий, включая историю коммитов, и ищет там все типы секретов что были упомянуты выше. gitleaks использует набор регулярных выражений, некие шаблоны которые помогают ему понять, как обычно выглядят те или иные ключи, так-как зачастую каждый из них немного отличается друг от друга.

Конкретно говоря, вот что проверяет gitleaks в работе:
  • Файлы в основной рабочей директории
  • Всю git-историю, старые, удалённые, файлы коммиты и ветки.
  • Коммит-сообщения, иногда даже в них могут хранится приватные данные.
  • Под раздачу попадают даже имена файлов, по типу key.txt config_backup.env password,txt и т.п

Сам gitleaks написан на языке Go, я с ним работал крайне мало, но лесные отзывы о нём позволяют понять, что инстурмент способен работать с большими репозиториями без особых проблем.(и конечно моя практика показала, что даже очень большие репозитории, не вызывают проблем).

Так-же считаю нужным упомянуть о весьма важном пункте который есть в Gitleaks, а именно, фильтры по времени, определённым веткам и коммитам, что позволит вам не сканить совсем уж всю древню историю репозитория, а например исключительно данные за последний год/месяц/день.

3. Запуск шайтан-машины Gitleaks
Вот мы и пришли к самому интересному разделу данной темы, как использовать этот инструмент:
Установка у него достаточно простая, на долго мы тут останавливаться на будем, в случае с линукс можно установить одной командой
Bash:
curl -sSL https://github.com/gitleaks/gitleaks/releases/latest/download/gitleaks-linux-amd64 -o gitleaks && chmod +x gitleaks
В случае если вы предпочитаете окна, переходим в релиз и скачиваем .exe https://github.com/gitleaks/gitleaks/releases
При делании можно добавить его в PATH, или добавить в папку с путём

Пример запуска
1. Проверка текущей директории, клонируем репозиторий, закидываем туда .exe в случае с виндовс, или просто открываем консоль.
Bash:
gitleaks detect --source . --report-path=report.json
Команда очень простая, и думаю для всех ясна. --scource показываем инструменту что ищем именно в этой папке.---report-path указываем инструменту где оставить репорт.

2. Если мы не хотим хранить у себя огромные репозитории постоянно:
Bash:
gitleaks detect --source=gitleaks.git --report-path=gitleaks_remote_report.json
Инструмент проверяет его, и удаляет после проверки, оставляя только вывод его работы.

3. Проверка только свежих данных(в примере 2 недели)
Bash:
gitleaks detect --source . --log-opts="--since=2.weeks"
Тут говорить тоже особо нет о чём, дату можно менять на например 1.month или полную дату 2024-12-01

4. Использование кастомного конфига
Рекомендую использовать исключительно в случае когда вы понимаете что ищете, и знаете как правильно сказать что вы ищете инструменту, простейший пример с дискорд токеном:
gitleaks detect --source . --config=myrules.toml

Сам кастомный конфиг выглядит так:
Bash:
[[rules]]
description = "Discord Token"
regex = '''[MN][A-Za-z\d]{23}\.[\w-]{6}\.[\w-]{27}'''
tags = ["discord", "token", "custom"]

5. Так-же можно запустить проверку только для текущих файлов(без истории git)
Bash:
gitleaks detect --no-git --source .
Полезно в случае если .git уже удалили, или у тебя есть дамп.

6. --verbose Добавит вывод сразу в консоль в прямом эфире.


4. Недостатки в работе от меня
Обфусцированные секреты gitleaks вам не найдёт, если токен разнесён на части "abc" + "cba" + "adc" он вам не помощник (впрочем такое встречается крайне редко)

Если файл зашифрован, или в bin инструмент его так-же пропустит.

Не все кастомные ключи попадут в отчёт, некоторые не популярные форматы инструмент может пропускать. В таких случаях рекомендую писать свои правила-конфиги.

Репозитории без истории git тоже встречаются, в таком случае он будет смотреть исключительно текущие файлы.

Бывают случайные сработки, строка была похожа на ключ, UUID или ID не имеющие ценности, но самая частая проблема, это тестовые токены, тестовые ключи, и всё остальное что ищет gitleaks только тестовые. К сожалению от этого не убежать никуда, но будьте внимательны, иногда даже тестовые токены или ключи, работают в продакшене.

5. Вывод
Gitleaks, инструмент простой, и грубой силы, и часто это работает лучше, чем витиеватые способы найти те или иные данные. Инструмент не самый точный, бывают ложные сработки, но если вы хоть раз находили рабочие токены в публичных репозиториях, то вы поймёте в чём заключается его ценность.
Особых танцев с бубном он не требует, подойдёт в использование даже для новичков, разобраться совсем не сложно, даже в написании собственных правил для него.
На удивление, сегодня всё ещё можно заработать, или получить доступ к чему-то интересному с помощью такого простого прямолинейного инструмента. Потому я советую вам добавить его в свой арсенал, ведь инструмент очень даже не плохой.

С вами был Leax, желаю вам удачи, и благодарю за прочтение данной темы.
 
Последнее редактирование модератором:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх