Gh Actions - Context Script Injections

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Βασικές Πληροφορίες

Σημειώστε ότι υπάρχουν ορισμένα πεδία πλαισίου του github των οποίων οι τιμές ελέγχονται από τον χρήστη που δημιουργεί το PR. Εάν η ενέργεια του github χρησιμοποιεί αυτά τα δεδομένα για να εκτελέσει οτιδήποτε, μπορεί να οδηγήσει σε αυθαίρετη εκτέλεση κώδικα. Αυτά τα πεδία πλαισίου συνήθως τελειώνουν με body, default_branch, email, head_ref, label, message, name, page_name,ref και title. Για παράδειγμα (λίστα από αυτό το άρθρο):

  • github.event.comment.body

  • github.event.issue.body

  • github.event.issue.title

  • github.head_ref

  • github.pull_request.*

  • github.*.*.authors.name

  • github.*.*.authors.email

Σημειώστε ότι υπάρχουν λιγότερο προφανείς πηγές πιθανώς μη αξιόπιστης εισόδου, όπως ονόματα κλαδιών και διευθύνσεις email, που μπορούν να είναι αρκετά ευέλικτες όσον αφορά το επιτρεπόμενο περιεχόμενο τους. Για παράδειγμα, zzz";echo${IFS}"hello";# θα ήταν ένα έγκυρο όνομα κλαδιού και θα μπορούσε να αποτελέσει ένα δυνητικό διανυσματικό επίθεσης για έναν στόχο αποθετηρίου.

Παράδειγμα μιας επίθεσης εισαγωγής σεναρίου

Μια επίθεση εισαγωγής σεναρίου μπορεί να συμβεί απευθείας μέσα στο ενσωματωμένο σενάριο μιας ροής εργασίας. Στο παρακάτω παράδειγμα, μια ενέργεια χρησιμοποιεί μια έκφραση για να ελέγξει την ορθότητα του τίτλου ενός pull request, αλλά προσθέτει επίσης τον κίνδυνο εισαγωγής σεναρίου:

- name: Check PR title
run: |
title="${{ github.event.pull_request.title }}"
if [[ $title =~ ^octocat ]]; then
echo "PR title starts with 'octocat'"
exit 0
else
echo "PR title did not start with 'octocat'"
exit 1
fi

Πριν την εκτέλεση του shell script, οι εκφράσεις μέσα στο ${{ }} αξιολογούνται και στη συνέχεια αντικαθίστανται με τις αντίστοιχες τιμές, πράγμα που μπορεί να το καθιστά ευάλωτο σε εντολές εισαγωγής κελύφους.

Για να εισαχθούν εντολές σε αυτήν τη ροή εργασίας, ο επιτιθέμενος μπορεί να δημιουργήσει ένα αίτημα εξαγωγής με τίτλο a"; ls $GITHUB_WORKSPACE"

Σε αυτό το παράδειγμα, το χαρακτήρας " χρησιμοποιείται για να διακόψει την δήλωση title="${{ github.event.pull_request.title }}", επιτρέποντας την εκτέλεση της εντολής ls στον runner.

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated