Ruby Class Pollution
Last updated
Last updated
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Αυτή είναι μια περίληψη από την ανάρτηση
Παράδειγμα:
Privilege Escalation: Η μέθοδος authorize
ελέγχει αν το to_s
επιστρέφει "Admin." Με την εισαγωγή ενός νέου χαρακτηριστικού to_s
μέσω JSON, ένας επιτιθέμενος μπορεί να κάνει τη μέθοδο to_s
να επιστρέφει "Admin," παρέχοντας μη εξουσιοδοτημένα προνόμια.
Remote Code Execution: Στο health_check
, το instance_eval
εκτελεί μεθόδους που αναφέρονται στα protected_methods
. Αν ένας επιτιθέμενος εισάγει προσαρμοσμένα ονόματα μεθόδων (όπως το "puts 1"
), το instance_eval
θα το εκτελέσει, οδηγώντας σε remote code execution (RCE).
Αυτό είναι δυνατό μόνο επειδή υπάρχει μια ευάλωτη εντολή eval
που εκτελεί την τιμή της συμβολοσειράς αυτού του χαρακτηριστικού.
Περιορισμός Επιπτώσεων: Αυτή η ευπάθεια επηρεάζει μόνο μεμονωμένα παραδείγματα, αφήνοντας άλλα παραδείγματα του User
και του Admin
ανεπηρέαστα, περιορίζοντας έτσι την έκταση της εκμετάλλευσης.
deep_merge
Αυτό δεν είναι ευάλωτο από προεπιλογή αλλά μπορεί να γίνει ευάλωτο με κάτι όπως:
deep_merge
Η μέθοδος deep_merge
του Hashie λειτουργεί απευθείας σε χαρακτηριστικά αντικειμένων αντί για απλές καταχωρήσεις. Αποτρέπει την αντικατάσταση μεθόδων με χαρακτηριστικά σε μια συγχώνευση με κάποιες εξαιρέσεις: χαρακτηριστικά που τελειώνουν με _
, !
, ή ?
μπορούν ακόμα να συγχωνευτούν στο αντικείμενο.
Μια ειδική περίπτωση είναι το χαρακτηριστικό _
από μόνο του. Απλά το _
είναι ένα χαρακτηριστικό που συνήθως επιστρέφει ένα Mash
αντικείμενο. Και επειδή είναι μέρος των εξαιρέσεων, είναι δυνατόν να τροποποιηθεί.
Δείτε το παρακάτω παράδειγμα πώς η παράδοση {"_": "Admin"}
επιτρέπει την παράκαμψη του _.to_s == "Admin"
:
Στο παρακάτω παράδειγμα είναι δυνατόν να βρείτε την κλάση Person
, και τις κλάσεις Admin
και Regular
που κληρονομούν από την κλάση Person
. Έχει επίσης μια άλλη κλάση που ονομάζεται KeySigner
:
Με αυτό το payload:
Είναι δυνατόν να τροποποιηθεί η τιμή του χαρακτηριστικού @@url
της γονικής κλάσης Person
.
Με αυτό το payload:
Είναι δυνατόν να γίνει brute-force στις καθορισμένες κλάσεις και σε κάποιο σημείο να δηλητηριαστεί η κλάση KeySigner
τροποποιώντας την τιμή του signing_key
σε injected-signing-key
.\
Μάθετε & εξασκηθείτε στο AWS Hacking: Μάθετε & εξασκηθείτε στο GCP Hacking:
Ελέγξτε τα !
Εγγραφείτε στην 💬 ή στην ή ακολουθήστε μας στο Twitter 🐦 .
Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα και github repos.