Gitlab
Gitlab checks
Search for secrets
#Scan repo
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest scan .
#Get results
docker run -v "$PWD":/scan ghcr.io/praetorian-inc/noseyparker:latest reportReconnaissance
Check public repositories
membership=true— только проекты, где ты участникper_page=100— увеличивает количество результатов (GitLab по умолчанию возвращает 20)
Route /explore allow to go behind the login panel
Abusing GitLab token
Token prefixes
The following table shows the prefixes for each type of token.
Personal access token
glpat-
OAuth Application Secret
gloas-
Impersonation token
glpat-
Project access token
glpat-
Group access token
glpat-
Deploy token
gldt- (Added in GitLab 16.7)
Runner authentication token
glrt- or glrtr- if created via registration token
CI/CD Job token
glcbt-
• (Introduced in GitLab 16.8 behind a feature flag named prefix_ci_build_tokens. Disabled by default.)
• (Generally available in GitLab 16.9. Feature flag prefix_ci_build_tokens removed.)
Trigger token
glptt-
Feed token
glft-
Incoming mail token
glimt-
GitLab agent for Kubernetes token
glagent-
GitLab session cookies
_gitlab_session=
SCIM Tokens
glsoat-
• (Introduced in GitLab 16.8 behind a feature flag named prefix_scim_tokens. Disabled by default.)
• (Generally available in GitLab 16.9. Feature flag prefix_scim_tokens removed.)
Feature Flags Client token
glffct-
Get variables from projects
define count pages and replace max page in seq. First take all projects id
Then try get var
Also try get gitlab-group vars (мне пока лень)
Abusing GitLab Runners
Script for steal tasks by requesting them faster than a real runner - https://github.com/Frichetten/gitlab-runner-research
Check projects access level
membership=true— только проекты, где ты участникper_page=100— увеличивает количество результатов (GitLab по умолчанию возвращает 20)
Уровни доступа:
10— Guest (только чтение)20— Reporter (чтение + доступ к CI/CD)30— Developer (чтение + запись + запуск CI/CD)40— Maintainer (полный доступ, кроме удаления проекта)50— Owner (полный доступ)
Get current user
Groups abuse
CI Abuse
Exec code in runner
Exec code in runner service
Services can also have privileged containers
Postexploit
Get all ci_variables from filesystem gitlab instance.
Way 1. open gitlab-rails console
then enter script
Way 2. Read encrypted vars from db
read aes key for decryption
then decrypt it 😄 AES-256-CBC algo
Last updated