Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
git-all-secrets — Инструмент для захвата всех git-секретов с использованием нескольких инструментов поиска с открытым исходным кодом | Kitploit
Инструменты/GitHubGitHub/anshumanbh/git-all-secrets
Анализ КодаСбор информацииDevSecOpsОбнаружение Секретов
GitHubanshumanbh/git-all-secrets

git-all-secrets

Инструмент для захвата всех git-секретов с использованием нескольких инструментов поиска с открытым исходным кодом

Репозиторий
1.1k1947 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

git-all-secrets

О программе

git-all-secrets — это инструмент, который может:

  • Клонировать несколько публичных/приватных репозиториев GitHub организации и сканировать их,
  • Клонировать несколько публичных/приватных репозиториев пользователя, принадлежащего организации, и сканировать их,
  • Клонировать один публичный/приватный репозиторий организации и сканировать его,
  • Клонировать один публичный/приватный репозиторий пользователя и сканировать его,
  • Клонировать один публичный/секретный gist пользователя и сканировать его,
  • Клонировать репозитории команды в организации и сканировать их,
  • Всё вышеперечисленное вместе!! О да!! Просто укажите название организации и получите все её секреты. Если вы также хотите получить секреты команды внутри организации, просто укажите название команды вместе с организацией.
  • Клонировать и сканировать репозитории и gists Github Enterprise.

Сканирование выполняется несколькими инструментами с открытым исходным кодом, такими как:

  • truffleHog — сканирует коммиты на наличие строк с высокой энтропией и заданных пользователем регулярных выражений,
  • repo-supervisor — сканирует строки с высокой энтропией в файлах .js и .json.

ПРИМЕЧАНИЕ — при необходимости в будущем можно добавить и другие подобные инструменты! ПРИМЕЧАНИЕ — Сканирование может выполняться всеми инструментами или любым одним из них, указав флаг toolName.

Если для сканирования используются все инструменты, итоговый вывод объединяет результаты всех файлов от всех инструментов в один консолидированный файл.

Начало работы

Самый простой способ запустить git-all-secrets — через Docker, и я настоятельно рекомендую установить Docker, если у вас его ещё нет. После установки Docker:

  • Введите docker run --rm -it abhartiya/tools_gitallsecrets --help, чтобы понять, какие различные флаги он может принимать.
  • Как только вы узнаете, что хотите сканировать, введите что-то вроде docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<>. Вы также можете указать конкретный инструмент для сканирования, введя что-то вроде docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=<>. Допустимые значения — thog и repo-supervisor.
  • Если вы хотите запустить truffleHog с настройками по умолчанию (регулярные выражения) И с высокой энтропией, укажите флаг thogEntropy следующим образом: docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy.
  • После завершения работы контейнера получите ID контейнера, введя docker ps -a.
  • Получив ID контейнера, скопируйте файл с результатами из контейнера на хост с помощью docker cp <container-id>:/root/results.txt ..

Флаги/Опции

  • -token = Персональный токен доступа GitHub. Он нужен, потому что неаутентифицированные запросы к API GitHub быстро достигают ограничения по количеству запросов!

  • -org = Название организации для сканирования. Будет сканировать все публичные репозитории в организации + все репозитории и gists всех пользователей в организации. Если вы используете токен пользователя, являющегося частью этой организации, он также клонирует и сканирует все секретные gists этого пользователя, а также все приватные репозитории в организации, к которым у пользователя есть доступ. Однако он НЕ будет клонировать и сканировать любые приватные репозитории этого пользователя, принадлежащие этой организации. Для сканирования приватных репозиториев пользователей используйте флаг scanPrivateReposOnly вместе с флагом user и SSH-ключом, смонтированным в томе.

  • -user = Имя пользователя для сканирования. Будет сканировать все репозитории и gists этого пользователя. Если предоставленный токен является токеном этого пользователя, секретные gists также будут клонированы и отсканированы. Но будут клонированы и отсканированы только публичные репозитории. Для сканирования приватных репозиториев этого пользователя используйте флаг scanPrivateReposOnly вместе с флагом user и SSH-ключом, смонтированным в томе.

  • -repoURL = HTTPS URL репозитория для сканирования. Будет сканировать только этот репозиторий. Для публичных репозиториев достаточно указать https URL. Однако, если вы хотите сканировать приватный репозиторий, вам нужно указать URL вместе с SSH-ключом, смонтированным в томе, и флагом .

