
Kit di attacco modulare che sfrutta l'API REST di Azure DevOps per ricognizione, escalation dei privilegi e persistenza utilizzando cookie rubati o PATs.
# ADOKit
## Descrizione
Azure DevOps Services Attack Toolkit - ADOKit è un toolkit che può essere utilizzato per attaccare Azure DevOps Services sfruttando l'API REST disponibile. Lo strumento consente all'utente di specificare un modulo di attacco, insieme a credenziali valide (chiave API o cookie di autenticazione rubato) per l'istanza di Azure DevOps Services corrispondente. I moduli di attacco supportati includono ricognizione, escalation dei privilegi e persistenza. ADOKit è stato sviluppato con un approccio modulare, in modo che nuovi moduli possano essere aggiunti in futuro dalla comunità della sicurezza informatica.
I dettagli completi sulle tecniche utilizzate da ADOKit sono nel libro bianco di X-Force Red [whitepaper](https://www.ibm.com/downloads/cas/5JKAPVYD).
### Black Hat USA Arsenal 2024
Le slide delle presentazioni e le demo sono incluse nella cartella [BHUSA Arsenal 2024](https://github.com/h4wkst3r/adokit/blob/main/BHUSA_Arsenal_2024) in questo repository.
## Rilascio
* La versione 1.4.1 di ADOKit è disponibile nelle Release
## Indice
- [ADOKit](#ADOKit)
- [Indice](#table-of-contents)
- [Installazione/Compilazione](#installationbuilding)
- [Librerie Utilizzate](#libraries-used)
- [Precompilato](#pre-compiled)
- [Compilazione manuale](#building-yourself)
- [Moduli dei comandi](#command-modules)
- [Argomenti/Opzioni](#argumentsoptions)
- [Opzioni di autenticazione](#authentication-options)
- [Tabella dettagli moduli](#module-details-table)
- [Esempi](#examples)
- Ricognizione
- [Validare l'accesso ad Azure DevOps](#validate-azure-devops-access)
- [Whoami](#whoami)
- [Elenco Org](#List-orgs)
- [Elenco Repo](#List-repos)
- [Ricerca Repo](#Search-repos)
- [Elenco Progetti](#list-projects)
- [Ricerca Progetti](#search-projects)
- [Ricerca Codice](#Search-code)
- [Ricerca File](#Search-files)
- [Elenco Utenti](#list-users)
- [Ricerca Utente](#search-user)
- [Elenco Team](#list-teams)
- [Ricerca Team](#search-team)
- [Ottieni Membri del Team](#get-team-members)
- [Elenco Gruppi](#list-groups)
- [Ricerca Gruppi](#search-groups)
- [Ottieni Membri del Gruppo](#get-group-members)
- [Ottieni Permessi del Progetto](#get-project-permissions)
- [Ricerca Credenziali](#creds-search)
- [Ottieni Log di Build](#get-build-logs)
- [Elenco Log di Build](#list-build-logs)
- [Ricerca Log di Build](#search-build-logs)
- Persistenza
- [Crea PAT](#create-pat)
- [Elenco PAT](#list-pats)
- [Rimuovi PAT](#remove-pat)
- [Crea Chiave SSH](#create-ssh-key)
- [Elenco Chiavi SSH](#list-ssh-keys)
- [Rimuovi Chiave SSH](#remove-ssh-key)
- Escalation dei Privilegi
- [Aggiungi Amministratore Progetto](#add-project-admin)
- [Rimuovi Amministratore Progetto](#remove-project-admin)
- [Aggiungi Amministratore Build](#add-build-admin)
- [Rimuovi Amministratore Build](#remove-build-admin)
- [Aggiungi Amministratore Raccolta](#add-collection-admin)
- [Rimuovi Amministratore Raccolta](#remove-collection-admin)
- [Aggiungi Amministratore Build Raccolta](#add-collection-build-admin)
- [Rimuovi Amministratore Build Raccolta](#remove-collection-build-admin)
- [Aggiungi Account Servizio Build Raccolta](#add-collection-build-service-account)
- [Rimuovi Account Servizio Build Raccolta](#remove-collection-build-service-account)
- [Aggiungi Account Servizio Raccolta](#add-collection-service-account)
- [Rimuovi Account Servizio Raccolta](#remove-collection-service-account)
- [Ottieni Variabili Pipeline](#get-pipeline-variables)
- [Ottieni Segreti Pipeline](#get-pipeline-secrets)
- [Ottieni Gruppi di Variabili](#get-variable-groups)
- [Ottieni Connessioni Servizio](#get-service-connections)
- [Rilevamento](#detection)
- [Roadmap](#roadmap)
- [Riferimenti](#references)
## Installazione/Compilazione
### Librerie Utilizzate
Le seguenti librerie di terze parti sono utilizzate in questo progetto.
| Libreria | URL | Licenza |
| ------------- | ------------- | ------------- |
| Fody | [https://github.com/Fody/Fody](https://github.com/Fody/Fody) | Licenza MIT |
| Newtonsoft.Json | [https://github.com/JamesNK/Newtonsoft.Json](https://github.com/JamesNK/Newtonsoft.Json) | Licenza MIT |
### Precompilato
* Utilizza il binario precompilato nelle Release
### Compilazione manuale
Segui i passaggi seguenti per configurare Visual Studio e compilare il progetto manualmente. Richiede due librerie .NET che possono essere installate dal gestore pacchetti NuGet.
* Carica il progetto di Visual Studio e vai su "Strumenti" --> "Gestione pacchetti NuGet" --> "Impostazioni gestione pacchetti"
* Vai su "Gestione pacchetti NuGet" --> "Origini pacchetti"
* Aggiungi un'origine pacchetto con l'URL `https://api.nuget.org/v3/index.json`
* Installa il pacchetto NuGet Costura.Fody.
* `Install-Package Costura.Fody -Version 3.3.3`
* Installa il pacchetto Newtonsoft.Json
* `Install-Package Newtonsoft.Json`
* Ora puoi compilare il progetto da solo!
## Moduli dei comandi
* Ricognizione
* <b>check</b> - Verifica se l'organizzazione utilizza Azure DevOps e se le credenziali sono valide
* <b>whoami</b> - Elenca l'utente corrente e le sue appartenenze ai gruppi
* <b>listorgs</b> - Elenca tutte le organizzazioni accessibili in Azure DevOps
* <b>listrepo</b> - Elenca tutti i repository
* <b>searchrepo</b> - Cerca un repository specifico
* <b>listproject</b> - Elenca tutti i progetti
* <b>searchproject</b> - Cerca un progetto specifico
* <b>searchcode</b> - Cerca codice contenente un termine di ricerca
* <b>searchfile</b> - Cerca file basato su un termine di ricerca
* <b>listuser</b> - Elenca utenti
* <b>searchuser</b> - Cerca un utente specifico
* <b>listteam</b> - Elenca team
* <b>searchteam</b> - Cerca un team specifico
* <b>getteammembers</b> - Ottieni i membri del team per un team specifico
* <b>listgroup</b> - Elenca gruppi
* <b>searchgroup</b> - Cerca un gruppo specifico
* <b>getgroupmembers</b> - Elenca tutti i membri del gruppo per un gruppo specifico
* <b>getpermissions</b> - Ottieni i permessi per chi ha accesso a un progetto specifico
* <b>creds</b> - Cerca credenziali nel codice (parole chiave elencate di seguito)
* ``` "pw OR pwd OR passwrod OR password OR \"-----BEGIN PGP PRIVATE KEY BLOCK-----\" OR \"-----BEGIN EC PRIVATE KEY-----\" OR \"-----BEGIN DSA PRIVATE KEY-----\" OR \"-----BEGIN OPENSSH PRIVATE KEY-----\" OR \"-----BEGIN RSA PRIVATE KEY-----\" OR ANSIBLE_VAULT OR AWS_ACCESS_KEY_ID OR AWS_SECRET_ACCESS_KEY OR ACCESS_TOKEN OR API_KEY OR Authorization OR db_password" ```
* <b>getbuildlogs</b> - Scarica i log di build per uno o tutti i progetti
* <b>listbuildlogs</b> - Elenca i log di build per uno o tutti i progetti
* <b>searchbuildlogs</b> - Cerca nei log di build un termine di ricerca specifico
* Persistenza
* <b>createpat</b> - Crea un token di accesso personale per l'utente
* <b>listpat</b> - Elenca i token di accesso personali per l'utente
* <b>removepat</b> - Rimuovi token di accesso personale per l'utente
* <b>createsshkey</b> - Crea una chiave pubblica SSH per l'utente
* <b>listsshkey</b> - Elenca le chiavi pubbliche SSH per l'utente
* <b>removesshkey</b> - Rimuovi chiave pubblica SSH per l'utente
* Escalation dei privilegi
* <b>addprojectadmin</b> - Aggiunge un utente al gruppo "Amministratori del progetto" per un progetto specifico
* <b>removeprojectadmin</b> - Rimuove un utente dal gruppo "Amministratori del progetto" per un progetto specifico
* <b>addbuildadmin</b> - Aggiunge un utente al gruppo "Amministratori della build" per un progetto specifico
* <b>removebuildadmin</b> - Rimuove un utente dal gruppo "Amministratori della build" per un progetto specifico
* <b>addcollectionadmin</b> - Aggiunge un utente al gruppo "Amministratori della raccolta del progetto"
* <b>removecollectionadmin</b> - Rimuove un utente dal gruppo "Amministratori della raccolta del progetto"
* <b>addcollectionbuildadmin</b> - Aggiunge un utente al gruppo "Amministratori della build della raccolta del progetto"
* <b>removecollectionbuildadmin</b> - Rimuove un utente dal gruppo "Amministratori della build della raccolta del progetto"
* <b>addcollectionbuildsvc</b> - Aggiunge un utente al gruppo "Account servizio build della raccolta del progetto"
* <b>removecollectionbuildsvc</b> - Rimuove un utente dal gruppo "Account servizio build della raccolta del progetto"
* <b>addcollectionsvc</b> - Aggiunge un utente al gruppo "Account servizio della raccolta del progetto"
* <b>removecollectionsvc</b> - Rimuove un utente dal gruppo "Account servizio della raccolta del progetto"
* <b>getpipelinevars</b> - Recupera le variabili della pipeline per un progetto specifico.
* <b>getpipelinesecrets</b> - Recupera i nomi dei segreti della pipeline per un progetto specifico.
* <b>getvariablegroups</b> - Recupera i gruppi di variabili e le corrispondenti variabili per un progetto specifico.
* <b>getserviceconnections</b> - Recupera le connessioni di servizio per un progetto specifico.
## Argomenti/Opzioni
* <b>/credential:</b> - credenziale per l'autenticazione (PAT o Cookie). Applicabile a tutti i moduli.
* <b>/url:</b> - URL di Azure DevOps. Applicabile a tutti i moduli.
* <b>/search:</b> - Parola chiave da cercare. Non applicabile a tutti i moduli.
* <b>/project:</b> - Progetto per cui eseguire un'azione. Non applicabile a tutti i moduli.
* <b>/user:</b> - Esegue un'azione su un utente specifico. Non applicabile a tutti i moduli.
* <b>/id:</b> - Utilizzato con i moduli di persistenza per eseguire un'azione su un ID token specifico. Non applicabile a tutti i moduli.
* <b>/group:</b> - Esegue un'azione su un gruppo specifico. Non applicabile a tutti i moduli.
## Opzioni di autenticazione
Di seguito sono riportate le opzioni di autenticazione disponibili con ADOKit quando ci si autentica a un'istanza di Azure DevOps.
* **Cookie rubato - UserAuthentication** - Questo sarà il cookie `UserAuthentication` sul computer di un utente per il dominio `.dev.azure.com`.
* `/credential:UserAuthentication=ABC123`
* **Cookie rubato - AadAuthentication** - Questo sarà il cookie `AadAuthentication` sul computer di un utente per il dominio `.dev.azure.com`.
* `/credential:eyJ0...`
* **Token di accesso personale (PAT)** - Questo sarà un token di accesso/chiave API che sarà una singola stringa.
* `/credential:apiToken`
* **Token di accesso rubato** - Se riesci a rubare o aggiornare un token di accesso appropriato, puoi anche usarlo. Quando si utilizza un token di accesso, deve essere valido per la risorsa di Azure Resource Manager (ARM) - `"aud":"https://management.core.windows.net/"` o Azure Devops - `"aud":"499b84ac-1321-427f-aa17-267ca6975798"`
* `/credential:eyJ0..`
## Tabella dettagli moduli
La tabella seguente mostra i permessi necessari per ogni modulo.
Scenario di attacco | Modulo | Permessi speciali? | Note
--- |--- | --- | ---
Ricognizione | `check` | No |
Ricognizione | `whoami` | No |
Ricognizione | `listorgs` | No |
Ricognizione | `listrepo` | No |
Ricognizione | `searchrepo` | No |
Ricognizione | `listproject` | No |
Ricognizione | `searchproject` | No |
Ricognizione | `searchcode` | No |
Ricognizione | `searchfile` | No |
Ricognizione | `listuser` | No |
Ricognizione | `searchuser` | No |
Ricognizione | `listteam` | No |
Ricognizione | `searchteam` | No |
Ricognizione | `getteammembers` | No |
Ricognizione | `listgroup` | No |
Ricognizione | `searchgroup` | No |
Ricognizione | `getgroupmembers` | No |
Ricognizione | `getpermissions` | No |
Ricognizione | `creds` | No |
Ricognizione | `getbuildlogs` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Ricognizione | `listbuildlogs` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Ricognizione | `searchbuildlogs` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Persistenza | `createpat` | No |
Persistenza | `listpat` | No |
Persistenza | `removepat` | No |
Persistenza | `createsshkey` | No |
Persistenza | `listsshkey` | No |
Persistenza | `removesshkey` | No |
Escalation dei privilegi | `addprojectadmin` | Sì - `Project Administrator`, `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removeprojectadmin` | Sì - `Project Administrator`, `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `addbuildadmin` | Sì - `Project Administrator`, `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removebuildadmin` | Sì - `Project Administrator`, `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `addcollectionadmin` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removecollectionadmin` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `addcollectionbuildadmin` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removecollectionbuildadmin` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `addcollectionbuildsvc` | Sì - `Project Collection Administrator`, `Project Colection Build Administrators` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removecollectionbuildsvc` | Sì - `Project Collection Administrator`, `Project Colection Build Administrators` o `Project Collection Service Accounts` |
Escalation dei privilegi | `addcollectionsvc` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `removecollectionsvc` | Sì - `Project Collection Administrator` o `Project Collection Service Accounts` |
Escalation dei privilegi | `getpipelinevars` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Escalation dei privilegi | `getpipelinesecrets` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Escalation dei privilegi | `getvariablegroups` | Sì - `Contributors` o `Readers` o `Build Administrators` o `Project Administrators` o `Project Team Member` o `Project Collection Test Service Accounts` o `Project Collection Build Service Accounts` o `Project Collection Build Administrators` o `Project Collection Service Accounts` o `Project Collection Administrators` |
Escalation dei privilegi | `getserviceconnections` | Sì - `Project Administrator`, `Project Collection Administrator` o `Project Collection Service Accounts` |
## Esempi
### Validare l'accesso ad Azure DevOps
#### Caso d'uso
> *Esegue un controllo di autenticazione per verificare che l'organizzazione stia utilizzando Azure DevOps e che le credenziali fornite siano valide.*
#### Sintassi
Fornisci il modulo `check`, insieme a qualsiasi informazione di autenticazione rilevante e URL. Questo restituirà se l'organizzazione fornita utilizza Azure DevOps e, in caso affermativo, tenterà di validare le credenziali fornite.
`ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe check /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Output di esempio```
C:\>ADOKit.exe check /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: check
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/28/2023 3:33:01 PM
==================================================
[*] INFO: Checking if organization provided uses Azure DevOps
[+] SUCCESS: Organization provided exists in Azure DevOps
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
3/28/23 19:33:02 Finished execution of check
```
### Whoami
#### Caso d'uso
> *Ottieni l'utente corrente e le appartenenze ai gruppi dell'utente*
#### Sintassi
Fornisci il modulo `whoami`, insieme a qualsiasi informazione di autenticazione pertinente e URL. Questo restituirà l'utente corrente e tutte le sue appartenenze ai gruppi.
`ADOKit.exe whoami /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Output di esempio```
C:\>ADOKit.exe whoami /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/YourOrganization
==================================================
Module: whoami
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 11:33:12 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Username | Display Name | UPN
------------------------------------------------------------------------------------------------------------------------------------------------------------
jsmith | John Smith | [email protected]
[*] INFO: Listing group memberships for the current user
Group UPN | Display Name | Description
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[YourOrganization]\Project Collection Test Service Accounts | Project Collection Test Service Accounts | Members of this group should include the service accounts used by the test controllers set up for this project collection.
[TestProject2]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[MaraudersMap]\Contributors | Contributors | Members of this group can add, modify, and delete items within the team project.
[YourOrganization]\Project Collection Administrators | Project Collection Administrators | Members of this application group can perform all privileged operations on the Team Project Collection.
4/4/23 15:33:19 Finished execution of whoami
```
### Elenca Organizzazioni
#### Caso d'Uso
> *Recupera le organizzazioni utilizzando un token di accesso specificato.*
#### Sintassi
Fornisci al modulo `listorgs` le informazioni di autenticazione richieste. Per impostazione predefinita, questo comando elenca solo le organizzazioni accessibili con il token di accesso fornito.
- Usa **`/mode:aad`** per enumerare **tutte** le organizzazioni DevOps all'interno del tenant Azure AD, indipendentemente dall'accesso diretto.
- Usa **`/endpoint:ENDPOINT_NAME`** per specificare un endpoint AEX personalizzato.
- Endpoint aggiuntivi possono essere identificati ispezionando il cookie `"X-VSS-DeploymentAffinity"` da `aex.dev.azure.com`.
`ADOKit.exe listorgs /credential:"eyj0..." [/mode:aad] [/endpoint:ENDPOINT_NAME]`
`ADOKit.exe listorgs /credential:"eyj0..." /mode:aad /endpoint:aexprodeus21`
#### Esempio di Output```
C:\>ADOKit.exe listorgs /credential:"eyj0..."
==================================================
Module: listorgs
Auth Type: Azure Access Token
Target URL: https://app.vssps.visualstudio.com
Timestamp: 3/14/2025 2:26:45 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Organization ID | Organization Name
-----------------------------------------------------------------------------------
390a7474-e2f2-4b98-b538-4a547fa9f5e3 | solar-devops
b63b999f-43f2-48c5-998d-b31cbf4c2f8e | lunar-devops
```
### Elenca Repository
#### Caso d'uso
> *Scopri i repository utilizzati nell'istanza di Azure DevOps*
#### Sintassi
Fornisci il modulo `listrepo`, insieme a qualsiasi informazione di autenticazione rilevante e URL. Questo produrrà il nome del repository e l'URL.
`ADOKit.exe listrepo /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Esempio di Output```
C:\>ADOKit.exe listrepo /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: listrepo
Auth Type: Cookie
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 8:41:50 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
-----------------------------------------------------------------------------------
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
MaraudersMap | https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap
SomeOtherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/SomeOtherRepo
AnotherRepo | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/AnotherRepo
ProjectWithMultipleRepos | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/ProjectWithMultipleRepos
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 12:41:53 Finished execution of listrepo
```
### Ricerca Repository
#### Caso d'uso
> *Cerca repository per nome del repository nell'istanza di Azure DevOps*
#### Sintassi
Fornisci il modulo `searchrepo` e i criteri di ricerca nell'argomento della riga di comando `/search:`, insieme alle informazioni di autenticazione e all'URL pertinenti. Questo restituirà il nome e l'URL del repository corrispondente.
`ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred`
`ADOKit.exe searchrepo /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred`
#### Output di esempio```
C:\>ADOKit.exe searchrepo /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"test"
==================================================
Module: searchrepo
Auth Type: API Key
Search Term: test
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 9:26:57 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | URL
-----------------------------------------------------------------------------------
TestProject2 | https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2
TestProject | https://dev.azure.com/YourOrganization/TestProject/_git/TestProject
3/29/23 13:26:59 Finished execution of searchrepo
```
### Elenca Progetti
#### Caso d'uso
> *Scopri i progetti in uso in un'istanza di Azure DevOps*
#### Sintassi
Fornisci il modulo `listproject`, insieme a qualsiasi informazione di autenticazione rilevante e URL. Questo produrrà il nome del progetto, la visibilità (pubblica o privata) e l'URL.
`ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe listproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Esempio di output```
C:\>ADOKit.exe listproject /credential:apiKey /url:https://dev.azure.com/YourOrganization
==================================================
Module: listproject
Auth Type: API Key
Search Term:
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 7:44:59 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
-----------------------------------------------------------------------------------------------------
TestProject2 | private | https://dev.azure.com/YourOrganization/TestProject2
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
ProjectWithMultipleRepos | private | https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos
TestProject | private | https://dev.azure.com/YourOrganization/TestProject
4/4/23 11:45:04 Finished execution of listproject
```
### Ricerca Progetti
#### Caso d'Uso
> *Cerca progetti per nome del progetto nell'istanza di Azure DevOps*
#### Sintassi
Fornisci il modulo `searchproject` e i criteri di ricerca nell'argomento della riga di comando `/search:`, insieme alle informazioni di autenticazione rilevanti e all'URL. Questo restituirà il nome del progetto corrispondente, la visibilità (pubblico o privato) e l'URL.
`ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/organizationName /search:cred`
`ADOKit.exe searchproject /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:cred`
#### Esempio di Output```
C:\>ADOKit.exe searchproject /credential:apiKey /url:https://dev.azure.com/YourOrganization /search:"map"
==================================================
Module: searchproject
Auth Type: API Key
Search Term: map
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 4/4/2023 7:45:30 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
Name | Visibility | URL
-----------------------------------------------------------------------------------------------------
MaraudersMap | private | https://dev.azure.com/YourOrganization/MaraudersMap
4/4/23 11:45:31 Finished execution of searchproject
```
### Ricerca Codice
#### Caso d'Uso
> *Cerca codice contenente una determinata parola chiave nell'istanza di Azure DevOps*
#### Sintassi
Fornisci il modulo `searchcode` e i criteri di ricerca nell'argomento della riga di comando `/search:`, insieme alle informazioni di autenticazione rilevanti e all'URL. Questo restituirà l'URL del file di codice corrispondente, insieme alla riga del codice che corrisponde.
`ADOKit.exe searchcode /credential:apiKey /url:https://dev.azure.com/organizationName /search:password`
`ADOKit.exe searchcode /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:password`
#### Esempio di Output```
C:\>ADOKit.exe searchcode /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"password"
==================================================
Module: searchcode
Auth Type: Cookie
Search Term: password
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 3:22:21 PM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
[>] URL: https://dev.azure.com/YourOrganization/MaraudersMap/_git/MaraudersMap?path=/Test.cs
|_ Console.WriteLine("PassWord");
|_ this is some text that has a password in it
[>] URL: https://dev.azure.com/YourOrganization/TestProject2/_git/TestProject2?path=/Program.cs
|_ Console.WriteLine("PaSsWoRd");
[*] Match count : 3
3/29/23 19:22:22 Finished execution of searchcode
```
### Cerca file
#### Caso d'uso
> *Cerca file nei repository che contengono una parola chiave nel nome file in Azure DevOps*
#### Sintassi
Fornisci il modulo `searchfile` e i criteri di ricerca nell'argomento della riga di comando `/search:`, insieme a eventuali informazioni di autenticazione e URL. Questo restituirà l'URL del file corrispondente nel rispettivo repository.
`ADOKit.exe searchfile /credential:apiKey /url:https://dev.azure.com/organizationName /search:azure-pipeline`
`ADOKit.exe searchfile /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName /search:azure-pipeline`
#### Esempio di Output```
C:\>ADOKit.exe searchfile /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization /search:"test"
==================================================
Module: searchfile
Auth Type: Cookie
Search Term: test
Target URL: https://dev.azure.com/YourOrganization
Timestamp: 3/29/2023 11:28:34 AM
==================================================
[*] INFO: Checking credentials provided
[+] SUCCESS: Credentials provided are VALID.
File URL
----------------------------------------------------------------------------------------------------
https://dev.azure.com/YourOrganization/MaraudersMap/_git/4f159a8e-5425-4cb5-8d98-31e8ac86c4fa?path=/Test.cs
https://dev.azure.com/YourOrganization/ProjectWithMultipleRepos/_git/c1ba578c-1ce1-46ab-8827-f245f54934e9?path=/Test.cs
https://dev.azure.com/YourOrganization/TestProject/_git/fbcf0d6d-3973-4565-b641-3b1b897cfa86?path=/test.cs
3/29/23 15:28:37 Finished execution of searchfile
```
### Ricerca Credenziali
#### Caso d'uso
> *Cerca codice contenente segreti come password o chiavi API in Azure DevOps*
#### Sintassi
Fornisci il modulo `creds`, insieme a qualsiasi informazione di autenticazione pertinente e URL. Questo produrrà l'URL del file corrispondente nel suo repository e le righe corrispondenti in cui sono presenti le credenziali.
`ADOKit.exe creds /credential:apiKey /url:https://dev.azure.com/organizationName`
`ADOKit.exe creds /credential:"UserAuthentication=ABC123" /url:https://dev.azure.com/organizationName`
#### Output di esempio```
C:\>ADOKit.exe creds /credential:UserAuthentication=ABC123 /url:https://dev.azure.com/YourOrganization
==================================================
Module: creds
Auth Type: Cookie
```
---
[Read more](https://github.com/h4wkst3r/adokit)