Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
git-all-secrets — Una herramienta para capturar todos los secretos de git aprovechando múltiples herramientas de búsqueda de git de código abierto. | Kitploit
Herramientas/GitHubGitHub/anshumanbh/git-all-secrets
Análisis de CódigoRecopilación de InformaciónDevSecOpsDetección de SecretosTop en Detección de Secretos #14
GitHubanshumanbh/git-all-secrets

git-all-secrets

Una herramienta para capturar todos los secretos de git aprovechando múltiples herramientas de búsqueda de git de código abierto.

Ver Repositorio
1.1k1945hace 7 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

git-all-secrets

Acerca de

git-all-secrets es una herramienta que puede:

  • Clonar múltiples repositorios públicos/privados de GitHub de una organización y escanearlos,
  • Clonar múltiples repositorios públicos/privados de GitHub de un usuario que pertenece a una organización y escanearlos,
  • Clonar un solo repositorio público/privado de una organización y escanearlo,
  • Clonar un solo repositorio público/privado de un usuario y escanearlo,
  • Clonar un solo gist público/privado de un usuario y escanearlo,
  • Clonar los repositorios de un equipo dentro de una organización y escanearlos,
  • ¡Todo lo anterior junto! ¡Oh sí! Simplemente proporcione el nombre de una organización y obtenga todos sus secretos. Si también desea obtener secretos de un equipo dentro de una organización, solo mencione el nombre del equipo junto con la org.
  • También clona y escanea repositorios y gists de Github Enterprise.

El escaneo se realiza mediante múltiples herramientas de código abierto como:

  • truffleHog: escanea commits en busca de cadenas de alta entropía y expresiones regulares proporcionadas por el usuario,
  • repo-supervisor: escanea cadenas de alta entropía en archivos .js y .json

NOTA: Se pueden agregar más herramientas en el futuro, si se desea. NOTA: El escaneo se puede realizar con todas las herramientas o con cualquiera de ellas especificando la bandera toolName.

Si se utilizan todas las herramientas para escanear, la salida final de la herramienta combina la salida de todos los archivos de todas las herramientas en un único archivo de salida consolidado.

Comenzando

La forma más fácil de ejecutar git-all-secrets es mediante Docker y recomiendo encarecidamente instalar Docker si aún no lo tiene. Una vez que tenga Docker instalado,

  • Escriba docker run --rm -it abhartiya/tools_gitallsecrets --help para comprender las diferentes banderas que puede tomar como entrada.
  • Una vez que sepa lo que desea escanear, escriba algo como docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<>. También puede especificar una herramienta en particular para usar en el escaneo escribiendo algo como docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=<>. Las opciones son thog y repo-supervisor.
  • Si desea ejecutar truffleHog con la expresión regular predeterminada Y la configuración de alta entropía, proporcione la bandera thogEntropy de esta manera: docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy.
  • Después de que el contenedor termine de ejecutarse, recupere el ID del contenedor escribiendo docker ps -a.
  • Una vez que tenga el ID del contenedor, obtenga el archivo de resultados del contenedor al host escribiendo docker cp <container-id>:/root/results.txt .

Banderas/Opciones

  • -token = Token de acceso personal de GitHub. Lo necesitamos porque las solicitudes no autenticadas a la API de GitHub pueden alcanzar el límite de velocidad bastante rápido.

  • -org = Nombre de la organización a escanear. Esto escaneará todos los repos públicos en la organización + todos los repos y gists de todos los usuarios en la org. Si está utilizando un token de un usuario que es parte de esta org, también clonará y escaneará todos los gists secretos pertenecientes a ese usuario, así como todos los repos privados en esa org a los que el usuario tenga acceso. Sin embargo, NO clonará ni escaneará ningún repositorio privado de este usuario que pertenezca a esta org. Para escanear repositorios privados de usuarios, use la bandera scanPrivateReposOnly con la bandera user junto con la clave SSH montada en un volumen.

  • -user = Nombre del usuario a escanear. Esto escaneará todos los repos y gists de este usuario. Si el token proporcionado es el token del usuario, también se clonarán y escanearán los gists secretos. Pero solo se clonarán y escanearán los repos públicos. Para escanear repositorios privados de este usuario, use la bandera scanPrivateReposOnly con la bandera user junto con la clave SSH montada en un volumen.

  • -repoURL = URL HTTPS del repositorio a escanear. Esto escaneará solo este repositorio. Para repos públicos, mencionar la URL https del repositorio será suficiente. Sin embargo, si desea escanear un repositorio privado, debe proporcionar la URL ssh junto con la clave SSH montada en un volumen y la bandera scanPrivateReposOnly.

  • -gistURL = URL HTTPS del gist a escanear. Esto escaneará solo este gist. No existe el concepto de gist público o secreto siempre que tenga la URL. Incluso si tiene un gist secreto, si alguien conoce la URL HTTPS de su gist secreto, también puede acceder a él.