Примечание

  • Флаг token обязателен. Он не может быть пустым.

  • Флаги org, user, repoURL и gistURL не могут быть все пустыми одновременно. Вам нужно указать только одно из этих значений. Если вы укажете все или несколько значений вместе, порядок приоритета будет следующим: org > user > repoURL > gistURL. Например, если вы укажете оба флага -org=secretorg123 и -user=secretuser1 вместе, инструмент сообщит, что ему не нужно ничего вместе со значением org. Чтобы запустить его только для конкретного пользователя, нужно указать только флаг user, а не org.

Сканирование приватных репозиториев

Самый безопасный способ сканировать приватные репозитории — клонировать, используя SSH URL. Для этого нужно разместить соответствующий SSH-ключ, который был добавлен в учётную запись GitHub. У GitHub есть полезная документация по настройке вашей учётной записи. Убедитесь, что этот ключ не имеет парольной фразы. Получив SSH-ключ, просто смонтируйте его в контейнер Docker через том. Это так же просто, как ввести команды ниже:

docker run -it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -user=<> -scanPrivateReposOnly

ИЛИ

docker run -it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -repoURL=<> -scanPrivateReposOnly

Здесь я сопоставляю свой личный SSH-ключ id_rsa_personal, хранящийся локально, с /root/.ssh/id_rsa внутри контейнера, чтобы git-all-secrets пытался клонировать репозиторий через ssh и использовал SSH-ключ, хранящийся по пути /root/.ssh/id_rsa внутри контейнера. Таким образом, вы на самом деле не храните ничего конфиденциального внутри контейнера. Вы просто используете файл с вашего локального компьютера. После уничтожения контейнера он больше не имеет доступа к этому ключу.

Сканирование команды организации

API GitHub ограничивает обстоятельства, при которых сообщается о приватном репозитории. Если вы пытаетесь сканировать организацию с пользователем, который не является администратором, вам может потребоваться указать команду, которая предоставляет пользователю доступ к репозиторию. Для этого используйте флаг teamName вместе с флагом org. Пример ниже:

docker run --it -v ~/.ssh/id_rsa_personal:/root/.ssh/id_rsa abhartiya/tools_gitallsecrets -token=<> -org=<> -teamName <>

Сканирование Github Enterprise

git-all-secrets теперь также поддерживает сканирование Github Enterprise. Если у вас есть собственный Github Enterprise, размещённый за VPN или чем-то подобным, убедитесь, что вы подключены к VPN или находитесь в правильной сети, имеющей доступ к репозиториям Github Enterprise. enterpriseURL — это то, что вам нужно для сканирования ваших репозиториев Github Enterprise. Ниже приведены несколько примеров:

Пример 1:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -repoURL https://github.<org>.com/<user>/<repo>.git

Здесь я монтирую SSH-ключ Github Enterprise в контейнер, затем указываю свой персональный токен доступа, URL предприятия, на который будут отправляться запросы, и репозиторий, который я хочу отсканировать.

Пример 2:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -repoURL https://github.<org>.com/<user>/<repo>.git -toolName thog -thogEntropy

Выше я запускаю только truffleHog против репозитория с настройками энтропии.

Пример 3:

docker run -it -v ~/.ssh/id_rsa_gitenterprise:/root/.ssh/id_rsa -token <token> -enterpriseURL https://github.<org>.com/api/v3 -user <username> -scanPrivateReposOnly

Выше я сканирую только приватные репозитории пользователя, чей токен предоставлен, всеми инструментами (repo-supervisor и thog), но без настройки энтропии truffleHog.

TODO

  • Протестировать функциональность сканирования команды
  • Исправить ошибку Goroutine — НАДЕЮСЬ, СДЕЛАНО!
  • Добавить поддержку сканирования Github Enterprise — СДЕЛАНО!
  • Добавить поддержку клонирования и сканирования приватных репозиториев организации — СДЕЛАНО!
  • Заменить gitsecrets на новую функциональность регулярных выражений в truffleHog — СДЕЛАНО!
  • Добавить поддержку сканирования приватных репозиториев пользователей через SSH-ключи — СДЕЛАНО!
  • Добавить флаг для пропуска сканирования форков — СДЕЛАНО!

Подробности

