Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
git-all-secrets — Uno strumento per catturare tutti i segreti git sfruttando molteplici strumenti open source di ricerca git. | Kitploit
Strumenti/GitHubGitHub/anshumanbh/git-all-secrets
Analisi del CodiceRaccolta InformazioniDevSecOpsRilevamento Segreti
GitHubanshumanbh/git-all-secrets

git-all-secrets

Uno strumento per catturare tutti i segreti git sfruttando molteplici strumenti open source di ricerca git.

Vedi Repository
1.1k1947 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

git-all-secrets

Informazioni

git-all-secrets è uno strumento in grado di:

  • Clonare più repository GitHub pubblici/privati di un'organizzazione e scansionarli,
  • Clonare più repository GitHub pubblici/privati di un utente che appartiene a un'organizzazione e scansionarli,
  • Clonare un singolo repository pubblico/privato di un'organizzazione e scannerizzarlo,
  • Clonare un singolo repository pubblico/privato di un utente e scannerizzarlo,
  • Clonare un singolo gist pubblico/segreto di un utente e scannerizzarlo,
  • Clonare i repository di un team all'interno di un'organizzazione e scansionarli,
  • Tutto quanto sopra insieme!! Oh sì!! Basta fornire il nome di un'organizzazione e ottenere tutti i loro segreti. Se vuoi anche ottenere i segreti di un team all'interno di un'organizzazione, basta menzionare il nome del team insieme all'organizzazione.
  • Clonare e scansionare anche repository e gist di GitHub Enterprise.

La scansione viene eseguita da diversi strumenti open source come:

  • truffleHog - scansiona i commit per stringhe ad alta entropia ed espressioni regolari fornite dall'utente,
  • repo-supervisor - scansiona le stringhe ad alta entropia nei file .js e .json

NOTA - È possibile aggiungere altri strumenti simili in futuro, se desiderato! NOTA - La scansione può essere eseguita da tutti gli strumenti o da uno qualsiasi di essi specificando il flag toolName.

Se vengono utilizzati tutti gli strumenti per la scansione, l'output finale dello strumento combina l'output di tutti i file di tutti gli strumenti in un unico file di output consolidato.

Per iniziare

Il modo più semplice per eseguire git-all-secrets è tramite Docker e consiglio vivamente di installare Docker se non lo hai già. Una volta installato Docker,

  • Digita docker run --rm -it abhartiya/tools_gitallsecrets --help per comprendere i diversi flag che può accettare come input.
  • Una volta che sai cosa vuoi scansionare, digita qualcosa come docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<>. Puoi anche specificare uno strumento particolare da utilizzare per la scansione digitando qualcosa come docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=<>. Le opzioni sono thog e repo-supervisor.
  • Se vuoi eseguire truffleHog con l'espressione regolare predefinita E le impostazioni di alta entropia, fornisci il flag thogEntropy in questo modo - docker run -it abhartiya/tools_gitallsecrets -token=<> -org=<> -toolName=thog -thogEntropy.
  • Dopo che il container ha terminato l'esecuzione, recupera l'ID del container digitando docker ps -a.
  • Una volta che hai l'ID del container, ottieni il file dei risultati dal container all'host digitando docker cp <container-id>:/root/results.txt .

Flag/Opzioni

  • -token = Token di accesso personale di GitHub. Ne abbiamo bisogno perché le richieste non autenticate all'API di GitHub possono incontrare la limitazione della velocità molto presto!

  • -org = Nome dell'organizzazione da scansionare. Scansionerà tutti i repository pubblici nell'organizzazione + tutti i repository e i gist di tutti gli utenti nell'organizzazione. Se stai utilizzando un token di un utente che fa parte di questa organizzazione, clonerà e scannerà anche tutti i gist segreti appartenenti a quell'utente, così come tutti i repository privati in quell'organizzazione a cui l'utente ha accesso. Tuttavia, NON clonerà e scannerà alcun repository privato di questo utente appartenente a questa organizzazione. Per scansionare repository privati di utenti, utilizza il flag scanPrivateReposOnly con il flag user insieme alla chiave SSH montata su un volume.

  • -user = Nome dell'utente da scansionare. Scansionerà tutti i repository e i gist di questo utente. Se il token fornito è il token dell'utente, verranno clonati e scansionati anche i gist segreti. Ma verranno clonati e scansionati solo i repository pubblici. Per scansionare i repository privati di questo utente, utilizza il flag scanPrivateReposOnly con il flag user insieme alla chiave SSH montata su un volume.

  • -repoURL = URL HTTPS del repository da scansionare. Scansionerà solo questo repository. Per i repository pubblici, menzionare l'URL https del repository è sufficiente. Tuttavia, se desideri scansionare un repository privato, devi fornire l'URL ssh insieme alla chiave SSH montata su un volume e al flag scanPrivateReposOnly.

  • -gistURL = URL HTTPS del gist da scansionare. Scansionerà solo questo gist. Non esiste il concetto di gist pubblico o segreto finché hai l'URL. Anche se hai un gist segreto, se qualcuno conosce l'URL HTTPS del tuo gist segreto, può accedervi anche lui.

