
Uno strumento da riga di comando per enumerare le organizzazioni Azure DevOps utilizzando un Personal Access Token (PAT). Interroga l'API REST di Azure DevOps per esporre progetti, repository, connessioni di servizio, build, artefatti di build e impostazioni di sicurezza — utile durante valutazioni di sicurezza autorizzate di ambienti ADO.
Di portata simile ad ADOKit. Differenze principali: implementazione in Python, quindi più portabile; si concentra sull'enumerazione in sola lettura e offre la possibilità di enumerare i permessi.
Azure DevOps enumeration tool — projects, repositories, service connections, and more.
positional arguments:
{projects,repos,service-endpoints,builds,build-logs,search-code,enumerate,permissions,whoami,pipeline-vars,pipeline-secrets,variable-groups,secure-files,approvals-checks,branch-policies,build-artifacts}
projects List projects in the organisation.
repos List git repositories in the organisation.
service-endpoints Enumerate service connections.
builds List builds for projects.
build-logs Download build logs.
search-code Search for code across repositories.
enumerate Enumerate current logged in user, repos, service connections, and projects.
permissions List groups, security namespaces, and ACL permissions.
whoami Identify the authenticated user and list their group memberships.
pipeline-vars List all variables defined in build pipelines.
pipeline-secrets List secret variable names defined in build pipelines.
variable-groups List variables defined in variable groups.
secure-files List secure files registered in projects.
approvals-checks Enumerate approvals and checks for protected pipeline resources.
branch-policies Enumerate branch policies for a repository.
build-artifacts List and download build artifacts.
options:
-h, --help show this help message and exit
--org ORG Azure DevOps organisation name (e.g. myorg)
--pat PAT Personal Access Token. If omitted, reads AZURE_DEVOPS_PAT or ADO_PAT environment variable.
-k, --insecure Disable TLS verification (useful with intercepting proxies).
pip install git+https://github.com/ReversecLabs/azuredevops-enum.git
Dopo l'installazione, il comando ado-enum è disponibile nel tuo PATH.
git clone https://github.com/ReversecLabs/azuredevops-enum.git
cd ado-enum
pip install .
Oppure senza installazione (esecuzione diretta):
pip install -r requirements.txt
python ado_enum.py --help
Fornisci il tuo PAT tramite il flag --pat o una variabile d'ambiente:
export AZURE_DEVOPS_PAT=<your-pat>
# or
export ADO_PAT=<your-pat>
ado-enum --org <ORG> [--pat <PAT>] [-k] <command> [options]
projects — elenca i progettiado-enum --org myorg projects
ado-enum --org myorg projects --json
repos — elenca i repositoryado-enum --org myorg repos
ado-enum --org myorg repos --json
service-endpoints — enumera le connessioni di servizioado-enum --org myorg service-endpoints
ado-enum --org myorg service-endpoints --project "MyProject"
ado-enum --org myorg service-endpoints --json
builds — elenca le buildado-enum --org myorg builds
ado-enum --org myorg builds --project "MyProject"
build-logs — scarica i log di build# Download all logs across all projects
ado-enum --org myorg build-logs --output-dir ./logs
# Download logs for a specific build
ado-enum --org myorg build-logs --project "MyProject" --build-id 42 --output-dir ./logs
search-code — ricerca codice nei repositoryRichiede che l'estensione Code Search (ms.vss-code-search) sia installata nell'organizzazione.
ado-enum --org myorg search-code "password"
ado-enum --org myorg search-code "connectionString"
L'output è in JSON con gli URL dei file corrispondenti e le righe che corrispondono.
enumerate — enumera branch policy, check e permessiado-enum --org myorg enumerate
ado-enum --org myorg enumerate --project "MyProject"
Restituisce tabelle per:
permissions — elenca gruppi, spazi dei nomi di sicurezza e permessi ACL# List all groups and ACL permissions
ado-enum --org myorg permissions
# List groups scoped to a specific project
ado-enum --org myorg permissions --project "MyProject"
# List org-level groups only
ado-enum --org myorg permissions --org-level
# Show groups and permissions for a specific user
ado-enum --org myorg permissions --user "[email protected]"
# Show permissions for a specific group
ado-enum --org myorg permissions --group "Project Administrators"
Richiede che il PAT abbia gli ambiti Graph (lettura) e Identity (lettura) per la risoluzione completa delle appartenenze ai gruppi e delle voci ACL.
whoami — identifica l'utente autenticatoado-enum --org myorg whoami
Legge l'header x-vss-userdata per identificare il proprietario del PAT, quindi interroga l'API Graph per risolvere nome visualizzato, alias di directory e appartenenze ai gruppi.
Richiede che il PAT abbia l'ambito Graph (lettura) per la risoluzione delle appartenenze ai gruppi.
pipeline-vars — elenca le variabili di pipelineado-enum --org myorg pipeline-vars
ado-enum --org myorg pipeline-vars --project "MyProject"
ado-enum --org myorg pipeline-vars --json
Elenca tutte le variabili non segrete definite nelle definizioni di build pipeline. Le variabili segrete sono escluse; usa pipeline-secrets per enumerarle.
pipeline-secrets — elenca i nomi delle variabili segrete di pipelineado-enum --org myorg pipeline-secrets
ado-enum --org myorg pipeline-secrets --project "MyProject"
ado-enum --org myorg pipeline-secrets --json
Elenca le variabili contrassegnate come isSecret nelle definizioni di build pipeline. I valori non sono esposti dall'API e pertanto vengono mostrati come [HIDDEN]; il comando ne evidenzia i nomi, la pipeline di appartenenza e il progetto in cui si trovano.
variable-groups — elenca i contenuti dei gruppi di variabiliado-enum --org myorg variable-groups
ado-enum --org myorg variable-groups --project "MyProject"
ado-enum --org myorg variable-groups --json
Elenca tutte le variabili memorizzate nei gruppi di variabili nei vari progetti. Le variabili segrete all'interno dei gruppi vengono mostrate con i loro nomi e [HIDDEN] come valore.
secure-files — elenca i file sicuriado-enum --org myorg secure-files
ado-enum --org myorg secure-files --project "MyProject"
ado-enum --org myorg secure-files --json
Elenca i file sicuri registrati nella libreria di ADO Pipelines. I contenuti dei file non vengono scaricati; il comando restituisce i metadati: nome del file, ID, chi lo ha creato e quando.
approvals-checks — enumera approvazioni e check per le risorse protette# Enumerate all resource types across all projects
ado-enum --org myorg approvals-checks
# Enumerate a specific resource type
ado-enum --org myorg approvals-checks repositories
ado-enum --org myorg approvals-checks service-connections
# Limit to a specific project
ado-enum --org myorg approvals-checks --project "MyProject"
ado-enum --org myorg approvals-checks environments --project "MyProject"
# JSON output
ado-enum --org myorg approvals-checks --json
Tipi di risorse supportati: agent-pools, environments, repositories, secure-files, service-connections, variable-groups. Se non viene specificato alcun tipo di risorsa, vengono enumerati tutti i tipi.
branch-policies — enumera le branch policy per un repository# List all branch policies for a repository
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo"
# Filter to a specific branch
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --branch main
# JSON output
ado-enum --org myorg branch-policies --project "MyProject" --repository "MyRepo" --json
--project e --repository sono obbligatori. --branch è opzionale; senza di esso vengono restituite tutte le policy per il repository.
build-artifacts — elenca e scarica gli artefatti di build# List all artefacts
ado-enum --org myorg build-artifacts
# Download all artefacts
ado-enum --org myorg build-artifacts --download
# Download all artefacts for a specific build
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 --download
# Download a named artefact
ado-enum --org myorg build-artifacts --project "MyProject" --build-id 42 \
--download --artifact-name "drop" --output-dir ./artefacts
Passa -k per disabilitare la verifica TLS quando si instrada il traffico attraverso un proxy di intercettazione:
proxychains ado-enum --org myorg -k projects
Oppure imposta le variabili d'ambiente HTTPS_PROXY / HTTP_PROXY — requests le rispetterà automaticamente.
| Flag | Descrizione |
|---|
--org | Nome dell'organizzazione (es. myorg da https://dev.azure.com/myorg) |
--pat | Token PAT (oppure imposta AZURE_DEVOPS_PAT / ADO_PAT) |
-k / --insecure | Disabilita la verifica TLS (utile con proxy di intercettazione) |