Gitea Security

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

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

Τι είναι το Gitea

Το Gitea είναι μια αυτο-φιλοξενούμενη κοινοτικά διαχειριζόμενη ελαφριά λύση φιλοξενίας κώδικα που έχει γραφτεί σε Go.

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

pageBasic Gitea Information

Εργαστήριο

Για να εκτελέσετε μια τοπική εγκατάσταση του Gitea, μπορείτε απλά να εκτελέσετε έναν docker container:

docker run -p 3000:3000 gitea/gitea

Συνδεθείτε στη θύρα 3000 για να αποκτήσετε πρόσβαση στην ιστοσελίδα.

Μπορείτε επίσης να το εκτελέσετε με το kubernetes:

helm repo add gitea-charts https://dl.gitea.io/charts/
helm install gitea gitea-charts/gitea

Ανεξουσιοδότητη Απαρίθμηση

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

Εσωτερική Εκμετάλλευση

Για αυτό το σενάριο θα υποθέσουμε ότι έχετε αποκτήσει πρόσβαση σε έναν λογαριασμό github.

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

Σημειώστε ότι μπορεί να χρησιμοποιείται διπλή επαλήθευση (2FA), οπότε θα μπορείτε να έχετε πρόσβαση σε αυτές τις πληροφορίες μόνο εάν περάσετε και αυτόν τον έλεγχο.

Σημειώστε ότι εάν καταφέρετε να κλέψετε το cookie i_like_gitea (που είναι ρυθμισμένο αυτή τη στιγμή με SameSite: Lax), μπορείτε να προσωποποιήσετε πλήρως τον χρήστη χωρίς να χρειάζεστε διαπιστευτήρια ή 2FA.

Με κλειδί SSH χρήστη

Το Gitea επιτρέπει στους χρήστες να ορίζουν κλειδιά SSH που θα χρησιμοποιηθούν ως μέθοδος επαλήθευσης για την ανάπτυξη κώδικα εκ μέρους τους (δεν εφαρμόζεται 2FA).

Με αυτό το κλειδί μπορείτε να πραγματοποιήσετε αλλαγές σε αποθετήρια όπου ο χρήστης έχει κάποια δικαιώματα, αλλά δεν μπορείτε να το χρησιμοποιήσετε για να έχετε πρόσβαση στο API του gitea για να απαριθμήσετε το περιβάλλον. Ωστόσο, μπορείτε να απαριθμήσετε τις τοπικές ρυθμίσεις για να λάβετε πληροφορίες σχετικά με τα αποθετήρια και τον χρήστη στον οποίο έχετε πρόσβαση:

# Go to the the repository folder
# Get repo config and current user name and email
git config --list

Εάν ο χρήστης έχει ρυθμίσει το όνομα χρήστη του ως το όνομα χρήστη του gitea, μπορείτε να έχετε πρόσβαση στα δημόσια κλειδιά που έχει ορίσει στον λογαριασμό του στο https://github.com/<gitea_username>.keys, μπορείτε να ελέγξετε αυτό για να επιβεβαιώσετε ότι το ιδιωτικό κλειδί που βρήκατε μπορεί να χρησιμοποιηθεί.

Τα κλειδιά SSH μπορούν επίσης να οριστούν σε αποθετήρια ως κλειδιά αναπτύξεων. Οποιοσδήποτε με πρόσβαση σε αυτό το κλειδί θα μπορεί να εκκινήσει έργα από ένα αποθετήριο. Συνήθως, σε έναν διακομιστή με διάφορα κλειδιά αναπτύξεων, το τοπικό αρχείο ~/.ssh/config θα σας δώσει πληροφορίες σχετικά με το ποιο κλειδί σχετίζεται.

Κλειδιά GPG

Όπως εξηγείται εδώ, μερικές φορές είναι απαραίτητο να υπογράφετε τις δεσμεύσεις ή μπορεί να αποκαλυφθείτε.

Ελέγξτε τοπικά εάν ο τρέχων χρήστης έχει κάποιο κλειδί με:

gpg --list-secret-keys --keyid-format=long

Με το User Token

Για μια εισαγωγή σχετικά με τα User Tokens ελέγξτε τις βασικές πληροφορίες.

Ένα user token μπορεί να χρησιμοποιηθεί αντί για κωδικό πρόσβασης για πιστοποίηση εναντίον του διακομιστή Gitea μέσω του API. Θα έχει πλήρη πρόσβαση στον λογαριασμό του χρήστη.