Nota

  • Il flag token è obbligatorio. Non può essere vuoto.

  • I flag org, user, repoURL e gistURL non possono essere tutti vuoti contemporaneamente. Devi fornire solo uno di questi valori. Se fornisci tutti o più valori insieme, l'ordine di precedenza sarà org > user > repoURL > gistURL. Ad esempio, se fornisci entrambi i flag -org=secretorg123 e -user=secretuser1 insieme, lo strumento si lamenterà del fatto che non ha bisogno di altro insieme al valore org. Per eseguirlo solo su un particolare utente, basta fornire il flag user e non il flag org.

Scansione di repository privati

Il modo più sicuro per scansionare repository privati è clonare utilizzando gli URL SSH. Per fare ciò, è necessario inserire una chiave SSH appropriata che sia stata aggiunta a un utente GitHub. GitHub ha una documentazione utile per configurare il tuo account. Assicurati che questa chiave non abbia alcuna passphrase impostata. Una volta che hai la chiave SSH, montala semplicemente sul container Docker tramite un volume. È semplice come digitare i comandi seguenti:

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

OPPURE

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

Qui, sto mappando la mia chiave SSH personale id_rsa_personal archiviata localmente su /root/.ssh/id_rsa all'interno del container, in modo che git-all-secrets provi a clonare il repository tramite ssh e utilizzerà la chiave SSH archiviata in /root/.ssh/id_rsa all'interno del container. In questo modo, non stai realmente memorizzando nulla di sensibile all'interno del container. Stai solo utilizzando un file dal tuo computer locale. Una volta che il container viene distrutto, non ha più accesso a questa chiave.

Scansione di un team di un'organizzazione

L'API di GitHub limita le circostanze in cui viene segnalato un repository privato. Se si sta cercando di scansionare un'organizzazione con un utente che non è un amministratore, potrebbe essere necessario fornire il team che fornisce l'accesso al repository per l'utente. Per fare ciò, utilizza il flag teamName insieme al flag org. L'esempio è riportato di seguito:

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

Scansione di GitHub Enterprise

git-all-secrets ora supporta anche la scansione di GitHub Enterprise. Se hai il tuo GitHub Enterprise ospitato dietro una VPN o qualcosa del genere, assicurati di essere connesso alla VPN o alla rete corretta che ha accesso ai repository di GitHub Enterprise. L'enterpriseURL è ciò di cui hai bisogno per scansionare i tuoi repository di GitHub Enterprise. Di seguito sono riportati alcuni esempi:

Esempio 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

Qui, sto montando la mia chiave SSH di GitHub Enterprise sul container, seguita dal mio token di accesso personale, dall'URL enterprise a cui verranno inviate le richieste e dal repository che voglio scansionare.

Esempio 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

Sopra, sto solo eseguendo truffleHog sul repository con le impostazioni di entropia.

Esempio 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

Sopra, sto scansionando solo i repository privati dell'utente di cui è fornito il token con tutti gli strumenti (repo-supervisor e thog), ma senza l'impostazione di entropia di truffleHog.

TODO

  • Testare la funzionalità di scansione del team
  • Correggere il bug di Goroutine - Spero FATTO!
  • Supportare la scansione di GitHub Enterprise FATTO!
  • Supportare la clonazione e la scansione di repository privati di un'organizzazione - FATTO!
  • Sostituire gitsecrets con la nuova funzionalità Regex in truffleHog - FATTO!
  • Aggiungere il supporto per la scansione di repository utente privati tramite chiavi SSH - FATTO!
  • Aggiungere un flag per evitare la scansione dei fork - FATTO!

Dettagli