Nota

  • La bandera token es obligatoria. No puede estar vacía.

  • Las banderas org, user, repoURL y gistURL no pueden estar todas vacías al mismo tiempo. Debe proporcionar solo uno de estos valores. Si proporciona todos o múltiples valores juntos, el orden de precedencia será org > user > repoURL > gistURL. Por ejemplo, si proporciona ambas banderas -org=secretorg123 y -user=secretuser1 juntas, la herramienta se quejará de que no necesita nada junto con el valor org. Para ejecutarlo solo contra un usuario en particular, solo necesita proporcionar la bandera user y no la bandera .

Escaneo de Repositorios Privados

La forma más segura de escanear repositorios privados es clonar usando las URL SSH. Para lograr esto, se debe colocar una clave SSH apropiada que haya sido agregada a un Usuario de Github. GitHub tiene documentación útil para configurar su cuenta. Asegúrese de que esta clave no tenga ninguna frase de contraseña configurada. Una vez que tenga la clave SSH, simplemente móntela en el contenedor Docker a través de un volumen. Es tan simple como escribir los siguientes comandos:

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

O

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

Aquí, estoy mapeando mi clave SSH personal id_rsa_personal almacenada localmente a /root/.ssh/id_rsa dentro del contenedor para que git-all-secrets intente clonar el repo a través de ssh y use la clave SSH almacenada en /root/.ssh/id_rsa dentro del contenedor. De esta manera, realmente no está almacenando nada sensible dentro del contenedor. Solo está usando un archivo de su máquina local. Una vez que se destruye el contenedor, ya no tiene acceso a esta clave.

Escaneo de un Equipo de Organización

La API de GitHub limita las circunstancias en las que se informa un repositorio privado. Si se intenta escanear una Organización con un usuario que no es administrador, es posible que deba proporcionar el equipo que proporciona acceso al repositorio al usuario. Para hacer esto, use la bandera teamName junto con la bandera org. El ejemplo está a continuación:

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

Escaneo de Github Enterprise

git-all-secrets ahora también admite el escaneo de Github Enterprise. Si tiene su propio Github Enterprise alojado detrás de una VPN o algo similar, asegúrese de estar conectado a la VPN oa la red correcta que tenga acceso a los repositorios de Github Enterprise. La enterpriseURL es lo que necesitará para escanear sus repositorios de Github Enterprise. A continuación, se muestran algunos ejemplos:

Ejemplo 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

Aquí, estoy montando mi clave SSH de github enterprise en el contenedor, seguida de mi token de acceso personal, la URL empresarial a la que se enviarán las solicitudes y el repo que quiero escanear.

Ejemplo 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

Arriba, ahora solo estoy ejecutando truffleHog contra el repositorio con la configuración de Entropía.

Ejemplo 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

Arriba, estoy escaneando solo los repositorios privados del usuario cuyo token se proporciona con todas las herramientas (repo-supervisor y thog), pero sin la configuración de entropía de truffleHog.

TODO

  • Probar la funcionalidad de escaneo de equipos
  • Corregir el error de Goroutine - ¡ESPERO QUE ESTÉ HECHO!
  • Soporte para escanear Github Enterprise ¡HECHO!
  • Soporte para clonar y escanear repositorios privados de una org - ¡HECHO!
  • Reemplazar gitsecrets por la nueva funcionalidad de Regex en truffleHog - ¡HECHO!
  • Agregar soporte para escanear repositorios privados de usuario a través de claves SSH - ¡HECHO!
  • Agregar bandera para evitar escanear forks - ¡HECHO!

Detalles

