
Outil d'énumération en lecture seule pour Azure DevOps qui interroge l'API REST pour exposer les projets, dépôts, connexions de service, builds, secrets de pipeline, permissions et politiques de branche lors d'évaluations de sécurité autorisées.
Un outil en ligne de commande pour énumérer les organisations Azure DevOps à l’aide d’un Personal Access Token (PAT). Il interroge l’API REST d’Azure DevOps pour exposer les projets, dépôts, connexions de service, builds, artefacts de build et paramètres de sécurité — utile lors d’évaluations de sécurité autorisées des environnements ADO.
De portée similaire à ADOKit. Principales différences : implémentation en Python, ce qui le rend plus portable ; il se concentre sur l’énumération en lecture seule et permet d’énumérer les permissions.
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
Après installation, la commande ado-enum est disponible dans votre PATH.
git clone https://github.com/ReversecLabs/azuredevops-enum.git
cd ado-enum
pip install .
Ou sans installation (exécution directe) :
pip install -r requirements.txt
python ado_enum.py --help
Fournissez votre PAT via l’option --pat ou une variable d’environnement :
export AZURE_DEVOPS_PAT=<votre-pat>
# ou
export ADO_PAT=<votre-pat>
ado-enum --org <ORG> [--pat <PAT>] [-k] <commande> [options]
| Option | Description |
|---|---|
--org | Nom de l’organisation (ex. myorg depuis https://dev.azure.com/myorg) |
--pat | Jeton PAT (ou définir AZURE_DEVOPS_PAT / ADO_PAT) |
-k / --insecure | Désactiver la vérification TLS (utile avec des proxys intercepteurs) |
projects — lister les projetsado-enum --org myorg projects
ado-enum --org myorg projects --json
repos — lister les dépôtsado-enum --org myorg repos
ado-enum --org myorg repos --json
service-endpoints — énumérer les connexions de serviceado-enum --org myorg service-endpoints
ado-enum --org myorg service-endpoints --project "MonProjet"
ado-enum --org myorg service-endpoints --json
builds — lister les buildsado-enum --org myorg builds
ado-enum --org myorg builds --project "MonProjet"
build-logs — télécharger les journaux de build# Télécharger tous les journaux de tous les projets
ado-enum --org myorg build-logs --output-dir ./logs
# Télécharger les journaux d’un build spécifique
ado-enum --org myorg build-logs --project "MonProjet" --build-id 42 --output-dir ./logs
search-code — rechercher du code dans les dépôtsNécessite que l’extension Code Search (ms.vss-code-search) soit installée dans l’organisation.
ado-enum --org myorg search-code "motdepasse"
ado-enum --org myorg search-code "connectionString"
La sortie est au format JSON avec les URLs des fichiers correspondants et les lignes qui correspondent.
enumerate — énumérer les politiques de branche, les vérifications et les permissionsado-enum --org myorg enumerate
ado-enum --org myorg enumerate --project "MonProjet"
Affiche des tableaux pour :
permissions — lister les groupes, les espaces de noms de sécurité et les permissions ACL# Lister tous les groupes et permissions ACL
ado-enum --org myorg permissions
# Lister les groupes d’un projet spécifique
ado-enum --org myorg permissions --project "MonProjet"
# Lister uniquement les groupes au niveau de l’organisation
ado-enum --org myorg permissions --org-level
# Afficher les groupes et permissions d’un utilisateur spécifique
ado-enum --org myorg permissions --user "[email protected]"
# Afficher les permissions d’un groupe spécifique
ado-enum --org myorg permissions --group "Administrateurs du projet"
Le PAT doit avoir les permissions Graph (lecture) et Identity (lecture) pour la résolution complète des appartenances aux groupes et des entrées ACL.
whoami — identifier l’utilisateur authentifiéado-enum --org myorg whoami
Lit l’en-tête x-vss-userdata pour identifier le propriétaire du PAT, puis interroge l’API Graph pour résoudre son nom d’affichage, son alias d’annuaire et ses appartenances aux groupes.
Nécessite que le PAT ait la permission Graph (lecture) pour la résolution des appartenances aux groupes.
pipeline-vars — lister les variables de pipelineado-enum --org myorg pipeline-vars
ado-enum --org myorg pipeline-vars --project "MonProjet"
ado-enum --org myorg pipeline-vars --json
Liste toutes les variables non secrètes définies dans les définitions de pipeline de build. Les variables secrètes sont exclues ; utilisez pipeline-secrets pour les énumérer.
pipeline-secrets — lister les noms des variables secrètes du pipelineado-enum --org myorg pipeline-secrets
ado-enum --org myorg pipeline-secrets --project "MonProjet"
ado-enum --org myorg pipeline-secrets --json
Liste les variables marquées isSecret dans les définitions de pipeline de build. Les valeurs ne sont pas exposées par l’API et sont donc affichées comme [HIDDEN] ; la commande révèle leurs noms, le pipeline auquel elles appartiennent et le projet dans lequel elles se trouvent.
variable-groups — lister le contenu des groupes de variablesado-enum --org myorg variable-groups
ado-enum --org myorg variable-groups --project "MonProjet"
ado-enum --org myorg variable-groups --json
Liste toutes les variables stockées dans les groupes de variables à travers les projets. Les variables secrètes au sein des groupes sont affichées avec leurs noms et [HIDDEN] comme valeur.
secure-files — lister les fichiers sécurisésado-enum --org myorg secure-files
ado-enum --org myorg secure-files --project "MonProjet"
ado-enum --org myorg secure-files --json