Caratteristiche

  • Puoi aggiungere le tue espressioni regolari nel file rules.json e includerle quando esegui docker run usando l'argomento -v $(pwd)/rules.json:/root/truffleHog/rules.json.
  • Lo strumento cerca alcune espressioni regolari predefinite. Se necessario, può anche essere configurato per stringhe ad alta entropia. Tutto ciò avviene tramite lo strumento truffleHog.
  • Può cercare stringhe ad alta entropia nei file .js e .json tramite lo strumento repo-supervisor.
  • Scansiona i gist degli utenti, cosa che la maggior parte degli strumenti non fa.
  • Se c'è un nuovo strumento valido, può essere integrato in git-all-secrets senza troppi sforzi.
  • È costruito per l'integrazione con altri strumenti e framework. Accetta alcuni parametri di input e produce un file di output dei risultati. Abbastanza semplice!
  • Supporta anche la scansione di organizzazioni/utenti/repository/gist di GitHub Enterprise.
  • La maggior parte degli strumenti disponibili sono realizzati per scansionare singoli repository. Se vuoi eseguirli su più repository, dovresti scrivere il tuo ciclo for in uno script shell o qualcosa del genere. git-all-secrets può aiutarti a scansionare più repository in una volta sola.
  • Ora puoi unire gli output di entrambi gli strumenti in un file json che può quindi essere utilizzato in altri strumenti/framework di automazione

Motivazione

Ho esaminato un gran numero di strumenti open source che potenzialmente potrebbero essere utilizzati per cercare segreti nei repository GitHub. Alcuni dei migliori strumenti che ho ritenuto validi sono: gitrob, truffleHog e git-secrets.

Gitrob è pensato per essere uno strumento autonomo che è piuttosto difficile da integrare con altri strumenti perché ha il proprio database e UI per vedere tutti i segreti scoperti. Produce anche molti falsi positivi, più di truffleHog. E non evidenzia realmente i segreti scoperti. Guarda solo i file e le loro estensioni, non il contenuto effettivo. Quindi, sebbene Gitrob sia un ottimo strumento per iniziare, consiglio di eseguirlo ogni tanto per capire come appare la superficie di attacco e vedere se è cambiata.

Poi c'è truffleHog che cerca segreti nei contenuti effettivi del file esaminando l'entropia di Shannon e stampa l'output sullo schermo. Accetta un URL di un repository o una directory di un repository come argomento. Questo è uno strumento piuttosto buono anche se ha la sua parte di falsi positivi. Alcuni altri svantaggi sono:

  • Non possiamo usarlo ricorsivamente per scansionare directory che contengono più repository.
  • Non c'è modo di usare truffleHog per identificare segreti che seguono un certo pattern ma non hanno un'entropia sufficientemente alta, cioè non possiamo fargli cercare segreti che conosciamo ma che non hanno necessariamente un'alta entropia per essere considerati un segreto.
  • Stampa l'output sullo schermo, quindi non è molto utile per l'automazione in quanto tale.

Infine, c'è git-secrets che può segnalare cose come i segreti AWS. La parte migliore è che puoi aggiungere anche le tue espressioni regolari per i segreti che sai che dovrebbe cercare. Uno svantaggio importante è che non fa un buon lavoro nel trovare stringhe ad alta entropia come fa truffleHog. Puoi anche scansionare solo una particolare directory che è un repository, quindi nessuna scansione ricorsiva da una directory di repository.

Quindi, come puoi vedere, ci sono strumenti decenti là fuori, ma dovevano essere combinati in qualche modo. C'era anche la necessità di scansionare ricorsivamente più repository e non solo uno. E, per quanto riguarda i gist? Ci sono organizzazioni e utenti. Poi, ci sono repository per organizzazioni e utenti. Ci sono anche gist degli utenti. Tutti questi dovrebbero essere scansionati. E scansionati in modo che possano essere automatizzati e facilmente consumati da altri strumenti/framework.