Características

  • Puede agregar sus propias expresiones regulares en el archivo rules.json e incluirlo al ejecutar docker run usando el argumento -v $(pwd)/rules.json:/root/truffleHog/rules.json.
  • La herramienta busca algunas expresiones regulares predeterminadas. Si es necesario, también se puede configurar para cadenas de alta entropía. Todo esto sucede a través de la herramienta truffleHog.
  • Puede buscar cadenas de alta entropía en archivos .js y .json a través de la herramienta repo-supervisor.
  • Escanea los gists de los usuarios, algo que la mayoría de las herramientas no hacen.
  • Si hay una nueva herramienta que es buena, se puede integrar en git-all-secrets sin mucho esfuerzo.
  • Está diseñado para la integración con otras herramientas y marcos de trabajo. Toma algunos parámetros de entrada y produce un archivo de salida con los resultados. ¡Bastante sencillo!
  • También admite el escaneo de orgs/usuarios/repos/gists de Github Enterprise.
  • La mayoría de las herramientas disponibles están hechas para escanear repositorios individuales. Si desea iterar sobre múltiples repositorios, tendría que escribir su propio bucle for en un script de shell o algo similar. git-all-secrets puede ayudarlo a escanear múltiples repositorios de una sola vez.
  • Ahora puede fusionar las salidas de ambas herramientas en un archivo json que luego se puede usar en otros tipos de herramientas/marcos de automatización.

Motivación

Examiné una gran cantidad de herramientas de código abierto que podrían usarse potencialmente para buscar secretos en repositorios de github. Algunas de las mejores herramientas que consideré buenas son: gitrob, truffleHog y git-secrets.

Gitrob está diseñado para ser una herramienta independiente que es bastante difícil de integrar con otras herramientas porque tiene su propia base de datos e interfaz de usuario para ver todos los secretos descubiertos. También produce una tonelada de falsos positivos, más que truffleHog. Y, realmente no resalta los secretos descubiertos. Solo mira los archivos y sus extensiones, no el contenido real. Por lo tanto, aunque Gitrob es una gran herramienta para comenzar, recomendaría ejecutarla de vez en cuando para comprender cómo se ve la superficie de ataque y ver si ha cambiado.

Luego, está truffleHog que busca secretos en el contenido real del archivo observando la entropía de Shannon e imprime la salida en la pantalla. Toma una URL de repositorio o un directorio de repositorio como argumento. Esta es una herramienta bastante buena aunque tiene su parte de falsos positivos. Algunas de las otras desventajas son:

  • No podemos usarla de forma recursiva para escanear directorios que contienen múltiples repositorios.
  • No hay forma de usar truffleHog para identificar secretos que siguen un cierto patrón pero no tienen una entropía lo suficientemente alta, es decir, no podemos hacer que busque secretos que conocemos pero que no necesariamente tienen una entropía alta para ser considerados como un secreto.
  • Imprime la salida en la pantalla, por lo que no es realmente útil para la automatización como tal.

Finalmente, está git-secrets que puede marcar cosas como secretos de AWS. La mejor parte es que también puede agregar sus propias expresiones regulares para los secretos que sabe que debe buscar. Una desventaja importante es que no hace un buen trabajo encontrando cadenas de alta entropía como lo hace truffleHog. También solo puede escanear un directorio en particular que sea un repositorio, por lo que tampoco hay escaneo recursivo desde un directorio de repositorios.

Entonces, como puede ver, hay herramientas decentes disponibles, pero de alguna manera tenían que combinarse. También existía la necesidad de escanear de forma recursiva múltiples repositorios y no solo uno. ¿Y qué hay de los gists? Hay organizaciones y usuarios. Luego, hay repositorios para organizaciones y usuarios. También hay gists de usuarios. Todos estos deberían ser escaneados. Y escaneados de tal manera que puedan automatizarse y ser consumidos fácilmente por otras herramientas/marcos.

