Basic Gitea Information
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Η βασική δομή του περιβάλλοντος Gitea είναι να ομαδοποιεί τα repos κατά οργάνωση(εις), καθένα από αυτά μπορεί να περιέχει πολλούς αποθετηρίους και πολλές ομάδες. Ωστόσο, σημειώστε ότι όπως και στο github, οι χρήστες μπορούν να έχουν repos εκτός της οργάνωσης.
Επιπλέον, ένας χρήστης μπορεί να είναι μέλος διαφορετικών οργανώσεων. Μέσα στην οργάνωση, ο χρήστης μπορεί να έχει διαφορετικές άδειες πρόσβασης σε κάθε αποθετήριο.
Ένας χρήστης μπορεί επίσης να είναι μέλος διαφορετικών ομάδων με διαφορετικές άδειες πρόσβασης σε διαφορετικά repos.
Και τέλος, οι αποθετήρες μπορεί να έχουν ειδικούς μηχανισμούς προστασίας.
Όταν μια οργάνωση δημιουργείται, μια ομάδα που ονομάζεται Ιδιοκτήτες δημιουργείται και ο χρήστης τοποθετείται μέσα σε αυτήν. Αυτή η ομάδα θα δώσει διαχειριστική πρόσβαση στην οργάνωση, αυτές οι άδειες και το όνομα της ομάδας δεν μπορούν να τροποποιηθούν.
Διαχειριστές οργανώσεων (ιδιοκτήτες) μπορούν να επιλέξουν την ορατότητα της οργάνωσης:
Δημόσια
Περιορισμένη (μόνο για συνδεδεμένους χρήστες)
Ιδιωτική (μόνο για μέλη)
Διαχειριστές οργανώσεων μπορούν επίσης να υποδείξουν αν οι διαχειριστές αποθετηρίων μπορούν να προσθέσουν ή να αφαιρέσουν πρόσβαση για ομάδες. Μπορούν επίσης να υποδείξουν τον μέγιστο αριθμό αποθετηρίων.
Κατά τη δημιουργία μιας νέας ομάδας, επιλέγονται αρκετές σημαντικές ρυθμίσεις:
Υποδεικνύεται οι αποθετήρες της οργάνωσης που θα μπορούν να έχουν πρόσβαση τα μέλη της ομάδας: συγκεκριμένοι αποθετήρες (αποθετήρες στους οποίους έχει προστεθεί η ομάδα) ή όλοι.
Υποδεικνύεται επίσης αν τα μέλη μπορούν να δημιουργήσουν νέους αποθετήρες (ο δημιουργός θα αποκτήσει διαχειριστική πρόσβαση σε αυτόν)
Οι άδειες που θα έχουν τα μέλη του αποθετηρίου:
Διαχειριστική πρόσβαση
Συγκεκριμένη πρόσβαση:
Σε ένα αποθετήριο, ο διαχειριστής οργανώσεων και οι διαχειριστές αποθετηρίων (αν επιτρέπεται από την οργάνωση) μπορούν να διαχειρίζονται τους ρόλους που δίνονται στους συνεργάτες (άλλους χρήστες) και τις ομάδες. Υπάρχουν 3 πιθανοί ρόλοι:
Διαχειριστής
Γράψιμο
Ανάγνωση
Χρησιμοποιώντας όνομα χρήστη + κωδικό πρόσβασης και πιθανώς (και συνιστάται) 2FA.
Μπορείτε να ρυθμίσετε τον λογαριασμό σας με ένα ή περισσότερα δημόσια κλειδιά που επιτρέπουν στο σχετικό ιδιωτικό κλειδί να εκτελεί ενέργειες εκ μέρους σας. http://localhost:3000/user/settings/keys
Δεν μπορείτε να προσποιηθείτε τον χρήστη με αυτά τα κλειδιά, αλλά αν δεν τα χρησιμοποιείτε, μπορεί να είναι δυνατό να ανακαλυφθείτε για την αποστολή commits χωρίς υπογραφή.
Μπορείτε να δημιουργήσετε προσωπικό access token για να δώσετε σε μια εφαρμογή πρόσβαση στον λογαριασμό σας. Ένα προσωπικό access token δίνει πλήρη πρόσβαση στον λογαριασμό σας: http://localhost:3000/user/settings/applications
Όπως και τα προσωπικά access tokens, οι Oauth εφαρμογές θα έχουν πλήρη πρόσβαση στον λογαριασμό σας και στους τόπους στους οποίους έχει πρόσβαση ο λογαριασμός σας, επειδή, όπως αναφέρεται στα docs, οι τομείς δεν υποστηρίζονται ακόμη:
Τα deploy keys μπορεί να έχουν πρόσβαση μόνο για ανάγνωση ή εγγραφή στον αποθετήριο, οπότε μπορεί να είναι ενδιαφέρον να παραβιαστούν συγκεκριμένοι αποθετήρες.
Οι προστασίες κλάδου έχουν σχεδιαστεί για να μην δίνουν πλήρη έλεγχο ενός αποθετηρίου στους χρήστες. Ο στόχος είναι να θέσουν αρκετές μεθόδους προστασίας πριν μπορέσουν να γράψουν κώδικα σε κάποιον κλάδο.
Οι προστασίες κλάδου ενός αποθετηρίου μπορούν να βρεθούν στο https://localhost:3000/<orgname>/<reponame>/settings/branches
Δεν είναι δυνατό να οριστεί προστασία κλάδου σε επίπεδο οργάνωσης. Έτσι, όλες πρέπει να δηλωθούν σε κάθε αποθετήριο.
Διαφορετικές προστασίες μπορούν να εφαρμοστούν σε έναν κλάδο (όπως στον master):
Απενεργοποίηση Push: Κανείς δεν μπορεί να σπρώξει σε αυτόν τον κλάδο
Ενεργοποίηση Push: Οποιοσδήποτε με πρόσβαση μπορεί να σπρώξει, αλλά όχι να σπρώξει με δύναμη.
Λίστα επιτρεπόμενων Push: Μόνο επιλεγμένοι χρήστες/ομάδες μπορούν να σπρώξουν σε αυτόν τον κλάδο (αλλά όχι να σπρώξουν με δύναμη)
Ενεργοποίηση λίστας επιτρεπόμενων συγχωνεύσεων: Μόνο οι επιτρεπόμενοι χρήστες/ομάδες μπορούν να συγχωνεύσουν PRs.
Ενεργοποίηση ελέγχων κατάστασης: Απαιτούνται έλεγχοι κατάστασης για να περάσουν πριν από τη συγχώνευση.
Απαιτούνται εγκρίσεις: Υποδείξτε τον αριθμό των εγκρίσεων που απαιτούνται πριν μπορέσει να συγχωνευθεί ένα PR.
Περιορισμός εγκρίσεων σε επιτρεπόμενους: Υποδείξτε χρήστες/ομάδες που μπορούν να εγκρίνουν PRs.
Αποκλεισμός συγχώνευσης σε απορριφθείσες αναθεωρήσεις: Εάν ζητηθούν αλλαγές, δεν μπορεί να συγχωνευθεί (ακόμη και αν οι άλλοι έλεγχοι περάσουν)
Αποκλεισμός συγχώνευσης σε επίσημες αιτήσεις αναθεώρησης: Εάν υπάρχουν επίσημες αιτήσεις αναθεώρησης, δεν μπορεί να συγχωνευθεί
Ακύρωση παλαιών εγκρίσεων: Όταν υπάρχουν νέες commits, οι παλαιές εγκρίσεις θα ακυρωθούν.
Απαιτούνται υπογεγραμμένα commits: Τα commits πρέπει να είναι υπογεγραμμένα.
Αποκλεισμός συγχώνευσης εάν το pull request είναι ξεπερασμένο
Προστατευμένα/Μη προστατευμένα μοτίβα αρχείων: Υποδείξτε μοτίβα αρχείων για προστασία/μη προστασία από αλλαγές
Όπως μπορείτε να δείτε, ακόμη και αν καταφέρατε να αποκτήσετε κάποια διαπιστευτήρια ενός χρήστη, οι αποθετήρες μπορεί να είναι προστατευμένοι αποτρέποντάς σας να σπρώξετε κώδικα στον master για παράδειγμα, για να παραβιάσετε τη διαδικασία CI/CD.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)