Возможности

  • Вы можете добавлять свои собственные регулярные выражения в файл rules.json и включать его при выполнении docker run с помощью аргумента -v $(pwd)/rules.json:/root/truffleHog/rules.json.
  • Инструмент ищет некоторые регулярные выражения по умолчанию. При необходимости его также можно настроить на поиск строк с высокой энтропией. Всё это происходит через инструмент truffleHog.
  • Он может искать строки с высокой энтропией в файлах .js и .json с помощью инструмента repo-supervisor.
  • Он сканирует gists пользователей, чего не делают большинство инструментов.
  • Если появится новый хороший инструмент, его можно будет легко интегрировать в git-all-secrets.
  • Он создан для интеграции с другими инструментами и фреймворками. Он принимает несколько входных параметров и создаёт выходной файл с результатами. Довольно просто!
  • Он также поддерживает сканирование организаций/пользователей/репозиториев/gists Github Enterprise.
  • Большинство существующих инструментов созданы для сканирования отдельных репозиториев. Если вы хотите запустить их на нескольких репозиториях, вам придётся написать свой собственный цикл в shell-скрипте или что-то подобное. git-all-secrets может помочь вам сканировать несколько репозиториев за один раз.
  • Теперь вы можете объединять результаты обоих инструментов в JSON-файл, который затем можно использовать в других инструментах/фреймворках автоматизации.

Мотивация

Я просмотрел большое количество инструментов с открытым исходным кодом, которые потенциально можно использовать для поиска секретов в репозиториях GitHub. Некоторые из лучших инструментов, которые я счёл хорошими: gitrob, truffleHog и git-secrets.

Gitrob — это автономный инструмент, который довольно сложно интегрировать с другими инструментами, потому что у него есть собственная база данных и интерфейс для просмотра всех обнаруженных секретов. Он также создаёт огромное количество ложных срабатываний, больше, чем truffleHog. И он не выделяет обнаруженные секреты. Он просто смотрит на файлы и их расширения, а не на фактическое содержимое. Таким образом, хотя Gitrob — отличный инструмент для начала, я бы рекомендовал запускать его время от времени, чтобы понять, как выглядит поверхность атаки, и проверить, изменилась ли она.

Затем есть truffleHog, который ищет секреты в фактическом содержимом файла, анализируя энтропию Шеннона, и выводит результаты на экран. Он принимает URL репозитория или директорию репозитория в качестве аргумента. Это довольно хороший инструмент, хотя у него тоже есть доля ложных срабатываний. Некоторые другие недостатки:

  • Мы не можем использовать его рекурсивно для сканирования директорий, содержащих несколько репозиториев.
  • Нет способа заставить truffleHog идентифицировать секреты, которые соответствуют определённому шаблону, но не имеют достаточно высокой энтропии, т.е. мы не можем заставить его искать секреты, которые мы знаем, но которые не обязательно имеют высокую энтропию, чтобы считаться секретом.
  • Он выводит результаты на экран, что не очень удобно для автоматизации.

Наконец, есть git-secrets, который может помечать такие вещи, как секреты AWS. Лучшая часть — вы также можете добавлять свои собственные регулярные выражения для секретов, которые, как вы знаете, он должен искать. Основной недостаток — он не очень хорошо находит строки с высокой энтропией, как это делает truffleHog. Вы также можете сканировать только конкретную директорию, которая является репозиторием, поэтому рекурсивное сканирование из директории с репозиториями также невозможно.

Итак, как видите, есть достойные инструменты, но их нужно было как-то объединить. Также была необходимость рекурсивно сканировать несколько репозиториев, а не только один. А что насчёт gists? Есть организации и пользователи. Есть репозитории для организаций и пользователей. Также есть gists пользователей. Всё это должно быть отсканировано. И отсканировано таким образом, чтобы это можно было автоматизировать и легко использовать другими инструментами/фреймворками.