Registro de cambios

  • 2/9/19 - Se agregó la bandera blacklist para omitir algunos nombres de repositorios durante el escaneo. Gracias a @sjqnn por el PR. Se construyó y publicó una nueva imagen Docker. ¡GLHF!

  • 31/7/18 - Se simplificó la instalación de trufflehog usando pip. @mhmdiaa corrigió un error con respecto a la función de salida de trufflehog donde no se fusionaba y ordenaba correctamente. Se actualizó el archivo de expresiones regulares para incluir cosas como password. Se construyó y publicó una nueva imagen Docker. ¡GLHF!

  • 15/7/18 - Se actualizó el fork de repo-supervisor porque el upstream tenía algunos cambios. Se reconstruyó una nueva imagen Docker con la última versión de Trufflehog. Se proporcionó el archivo rules.json que contiene todas las expresiones regulares que Trufflehog usa para encontrar secretos. Se agregó la capacidad de fusionar salidas (en json) para ambas herramientas usando la bandera -mergeOutput. Se redujo drásticamente el tamaño de la imagen Docker mediante el uso de compilaciones de múltiples etapas y dep para gestionar dependencias. ¡Un gran agradecimiento a @mhmdiaa por todo esto!

  • 12/12/17 - Para algunos repos grandes, truffleHog falla y sale. Pero no queremos detenernos ahí. Queremos notificar al usuario que el escaneo falló para ese repo y continuar escaneando los otros repos. Esto ahora está implementado en la última imagen Docker.

  • 11/12/17 - Se eliminó gitsecrets porque truffleHog ahora admite funcionalidad de expresiones regulares. Simplemente agregando sus expresiones regulares en el archivo rules.json y reconstruyendo la imagen Docker básicamente nos dará la funcionalidad que gitsecrets proporcionaba anteriormente, por lo que ya no es necesario gitsecrets. También agregué soporte para escanear repos y gists de Github Enterprise. @high-stakes ayudó a obtener un PR que (con suerte) corrige el error de Goroutine al limitar la cantidad de hilos. Finalmente, también se agregó soporte para escanear repositorios privados de una organización.

Donar

Si quieres mostrar algo de cariño, mi dirección de billetera BTC es 1PtMhXWCcMZCitcDfaEBe7jnV9sjKoNvq7.