Changelog

  • 2/9/19 - Aggiunto il flag blacklist per saltare alcuni nomi di repository durante la scansione. Grazie a @sjqnn per la PR. Creata e pubblicata una nuova immagine Docker. GLHF!

  • 7/31/18 - Semplificata l'installazione di trufflehog utilizzando pip. @mhmdiaa ha corretto un bug riguardante la funzione di output di trufflehog che non univa e ordinava correttamente. Aggiornato il file regex per includere cose come password. Creata e pubblicata una nuova immagine Docker. GLHF!

  • 7/15/18 - Aggiornato il fork di repo-supervisor perché l'upstream aveva alcune modifiche. Ricostruita una nuova immagine Docker utilizzando l'ultima versione di Trufflehog. Fornito il file rules.json che contiene tutte le regex che Trufflehog utilizza per trovare segreti. Aggiunta la possibilità di unire anche gli output (in json) di entrambi gli strumenti utilizzando il flag -mergeOutput. Ridotto drasticamente la dimensione dell'immagine Docker utilizzando build multi-stadio e dep per la gestione delle dipendenze. Un grande ringraziamento a @mhmdiaa per tutto questo!

  • 12/12/17 - Per alcuni repository grandi, truffleHog fallisce e termina. Ma non vogliamo fermarci lì. Vogliamo notificare all'utente che la scansione è fallita per quel repository e continuare a scansionare gli altri repository. Questo è ora implementato nell'ultima immagine Docker.

  • 12/11/17 - Rimosso gitsecrets perché truffleHog ora supporta la funzionalità regex. Semplicemente, aggiungendo le tue regex nel file rules.json e ricostruendo l'immagine Docker, otterremo fondamentalmente la funzionalità che gitsecrets forniva in precedenza, quindi non c'è più bisogno di gitsecrets. Ho anche aggiunto il supporto per la scansione di repository e gist di GitHub Enterprise. @high-stakes ha aiutato a ottenere una PR che (si spera) risolve il bug di Goroutine limitando il numero di thread. Infine, è stato aggiunto anche il supporto per la scansione di repository privati per un'organizzazione.

  • 12/08/17 - Rimosso il mio fork di truffleHog. Ora utilizzo la versione upstream insieme alla funzionalità regex di truffleHog + modalità entropia. Presto, credo che potremo sostituire sia gitsecrets che repo supervisor con il solo truffleHog una volta risolti alcuni problemi.

Dona

Se vuoi mostrare un po' di affetto, il mio indirizzo BTC è 1PtMhXWCcMZCitcDfaEBe7jnV9sjKoNvq7.