Журнал изменений

  • 2/9/19 — Добавлен флаг blacklist для пропуска некоторых имён репозиториев при сканировании. Спасибо @sjqnn за PR. Собрал и опубликовал новый Docker-образ. Удачи!

  • 7/31/18 — Упрощена установка trufflehog с помощью pip. @mhmdiaa исправил ошибку в функции вывода trufflehog, из-за которой объединение и сортировка работали неправильно. Обновлён файл регулярных выражений, добавлены такие вещи, как password. Собрал и опубликовал новый Docker-образ. Удачи!

  • 7/15/18 — Обновлён форк repo-supervisor, так как в оригинальном репозитории были изменения. Пересобран новый Docker-образ с использованием последней версии Trufflehog. Предоставлен файл rules.json, содержащий все регулярные выражения, которые Trufflehog использует для поиска секретов. Добавлена возможность объединять результаты (в JSON) для обоих инструментов с помощью флага -mergeOutput. Значительно уменьшен размер Docker-образа за счёт использования многоступенчатой сборки и dep для управления зависимостями. Огромное спасибо @mhmdiaa за всё это!

  • 12/12/17 — Для некоторых больших репозиториев truffleHog завершается с ошибкой и выходит. Но мы не хотим останавливаться на этом. Мы хотим уведомить пользователя, что сканирование этого репозитория не удалось, и продолжить сканирование других. Теперь это реализовано в последнем Docker-образе.

  • 12/11/17 — Удалён gitsecrets, так как truffleHog теперь поддерживает функциональность регулярных выражений. Простое добавление своих регулярных выражений в файл rules.json и пересборка Docker-образа даёт нам функциональность, которую ранее предоставлял gitsecrets, поэтому необходимость в gitsecrets отпала. Также добавлена поддержка сканирования репозиториев и gists Github Enterprise. @high-stakes помог сделать PR, который (надеюсь) исправляет ошибку Goroutine, ограничивая количество потоков. Наконец, также была добавлена поддержка сканирования приватных репозиториев для организации.

  • 12/08/17 — Удалён мой собственный форк truffleHog. Теперь используется оригинальная версия вместе с функциональностью регулярных выражений truffleHog + режим энтропии. Скоро, я полагаю, мы сможем заменить и gitsecrets, и repo-supervisor только truffleHog, как только некоторые проблемы будут исправлены.

Пожертвования

Если хотите выразить поддержку, мой BTC-кошелёк: 1PtMhXWCcMZCitcDfaEBe7jnV9sjKoNvq7.