Descargar herramienta
  • -output = Este es el nombre del archivo donde se almacenarán todos los resultados. Por defecto, es results.txt.

  • -cloneForks = Esta es una bandera booleana opcional para clonar forks de repos de organizaciones y usuarios. Por defecto, está establecida en 0, es decir, no se clonan forks. Si se deben clonar forks, este valor debe establecerse en 1. O simplemente mencione -cloneForks junto con otras banderas.

  • -orgOnly = Esta es una bandera booleana opcional para omitir la clonación de repositorios de usuarios que pertenecen a una org. Por defecto, está establecida en 0, es decir, comportamiento normal. Si no se deben escanear los repos de usuario y solo se deben escanear los repos de la org, este valor debe establecerse en 1. O simplemente mencione -orgOnly junto con otras banderas.

  • -toolName = Esta es una bandera de cadena opcional para especificar qué herramienta usar para el escaneo. Por defecto, está establecida en all, es decir, se usarán thog y repo-supervisor para el escaneo. Los valores son thog o repo-supervisor.

  • -teamName = Nombre del equipo de la organización que tiene acceso a repositorios privados para escanear. Esta bandera no está completamente probada, por lo que no puedo garantizar su funcionalidad.

  • -scanPrivateReposOnly = Esta es una bandera booleana opcional para especificar si desea escanear repositorios privados de usuario o no. Mencionar esto NO escaneará los repositorios públicos de usuario. Y debe proporcionar la clave SSH montando el volumen en el contenedor. Además, esto solo funciona con la bandera user, la bandera repoURL o la bandera org.

    Cuando se menciona la bandera org junto con la bandera scanPrivateReposOnly y sin la bandera orgOnly, escaneará los repos públicos Y privados que pertenecen a esta org a los que el usuario tenga acceso (cuyo token se proporciona). Luego continuará escaneando SOLO los repositorios privados del usuario (cuyo token se proporciona). Finalmente, continuará escaneando todos los gists públicos y secretos de este usuario (cuyo token se proporciona). En resumen, la bandera scanPrivateReposOnly solo afecta realmente a las banderas user y repoURL.

  • -enterpriseURL = Bandera opcional para proporcionar la URL de Github Enterprise, si desea escanear repositorios empresariales. Debe ser algo como https://github.org.com/api/v3 junto con la clave SSH montada en el contenedor. Consulte escaneo de github enterprise a continuación.

  • -threads = El valor predeterminado es 10. Esto es para limitar el número de hilos si su sistema no es lo suficientemente potente. En la mayoría de los casos, dejarlo en 10 debería estar bien.

  • -thogEntropy = Esta es una bandera opcional que básicamente indica si desea obtener secretos basados en alta entropía de truffleHog o no. Los secretos de alta entropía de truffleHog producen MUCHO ruido, así que si realmente no desea todo ese ruido y si está ejecutando git-all-secrets en una organización grande, recomendaría no mencionar esta bandera. Por defecto, está establecida en False, lo que significa que truffleHog solo producirá resultados basados en las expresiones regulares en el archivo rules.json. Si está escaneando una org bastante pequeña con un conjunto limitado de repos o un usuario con pocos repos, mencionar esta bandera tiene más sentido.

  • -mergeOutput = Bandera opcional para fusionar y deduplicar la salida de las herramientas utilizadas (actualmente truffleHog y repo-supervisor). El valor predeterminado es False.

  • -blacklist = Nombres de repositorios proporcionados como valores separados por comas que NO deben escanearse.

  • org
  • Al especificar la bandera scanPrivateReposOnly:

    • Se debe montar un volumen que contenga la clave SSH privada en el contenedor Docker usando la bandera -v.
    • Debe usarse cada vez que se escanee un repositorio privado. Use la URL ssh al usar la bandera y no la URL https.
    • Asegúrese de que el token que se utiliza realmente pertenezca al usuario cuyo repositorio/gist privado está tratando de escanear; de lo contrario, habrá errores.
    • La clave SSH que utilizará NO debe tener una frase de contraseña configurada si desea que esta herramienta funcione sin intervención manual.

    Consulte escaneo de repositorios privados a continuación.

  • Al especificar teamName, es importante que el token proporcionado pertenezca a un usuario que sea miembro del equipo. De lo contrario, pueden ocurrir resultados inesperados. Consulte escaneo de un equipo de organización a continuación.

  • Al especificar la bandera enterpriseURL, siempre considerará la URL SSH incluso si proporciona la URL https de un repositorio. Toda la clonación/escaneo empresarial se realiza mediante la URL ssh y no mediante la URL https.

  • Como se mencionó anteriormente, asegúrese de que la clave SSH que se utiliza (para escanear la URL ssh) no tenga ninguna frase de contraseña configurada.

  • 08/12/17 - Se eliminó mi propio fork de truffleHog. Ahora uso la versión upstream junto con la nueva funcionalidad de expresiones regulares de truffleHog + modo de entropía. Pronto, creo que podemos reemplazar tanto gitsecrets como repo supervisor solo con truffleHog una vez que se solucionen algunos problemas.

  • 07/12/17 - Actualicé la documentación con más detalles y explicaciones sobre las diferentes banderas.

  • 05/12/17 - Integré soporte de escaneo para repositorios privados mediante clave SSH. Esto ha sido una solicitud durante mucho tiempo y ahora es posible hacerlo. También cambié el esquema de etiquetas de imagen Docker. De ahora en adelante, la imagen más reciente tendrá la etiqueta latest. Y todas las versiones anteriores se etiquetarán con un número. Todo esto no habría sido posible sin el equipo de SimpliSafe, especialmente Matthew Cox (https://github.com/matthew-cox). ¡Así que un gran agradecimiento a ti, Matt!

  • 14/10/17 - Construí y publiqué la nueva imagen abhartiya/tools_gitallsecrets:v6. Esta nueva imagen tiene la versión más reciente de git-secrets así como de repo-supervisor, es decir, fusioné algunos cambios upstream en mi fork junto con algunos cambios adicionales que ya había hecho en mi fork. La nueva imagen usa estos cambios, por lo que todo está actualizado y es lo mejor.* 10/14/17 - Se creó y subió la nueva imagen abhartiya/tools_gitallsecrets:v5. Esta imagen corrige un error muy tonto e irritante que posiblemente causaba que repo supervisor fallara. Algo cambió en la forma en que se leen los valores de Environment en el Dockerfile, lo que provocó que repo supervisor no entendiera qué ruta de node usar. ¡Infierno de Node!

  • 9/29/17 - Se creó y subió la nueva imagen con el flag orgOnly - abhartiya/tools_gitallsecrets:v4

  • 8/22/17 - Se añadió el interruptor -orgOnly por kciredor: analiza el repositorio de la organización especificada y omite los repositorios de usuario.

  • 6/26/17 - Se eliminó algo de salida en repo-supevisor que imprimía errores cuando no se encontraban secretos. ¡Salida innecesaria! Se creó y subió la nueva imagen - abhartiya/tools_gitallsecrets:v3

  • 6/25/17 - Se añadió el flag toolName para especificar qué herramienta usar para el escaneo. Se creó y subió la nueva imagen - abhartiya/tools_gitallsecrets:v2

  • 6/14/17 - Se añadió repo-supervisor como herramienta de escaneo, también se actualizó y añadió el número de versión a la imagen docker - abhartiya/tools_gitallsecrets:v1

  • 6/14/17 - Se añadió el flag cloneForks para evitar clonar forks de repos de org y usuario. Por defecto, esto es falso. Si deseas escanear forks, simplemente establece el valor a 1, es decir, -cloneForks=1