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

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

Βασική Δομή

Η βασική δομή του περιβάλλοντος Gitea είναι να ομαδοποιεί τα repos κατά οργάνωση(εις), καθένα από αυτά μπορεί να περιέχει πολλούς αποθετηρίους και πολλές ομάδες. Ωστόσο, σημειώστε ότι όπως και στο github, οι χρήστες μπορούν να έχουν repos εκτός της οργάνωσης.

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

Ένας χρήστης μπορεί επίσης να είναι μέλος διαφορετικών ομάδων με διαφορετικές άδειες πρόσβασης σε διαφορετικά repos.

Και τέλος, οι αποθετήρες μπορεί να έχουν ειδικούς μηχανισμούς προστασίας.

Άδειες

Οργανώσεις

Όταν μια οργάνωση δημιουργείται, μια ομάδα που ονομάζεται Ιδιοκτήτες δημιουργείται και ο χρήστης τοποθετείται μέσα σε αυτήν. Αυτή η ομάδα θα δώσει διαχειριστική πρόσβαση στην οργάνωση, αυτές οι άδειες και το όνομα της ομάδας δεν μπορούν να τροποποιηθούν.

Διαχειριστές οργανώσεων (ιδιοκτήτες) μπορούν να επιλέξουν την ορατότητα της οργάνωσης:

  • Δημόσια
  • Περιορισμένη (μόνο για συνδεδεμένους χρήστες)
  • Ιδιωτική (μόνο για μέλη)

Διαχειριστές οργανώσεων μπορούν επίσης να υποδείξουν αν οι διαχειριστές αποθετηρίων μπορούν να προσθέσουν ή να αφαιρέσουν πρόσβαση για ομάδες. Μπορούν επίσης να υποδείξουν τον μέγιστο αριθμό αποθετηρίων.

Κατά τη δημιουργία μιας νέας ομάδας, επιλέγονται αρκετές σημαντικές ρυθμίσεις:

  • Υποδεικνύεται οι αποθετήρες της οργάνωσης στους οποίους θα έχουν πρόσβαση τα μέλη της ομάδας: συγκεκριμένοι αποθετήρες (αποθετήρες στους οποίους έχει προστεθεί η ομάδα) ή όλοι.
  • Υποδεικνύεται επίσης αν τα μέλη μπορούν να δημιουργήσουν νέους αποθετήρες (ο δημιουργός θα αποκτήσει διαχειριστική πρόσβαση σε αυτόν)
  • Οι άδειες που θα έχουν τα μέλη του αποθετηρίου:
  • Διαχειριστής πρόσβαση
  • Συγκεκριμένη πρόσβαση:

Ομάδες & Χρήστες

Σε ένα αποθετήριο, ο διαχειριστής οργάνωσης και οι διαχειριστές αποθετηρίων (αν επιτρέπεται από την οργάνωση) μπορούν να διαχειρίζονται τους ρόλους που δίνονται στους συνεργάτες (άλλους χρήστες) και τις ομάδες. Υπάρχουν 3 πιθανοί ρόλοι:

  • Διαχειριστής
  • Γράψιμο
  • Ανάγνωση

Αυθεντικοποίηση Gitea

Πρόσβαση μέσω Ιστού

Χρησιμοποιώντας όνομα χρήστη + κωδικό πρόσβασης και πιθανώς (και συνιστάται) 2FA.

Κλειδιά SSH

Μπορείτε να ρυθμίσετε τον λογαριασμό σας με ένα ή περισσότερα δημόσια κλειδιά που επιτρέπουν στο σχετικό ιδιωτικό κλειδί να εκτελεί ενέργειες εκ μέρους σας. http://localhost:3000/user/settings/keys

Κλειδιά GPG

Δεν μπορείτε να προσποιηθείτε τον χρήστη με αυτά τα κλειδιά, αλλά αν δεν τα χρησιμοποιείτε, μπορεί να είναι δυνατό να ανακαλυφθείτε για την αποστολή commits χωρίς υπογραφή.

Προσωπικά Διακριτικά Πρόσβασης