Scarica lo strumento
  • -output = Questo è il nome del file in cui verranno memorizzati tutti i risultati. Per impostazione predefinita, è results.txt.

  • -cloneForks = Questo è un flag booleano opzionale per clonare i fork dei repository dell'organizzazione e dell'utente. Per impostazione predefinita, è impostato su 0, cioè nessuna clonazione dei fork. Se i fork devono essere clonati, questo valore deve essere impostato su 1. Oppure, basta menzionare -cloneForks insieme ad altri flag.

  • -orgOnly = Questo è un flag booleano opzionale per saltare la clonazione dei repository utente appartenenti a un'organizzazione. Per impostazione predefinita, è impostato su 0, cioè comportamento normale. Se non si desidera scansionare i repository utente e solo i repository dell'organizzazione, questo valore deve essere impostato su 1. Oppure, basta menzionare -orgOnly insieme ad altri flag.

  • -toolName = Questo è un flag stringa opzionale per specificare quale strumento utilizzare per la scansione. Per impostazione predefinita, è impostato su all, cioè thog e repo-supervisor verranno entrambi utilizzati per la scansione. I valori sono thog o repo-supervisor.

  • -teamName = Nome del team dell'organizzazione che ha accesso ai repository privati per la scansione. Questo flag non è stato completamente testato, quindi non posso garantirne la funzionalità.

  • -scanPrivateReposOnly = Questo è un flag booleano opzionale per specificare se si desidera scansionare i repository utente privati o meno. Menzionarlo NON scannerà i repository utente pubblici. Inoltre, è necessario fornire la chiave SSH montando il volume sul container. Inoltre, funziona solo con il flag user, repoURL o org.

    Quando il flag org viene menzionato insieme al flag scanPrivateReposOnly e senza il flag orgOnly, scannerà i repository pubblici E privati appartenenti a questa organizzazione a cui l'utente ha accesso (il cui token è fornito). Quindi continuerà a scansionare SOLO i repository privati dell'utente (il cui token è fornito). Infine, continuerà a scansionare tutti i gist pubblici e segreti di questo utente (il cui token è fornito). In sintesi, il flag scanPrivateReposOnly influisce realmente solo sui flag user e repoURL.

  • -enterpriseURL = Flag opzionale per fornire l'URL di GitHub Enterprise, se desideri scansionare repository enterprise. Dovrebbe essere qualcosa come https://github.org.com/api/v3 insieme alla chiave SSH montata sul container. Fare riferimento a scansione di GitHub Enterprise di seguito.

  • -threads = Il valore predefinito è 10. Serve per limitare il numero di thread se il tuo sistema non è abbastanza potente. Per la maggior parte dei casi, lasciarlo a 10 dovrebbe andare bene.

  • -thogEntropy = Questo è un flag opzionale che indica fondamentalmente se desideri ottenere segreti basati sull'alta entropia da truffleHog o meno. I segreti ad alta entropia di truffleHog producono MOLTO rumore, quindi se non vuoi tutto quel rumore e se stai eseguendo git-all-secrets su una grande organizzazione, consiglio di non menzionare questo flag. Per impostazione predefinita, è impostato su False, il che significa che truffleHog produrrà risultati solo in base alle espressioni regolari nel file rules.json. Se stai scansionando un'organizzazione abbastanza piccola con un set limitato di repository o un utente con pochi repository, menzionare questo flag ha più senso.

  • -mergeOutput = Flag opzionale per unire e deduplicare l'output degli strumenti utilizzati (attualmente truffleHog e repo-supervisor). Il valore predefinito è False.

  • -blacklist = Nomi di repository forniti come valori separati da virgola che NON devono essere scansionati.

  • Quando si specifica il flag scanPrivateReposOnly:

    • È necessario montare un volume contenente la chiave SSH privata sul container Docker utilizzando il flag -v.
    • Dovrebbe essere utilizzato ogni volta che viene scansionato un repository privato. Utilizza l'URL ssh quando usi il flag e non l'URL https.
    • Assicurati che il token utilizzato appartenga effettivamente all'utente di cui stai cercando di scansionare il repository/gist privato, altrimenti si verificheranno errori.
    • La chiave SSH che utilizzerai NON deve avere una passphrase impostata se desideri che questo strumento funzioni senza intervento manuale.

    Fare riferimento a scansione di repository privati di seguito.

  • Quando si specifica teamName è importante che il token fornito appartenga a un utente che è membro del team. Potrebbero verificarsi risultati imprevisti altrimenti. Fare riferimento a scansione di un team di un'organizzazione di seguito.

  • Quando si specifica il flag enterpriseURL, considererà sempre l'URL SSH anche se fornisci l'URL https di un repository. Tutta la clonazione/scansione enterprise avviene tramite l'URL ssh e non l'URL https.

  • Come menzionato sopra, assicurati che la chiave SSH utilizzata (per scansionare l'URL SSH) non abbia alcuna passphrase impostata.

  • nuova
  • 12/07/17 - Ho aggiornato la documentazione con ulteriori dettagli e spiegazioni sui vari flag.

  • 12/05/17 - Integrato il supporto per la scansione di repository privati tramite chiave SSH. Questa è stata una richiesta per molto tempo e ora è possibile farlo. Inoltre, modificato lo schema dei tag delle immagini Docker. D'ora in poi, l'immagine più recente avrà il tag latest. E tutte le versioni precedenti saranno taggate con un numero. Tutto ciò non sarebbe stato possibile senza il team SimpliSafe, in particolare Matthew Cox (https://github.com/matthew-cox). Quindi un grande ringraziamento a te Matt!

  • 10/14/17 - Creata e pubblicata la nuova immagine abhartiya/tools_gitallsecrets:v6. Questa nuova immagine ha la versione più recente di git-secrets e anche di repo-supervisor, cioè ho unito alcune modifiche upstream nel mio fork insieme ad alcune modifiche aggiuntive che avevo già apportato nel mio fork. La nuova immagine utilizza queste modifiche, quindi tutto è all'ultimo e più grande!* 14/10/17 - Costruita e pubblicata la nuova immagine abhartiya/tools_gitallsecrets:v5. Questa immagine corregge un bug molto stupido e fastidioso che probabilmente causava il fallimento di repo supervisor. Qualcosa è cambiato nel modo in cui i valori delle variabili d'ambiente vengono letti nel Dockerfile, portando repo supervisor a non capire quale percorso di node utilizzare. Inferno Node!

  • 29/09/17 - Costruita e pubblicata la nuova immagine con il flag orgOnly - abhartiya/tools_gitallsecrets:v4

  • 22/08/17 - Aggiunto l'opzione -orgOnly da kciredor: analizza l'organizzazione specificata e salta i repository utente.

  • 26/06/17 - Rimossi alcuni messaggi di output in repo-supervisor che stampavano errori quando non venivano trovati segreti. Output inutile! Costruita e pubblicata la nuova immagine - abhartiya/tools_gitallsecrets:v3

  • 25/06/17 - Aggiunto il flag toolName per specificare quale strumento utilizzare per la scansione. Costruita e pubblicata la nuova immagine - abhartiya/tools_gitallsecrets:v2

  • 14/06/17 - Aggiunto repo-supervisor come strumento di scansione, inoltre aggiornato e aggiunto il numero di versione all'immagine Docker - abhartiya/tools_gitallsecrets:v1

  • 14/06/17 - Aggiunto il flag cloneForks per evitare di clonare i fork dei repository di organizzazioni e utenti. Per impostazione predefinita è false. Se desideri scansionare i fork, imposta il valore a 1, ad esempio -cloneForks=1