
# Azure DevOps 읽기 전용 열거 도구 권한이 부여된 보안 평가 중 REST API를 쿼리하여 프로젝트, 리포지토리, 서비스 연결, 빌드, 파이프라인 비밀번호, 권한 및 분기 정책을 표면화하는 읽기 전용 Azure DevOps 열거 도구입니다.
PAT(개인 액세스 토큰)을 사용하여 Azure DevOps 조직을 열거하기 위한 명령줄 도구입니다. Azure DevOps REST API를 쿼리하여 프로젝트, 리포지토리, 서비스 연결, 빌드, 빌드 아티팩트 및 보안 설정을 표시합니다. ADO 환경에 대한 공인된 보안 평가 중에 유용합니다.
범위는 ADOKit와 유사합니다. 주요 차이점: Python 구현으로 더 이식성이 뛰어나며, 읽기 전용 열거에 중점을 두고 권한 열거 기능을 제공합니다.
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
설치 후 ado-enum 명령이 PATH에서 사용할 수 있습니다.
git clone https://github.com/ReversecLabs/azuredevops-enum.git
cd ado-enum
pip install .
또는 설치 없이(직접 실행):
pip install -r requirements.txt
python ado_enum.py --help
--pat 플래그 또는 환경 변수를 통해 PAT를 제공하세요:
export AZURE_DEVOPS_PAT=<your-pat>
# or
export ADO_PAT=<your-pat>
ado-enum --org <ORG> [--pat <PAT>] [-k] <command> [options]
projects — 프로젝트 나열ado-enum --org myorg projects
ado-enum --org myorg projects --json
repos — 리포지토리 나열ado-enum --org myorg repos
ado-enum --org myorg repos --json
service-endpoints — 서비스 연결 열거ado-enum --org myorg service-endpoints
ado-enum --org myorg service-endpoints --project "MyProject"
ado-enum --org myorg service-endpoints --json
builds — 빌드 나열ado-enum --org myorg builds
ado-enum --org myorg builds --project "MyProject"
build-logs — 빌드 로그 다운로드# 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 — 리포지토리 전체에서 코드 검색조직에 Code Search 확장(ms.vss-code-search)이 설치되어 있어야 합니다.
ado-enum --org myorg search-code "password"
ado-enum --org myorg search-code "connectionString"
출력은 일치하는 파일 URL과 일치한 줄이 포함된 JSON입니다.
enumerate — 분기 정책, 검사 및 권한 열거ado-enum --org myorg enumerate
ado-enum --org myorg enumerate --project "MyProject"
다음에 대한 테이블을 출력합니다:
permissions — 그룹, 보안 네임스페이스 및 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"
그룹 구성원 및 ACL 항목을 완전히 확인하려면 PAT에 Graph(읽기) 및 Identity(읽기) 범위가 필요합니다.
whoami — 인증된 사용자 식별ado-enum --org myorg whoami
x-vss-userdata 헤더를 읽어 PAT 소유자를 식별한 다음 Graph API를 쿼리하여 표시 이름, 디렉터리 별칭 및 그룹 구성원을 확인합니다.
그룹 구성원을 확인하려면 PAT에 Graph(읽기) 범위가 필요합니다.
pipeline-vars — 파이프라인 변수 나열ado-enum --org myorg pipeline-vars
ado-enum --org myorg pipeline-vars --project "MyProject"
ado-enum --org myorg pipeline-vars --json
빌드 파이프라인 정의에 정의된 모든 비밀 변수가 아닌 변수를 나열합니다. 비밀 변수는 제외됩니다. 해당 변수를 열거하려면 pipeline-secrets를 사용하세요.
pipeline-secrets — 파이프라인 비밀 변수 이름 나열ado-enum --org myorg pipeline-secrets
ado-enum --org myorg pipeline-secrets --project "MyProject"
ado-enum --org myorg pipeline-secrets --json
빌드 파이프라인 정의에서 isSecret으로 표시된 변수를 나열합니다. 값은 API에서 노출되지 않으므로 [HIDDEN]으로 표시됩니다. 이 명령은 변수 이름, 속한 파이프라인 및 프로젝트를 표시합니다.
variable-groups — 변수 그룹 내용 나열ado-enum --org myorg variable-groups
ado-enum --org myorg variable-groups --project "MyProject"
ado-enum --org myorg variable-groups --json
프로젝트 전반의 변수 그룹에 저장된 모든 변수를 나열합니다. 그룹 내 비밀 변수는 이름과 값 [HIDDEN]으로 표시됩니다.
secure-files — 보안 파일 나열ado-enum --org myorg secure-files
ado-enum --org myorg secure-files --project "MyProject"
ado-enum --org myorg secure-files --json
ADO Pipelines 라이브러리에 등록된 보안 파일을 나열합니다. 파일 내용은 다운로드하지 않으며, 명령은 파일 이름, ID, 생성자 및 생성 시점의 메타데이터를 반환합니다.
approvals-checks — 보호된 리소스에 대한 승인 및 검사 열거# 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
지원되는 리소스 유형: agent-pools, environments, repositories, secure-files, service-connections, variable-groups. 리소스 유형을 지정하지 않으면 모든 유형이 열거됩니다.
branch-policies — 리포지토리의 분기 정책 열거# 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 및 --repository는 필수입니다. --branch는 선택 사항이며, 지정하지 않으면 리포지토리의 모든 정책이 반환됩니다.
build-artifacts — 빌드 아티팩트 나열 및 다운로드# 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
인터셉팅 프록시를 경유할 때 TLS 검증을 비활성화하려면 -k를 전달하세요:
proxychains ado-enum --org myorg -k projects
또는 HTTPS_PROXY / HTTP_PROXY 환경 변수를 설정하세요. requests가 자동으로 이를 처리합니다.
| 플래그 | 설명 |
|---|
--org | 조직 이름 (예: https://dev.azure.com/myorg의 myorg) |
--pat | PAT 토큰(또는 AZURE_DEVOPS_PAT / ADO_PAT 설정) |
-k / --insecure | TLS 검증 비활성화(인터셉팅 프록시 사용 시 유용) |