Με την εφαρμογή Oauth

Για μια εισαγωγή σχετικά με τις εφαρμογές Gitea Oauth ελέγξτε τις βασικές πληροφορίες.

Ένας επιτιθέμενος μπορεί να δημιουργήσει μια κακόβουλη εφαρμογή Oauth για να έχει πρόσβαση σε προνομιούχα δεδομένα/ενέργειες των χρηστών που τους αποδέχονται πιθανότατα ως μέρος μιας επίθεσης phishing.

Όπως εξηγείται στις βασικές πληροφορίες, η εφαρμογή θα έχει πλήρη πρόσβαση στον λογαριασμό του χρήστη.

Παράκαμψη Προστασίας Κλαδιού

Στο Github έχουμε τις ενέργειες του github που από προεπιλογή λαμβάνουν ένα διακριτικό με δυνατότητα εγγραφής στο αποθετήριο που μπορεί να χρησιμοποιηθεί για παράκαμψη των προστασιών του κλαδιού. Σε αυτήν την περίπτωση αυτό δεν υπάρχει, οπότε οι παρακάμψεις είναι πιο περιορισμένες. Αλλά ας δούμε τι μπορεί να γίνει:

  • Ενεργοποίηση Παραμονής: Αν οποιοσδήποτε με δυνατότητα εγγραφής μπορεί να προωθήσει στο κλαδί, απλά προωθήστε το.

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

  • Ενεργοποίηση Λευκής Λίστας Συγχώνευσης: Αν υπάρχει μια λευκή λίστα συγχώνευσης, πρέπει να είστε μέσα σε αυτήν.

  • Απαιτούνται έγκριση περισσότερη από 0: Τότε... πρέπει να παραβιάσετε έναν άλλο χρήστη.

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

  • Απόρριψη ανενεργών εγκρίσεων: Αν οι εγκρίσεις δεν αφαιρούνται με νέες ενημερώσεις, μπορείτε να αποκτήσετε πρόσβαση σε ένα ήδη εγκεκριμένο αίτημα ενσωμάτωσης για να εισαγάγετε τον κώδικά σας και να συγχωνεύσετε το αίτημα ενσωμάτωσης.

Σημειώστε ότι αν είστε διαχειριστής οργανισμού/αποθετηρίου μπορείτε να παρακάμψετε τις προστασίες.

Απαρίθμηση Webhooks

Τα Webhooks είναι σε θέση να στείλουν συγκεκριμένες πληροφορίες του gitea σε κάποια μέρη. Μπορείτε να εκμεταλλευτείτε αυτήν την επικοινωνία. Ωστόσο, συνήθως ένα μυστικό που δεν μπορείτε να ανακτήσετε έχει οριστεί στο webhook που θα αποτρέψει εξωτερικούς χρήστες που γνωρίζουν το URL του webhook αλλά όχι το μυστικό να εκμεταλλευτούν αυτό το webhook. Ωστόσο, σε ορισμένες περιπτώσεις, αντί να ορίζουν το μυστικό στη θέση του, το ορίζουν στο URL ως παράμετρο, οπότε η έλεγχος των URL μπορεί να σας επιτρέψει να βρείτε μυστικά και άλλα μέρη που μπορείτε να εκμεταλλευτείτε περαιτέρω.

Τα Webhooks μπορούν να οριστούν σε επίπεδο αποθετηρίου και οργανισμού.

Μετά την Εκμετάλλευση

Μέσα στον διακομιστή

Αν κατά κάποιον τρόπο καταφέρετε να μπείτε μέσα στον διακομιστή όπου τρέχει το gitea, θα πρέπει να αναζητήσετε το αρχείο ρυθμίσεων του gitea. Από προεπιλογή βρίσκεται στη διαδρομή /data/gitea/conf/app.ini

Σε αυτό το αρχείο μπορείτε να βρείτε κλειδιά και κωδικούς πρόσβασης.

Στη διαδρομή του gitea (προεπιλογή: /data/gitea) μπορείτε επίσης να βρείτε ενδιαφέρουσες πληροφορίες όπως:

  • Η sqlite βάση δεδομένων: Αν το gitea δεν χρησιμοποιεί μια εξωτερική βάση δεδομ

Last updated