Μπορείτε να δημιουργήσετε προσωπικά διακριτικά πρόσβασης για να δώσετε σε μια εφαρμογή πρόσβαση στον λογαριασμό σας. Ένα προσωπικό διακριτικό πρόσβασης δίνει πλήρη πρόσβαση στον λογαριασμό σας: http://localhost:3000/user/settings/applications

Εφαρμογές Oauth

Όπως τα προσωπικά διακριτικά πρόσβασης, οι εφαρμογές Oauth θα έχουν πλήρη πρόσβαση στον λογαριασμό σας και στους τόπους στους οποίους έχει πρόσβαση ο λογαριασμός σας, επειδή, όπως αναφέρεται στα docs, οι τομείς δεν υποστηρίζονται ακόμη:

Κλειδιά Ανάπτυξης

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

Προστασίες Κλάδου

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

Οι προστασίες κλάδου ενός αποθετηρίου μπορούν να βρεθούν στο https://localhost:3000/<orgname>/<reponame>/settings/branches

Note

Δεν είναι δυνατό να οριστεί προστασία κλάδου σε επίπεδο οργάνωσης. Έτσι, όλες τους πρέπει να δηλωθούν σε κάθε αποθετήριο.

Διαφορετικές προστασίες μπορούν να εφαρμοστούν σε έναν κλάδο (όπως στον master):

  • Απενεργοποίηση Push: Κανείς δεν μπορεί να σπρώξει σε αυτόν τον κλάδο
  • Ενεργοποίηση Push: Οποιοσδήποτε με πρόσβαση μπορεί να σπρώξει, αλλά όχι να σπρώξει με δύναμη.
  • Λευκή Λίστα Περιορισμένης Push: Μόνο επιλεγμένοι χρήστες/ομάδες μπορούν να σπρώξουν σε αυτόν τον κλάδο (αλλά όχι να σπρώξουν με δύναμη)
  • Ενεργοποίηση Λευκής Λίστας Συγχώνευσης: Μόνο οι χρήστες/ομάδες που είναι στη λευκή λίστα μπορούν να συγχωνεύσουν PRs.
  • Ενεργοποίηση Ελέγχων Κατάστασης: Απαιτούνται έλεγχοι κατάστασης για να περάσουν πριν τη συγχώνευση.
  • Απαιτούνται εγκρίσεις: Υποδείξτε τον αριθμό των εγκρίσεων που απαιτούνται πριν μπορέσει να συγχωνευθεί ένα PR.
  • Περιορισμός εγκρίσεων σε λευκή λίστα: Υποδείξτε χρήστες/ομάδες που μπορούν να εγκρίνουν PRs.
  • Αποκλεισμός συγχώνευσης σε απορριφθείσες αναθεωρήσεις: Αν ζητηθούν αλλαγές, δεν μπορεί να συγχωνευθεί (ακόμη και αν οι άλλοι έλεγχοι περάσουν)
  • Αποκλεισμός συγχώνευσης σε επίσημες αιτήσεις αναθεώρησης: Αν υπάρχουν επίσημες αιτήσεις αναθεώρησης, δεν μπορεί να συγχωνευθεί
  • Αποδοχή παλαιών εγκρίσεων: Όταν υπάρχουν νέες commits, οι παλιές εγκρίσεις θα απορριφθούν.
  • Απαιτούνται Υπογεγραμμένα Commits: Τα commits πρέπει να είναι υπογεγραμμένα.
  • Αποκλεισμός συγχώνευσης αν το pull request είναι παλιό
  • Προστατευμένα/Μη προστατευμένα μοτίβα αρχείων: Υποδείξτε μοτίβα αρχείων για προστασία/μη προστασία από αλλαγές

Note

Όπως μπορείτε να δείτε, ακόμη και αν καταφέρατε να αποκτήσετε κάποια διαπιστευτήρια ενός χρήστη, οι αποθετήρες μπορεί να είναι προστατευμένοι αποτρέποντάς σας από το να σπρώξετε κώδικα στον master για παράδειγμα, για να παραβιάσετε τη διαδικασία CI/CD.

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