Скачать инструмент
ssh
scanPrivateReposOnly
  • -gistURL = HTTPS URL gist для сканирования. Будет сканировать только этот gist. Нет понятия публичного или секретного gist, пока у вас есть URL. Даже если у вас есть секретный gist, если кто-то знает HTTPS URL вашего секретного gist, он также может получить к нему доступ.

  • -output = Имя файла, в который будут сохранены все результаты. По умолчанию — results.txt.

  • -cloneForks = Необязательный булевый флаг для клонирования форков репозиториев организации и пользователя. По умолчанию установлен в 0, т.е. форки не клонируются. Если форки нужно клонировать, значение должно быть 1. Или просто укажите -cloneForks вместе с другими флагами.

  • -orgOnly = Необязательный булевый флаг для пропуска клонирования репозиториев пользователей, принадлежащих организации. По умолчанию установлен в 0, т.е. обычное поведение. Если репозитории пользователей не нужно сканировать, а нужно сканировать только репозитории организации, значение должно быть 1. Или просто укажите -orgOnly вместе с другими флагами.

  • -toolName = Необязательный строковый флаг для указания, какой инструмент использовать для сканирования. По умолчанию установлен в all, т.е. будут использоваться и thog, и repo-supervisor. Допустимые значения: thog или repo-supervisor.

  • -teamName = Имя команды организации, которая имеет доступ к приватным репозиториям для сканирования. Этот флаг не до конца протестирован, поэтому я не могу гарантировать его работоспособность.

  • -scanPrivateReposOnly = Необязательный булевый флаг для указания, хотите ли вы сканировать только приватные репозитории пользователя. Его указание НЕ будет сканировать публичные репозитории пользователя. И вам нужно предоставить SSH-ключ, смонтировав том в контейнер. Кроме того, это работает только с флагами user, repoURL или org.

    При использовании флага org вместе с флагом scanPrivateReposOnly и без флага orgOnly будет сканировать публичные И приватные репозитории этой организации, к которым имеет доступ пользователь (чей токен предоставлен). Затем он продолжит сканировать ТОЛЬКО приватные репозитории пользователя (чей токен предоставлен). Наконец, он продолжит сканировать все публичные и секретные gists этого пользователя (чей токен предоставлен). Вкратце, флаг scanPrivateReposOnly действительно влияет только на флаги user и repoURL.

  • -enterpriseURL = Необязательный флаг для указания URL Github Enterprise, если вы хотите сканировать корпоративные репозитории. Должно быть что-то вроде https://github.org.com/api/v3 вместе с SSH-ключом, смонтированным в контейнер. См. сканирование github enterprise ниже.

  • -threads = Значение по умолчанию 10. Это для ограничения количества потоков, если ваша система недостаточно мощная. В большинстве случаев значение 10 должно подходить.

  • -thogEntropy = Необязательный флаг, который указывает, хотите ли вы получать секреты на основе высокой энтропии от truffleHog или нет. Секреты с высокой энтропией от truffleHog создают МНОГО шума, поэтому, если вы не хотите весь этот шум и запускаете git-all-secrets на большой организации, я рекомендую не указывать этот флаг. По умолчанию установлен в False, то есть truffleHog будет выдавать результаты только на основе регулярных выражений из файла rules.json. Если вы сканируете относительно небольшую организацию с ограниченным набором репозиториев или пользователя с несколькими репозиториями, указание этого флага имеет больше смысла.

  • -mergeOutput = Необязательный флаг для объединения и дедупликации вывода используемых инструментов (в настоящее время truffleHog и repo-supervisor). Значение по умолчанию — False.

  • -blacklist = Имена репозиториев, указанные через запятую, которые НЕ должны сканироваться.

  • При указании флага scanPrivateReposOnly:

    • Необходимо смонтировать том с приватным SSH-ключом в контейнер Docker с помощью флага -v.
    • Его следует использовать всякий раз, когда сканируется приватный репозиторий. Пожалуйста, используйте ssh URL при использовании этого флага, а не https URL.
    • Убедитесь, что используемый токен действительно принадлежит пользователю, чей приватный репозиторий/gist вы пытаетесь сканировать, иначе будут ошибки.
    • SSH-ключ, который вы будете использовать, НЕ должен иметь парольную фразу, если вы хотите, чтобы этот инструмент работал без ручного вмешательства.

    См. сканирование приватных репозиториев ниже.

  • При указании teamName важно, чтобы предоставленный token принадлежал пользователю, который является членом команды. В противном случае могут возникнуть непредвиденные результаты. См. сканирование команды организации ниже.

  • При указании флага enterpriseURL он всегда будет использовать SSH URL, даже если вы укажете https URL репозитория. Всё корпоративное клонирование/сканирование происходит через ssh URL, а не https URL.

  • Как упоминалось выше, убедитесь, что используемый SSH-ключ (для сканирования ssh URL) не имеет парольной фразы.

  • новой
  • 12/07/17 — Обновлена документация с дополнительными подробностями и пояснениями по различным флагам.

  • 12/05/17 — Добавлена поддержка сканирования приватных репозиториев через SSH-ключ. Это была просьба в течение длительного времени, и теперь это стало возможным. Также изменена схема тегов Docker-образа. Теперь последний образ будет иметь тег latest. А все предыдущие версии будут помечены номером. Всё это стало возможным благодаря команде SimpliSafe, и особенно Мэттью Коксу (https://github.com/matthew-cox). Огромное спасибо тебе, Мэтт!

  • 10/14/17 — Собран и опубликован новый образ abhartiya/tools_gitallsecrets:v6. В этом новом образе используется более новая версия git-secrets, а также repo-supervisor, то есть я объединил некоторые изменения из upstream в свой форк вместе с некоторыми дополнительными изменениями, которые я уже внёс в свой форк. Новый образ использует эти изменения, так что всё самое новое и лучшее!* 14.10.17 — Собрал и опубликовал новый образ abhartiya/tools_gitallsecrets:v5. Этот образ исправляет очень глупую и раздражающую ошибку, которая, возможно, приводила к сбою repo supervisor. Изменился способ чтения значений переменных окружения в Dockerfile, из-за чего repo supervisor перестал понимать, какой путь к node использовать. Ад с Node!

  • 29.09.17 — Собрал и опубликовал новый образ с флагом orgOnly — abhartiya/tools_gitallsecrets:v4

  • 22.08.17 — Добавлен переключатель -orgOnly от kciredor: анализирует указанный репозиторий организации и пропускает репозитории пользователя.

  • 26.06.17 — Убрал часть вывода в repo-supervisor, которая печатала ошибки, когда секреты не найдены. Лишний вывод! Собрал и опубликовал новый образ — abhartiya/tools_gitallsecrets:v3

  • 25.06.17 — Добавлен флаг toolName для указания, какой инструмент использовать для сканирования. Собрал и опубликовал новый образ — abhartiya/tools_gitallsecrets:v2

  • 14.06.17 — Добавил repo-supervisor в качестве инструмента сканирования, также обновил и добавил номер версии в docker-образ — abhartiya/tools_gitallsecrets:v1

  • 14.06.17 — Добавлен флаг cloneForks для предотвращения клонирования форков репозиториев организации и пользователя. По умолчанию он равен false. Если вы хотите сканировать форки, просто установите значение 1, т.е. -cloneForks=1