Learn & practice AWS Hacking:<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
Αυτοί οι τύποι επιθέσεων έχουν εισαχθεί και τεκμηριωθεί [**από την Orange σε αυτή την ανάρτηση του blog**](https://blog.orange.tw/2024/08/confusion-attacks-en.html?m=1) και η παρακάτω είναι μια περίληψη. Η επίθεση "σύγχυσης" βασικά εκμεταλλεύεται το πώς οι δεκάδες μονάδες που συνεργάζονται γιανα δημιουργήσουν έναν Apache δεν λειτουργούν τέλεια συγχρονισμένες και κάνοντάς τες να τροποποιήσουν κάποια απροσδόκητα δεδομένα μπορεί να προκαλέσει μια ευπάθεια σε μια επόμενη μονάδα.
### Filename Confusion
#### Truncation
Η**`mod_rewrite`** θα κόψει το περιεχόμενο του `r->filename` μετά τον χαρακτήρα `?` ([_**modules/mappers/mod\_rewrite.c#L4141**_](https://github.com/apache/httpd/blob/2.4.58/modules/mappers/mod\_rewrite.c#L4141)). Αυτό δεν είναι εντελώς λάθος καθώς οι περισσότερες μονάδες θα θεωρήσουν το `r->filename` ως URL. Αλλά σε άλλες περιπτώσεις αυτό θα θεωρηθεί ως διαδρομή αρχείου, κάτι που θα προκαλέσει πρόβλημα.
* **Path Truncation**
Είναι δυνατόν να εκμεταλλευτεί κανείς το `mod_rewrite` όπως στο παρακάτω παράδειγμα κανόνα γιανα αποκτήσει πρόσβαση σε άλλα αρχεία μέσα στο σύστημα αρχείων, αφαιρώντας το τελευταίο μέρος της αναμενόμενης διαδρομής προσθέτοντας απλά ένα `?`:
# the output of file `/var/user/orange/profile.yml`
# Attack
curl http://server/user/orange%2Fsecret.yml%3F
#the output of file `/var/user/orange/secret.yml`
```
* **Παραπλανητική Ανάθεση RewriteFlag**
Στον παρακάτω κανόνα επαναγραφής, όσο η διεύθυνση URL τελειώνει σε .php, θα αντιμετωπίζεται και θα εκτελείται ως php. Επομένως, είναι δυνατόν να σταλεί μια διεύθυνση URL που τελειώνει σε .php μετά τον χαρακτήρα `?` ενώ φορτώνεται στον δρόμο ένας διαφορετικός τύπος αρχείου (όπως μια εικόνα) με κακόβουλο php κώδικα μέσα σε αυτό:
Είναι δυνατόν να αποκτήσετε πρόσβαση σε αρχεία που ο χρήστης δεν θα έπρεπε να έχει πρόσβαση, ακόμη και αν η πρόσβαση θα έπρεπε να απορριφθεί με ρυθμίσεις όπως:
```xml
<Files"admin.php">
AuthType Basic
AuthName "Admin Panel"
AuthUserFile "/etc/apache2/.htpasswd"
Require valid-user
</Files>
```
Αυτό συμβαίνει επειδή από προεπιλογή το PHP-FPM θα λαμβάνει διευθύνσεις URL που τελειώνουν σε `.php`, όπως `http://server/admin.php%3Fooo.php` και επειδή το PHP-FPM θα αφαιρέσει οτιδήποτε μετά τον χαρακτήρα `?`, η προηγούμενη διεύθυνση URL θα επιτρέπει τη φόρτωση του `/admin.php` ακόμη και ανο προηγούμενος κανόνας το απαγόρευε.
### Σύγχυση DocumentRoot
```bash
DocumentRoot /var/www/html
RewriteRule ^/html/(.*)$ /$1.html
```
Ένα διασκεδαστικό γεγονός σχετικά με το Apache είναι ότι η προηγούμενη ανακατεύθυνση θα προσπαθήσει να αποκτήσει πρόσβαση στο αρχείο τόσο από το documentRoot όσο και από το root. Έτσι, ένα αίτημα προς `https://server/abouth.html` θα ελέγξει για το αρχείο στο `/var/www/html/about.html` και `/about.html` στο σύστημα αρχείων. Αυτό μπορεί βασικά να καταχραστεί γιανα αποκτήσει πρόσβαση σε αρχεία στο σύστημα αρχείων.
#### **Αποκάλυψη Κώδικα Πηγής Από τον Διακομιστή**
* **Αποκάλυψη Κώδικα Πηγής CGI**
Απλά προσθέτοντας ένα %3F στο τέλος είναι αρκετό γιανα διαρρεύσει ο κώδικας πηγής ενός cgi module:
Αν ένας διακομιστής έχει διαφορετικά domains με ένα από αυτά να είναι στατικό domain, αυτό μπορεί να εκμεταλλευτεί γιανα διασχίσει το σύστημα αρχείων και να διαρρεύσει τον κώδικα php:
```bash
# Leak the config.php file of the www.local domain from the static.local domain
Το κύριο πρόβλημα με την προηγούμενη επίθεση είναι ότι από προεπιλογή οι περισσότερες προσβάσεις στο σύστημα αρχείων θα απορρίπτονται όπως στην [προκαθορισμένη ρύθμιση](https://github.com/apache/httpd/blob/trunk/docs/conf/httpd.conf.in#L115) του Apache HTTP Server:
```xml
<Directory/>
AllowOverride None
Require all denied
</Directory>
```
Ωστόσο, τα λειτουργικά συστήματα [Debian/Ubuntu](https://sources.debian.org/src/apache2/2.4.62-1/debian/config-dir/apache2.conf.in/#L165) επιτρέπουν από προεπιλογή το `/usr/share`:
```xml
<Directory/usr/share>
AllowOverride None
Require all granted
</Directory>
```
Επομένως, θα ήταν δυνατό να**καταχραστούν αρχεία που βρίσκονται μέσα στο `/usr/share` σε αυτές τις διανομές.**
**Τοπικό Gadget για Αποκάλυψη Πληροφοριών**
* **Apache HTTP Server** με **websocketd** μπορεί να εκθέσει το **dump-env.php** script στο **/usr/share/doc/websocketd/examples/php/**, το οποίο μπορεί να αποκαλύψει ευαίσθητες μεταβλητές περιβάλλοντος.
* Διακομιστές με **Nginx** ή **Jetty** μπορεί να εκθέσουν ευαίσθητες πληροφορίες εφαρμογών ιστού (π.χ., **web.xml**) μέσω των προεπιλεγμένων ριζών ιστού τους που βρίσκονται κάτω από το **/usr/share**:
* **/usr/share/nginx/html/**
* **/usr/share/jetty9/etc/**
* **/usr/share/jetty9/webapps/**
**Τοπικό Gadget για XSS**
* Σε Ubuntu Desktop με **LibreOffice εγκατεστημένο**, η εκμετάλλευση της δυνατότητας αλλαγής γλώσσας των αρχείων βοήθειας μπορεί να οδηγήσει σε **Cross-Site Scripting (XSS)**. Η χειραγώγηση της διεύθυνσης URL στο **/usr/share/libreoffice/help/help.html** μπορεί να ανακατευθύνει σε κακόβουλες σελίδες ή παλαιότερες εκδόσεις μέσω **unsafe RewriteRule**.
**Τοπικό Gadget για LFI**
* Εάν είναι εγκατεστημένα PHP ή ορισμένα πακέτα front-end όπως **JpGraph** ή **jQuery-jFeed**, τα αρχεία τους μπορούν να εκμεταλλευτούν γιανα διαβάσουν ευαίσθητα αρχεία όπως **/etc/passwd**:
* Χρησιμοποιώντας το **MagpieRSS's magpie\_debug.php** στο **/usr/share/php/magpierss/scripts/magpie\_debug.php**, μπορεί να δημιουργηθεί εύκολα μια ευπάθεια SSRF, παρέχοντας μια πύλη για περαιτέρω εκμεταλλεύσεις.
**Τοπικό Gadget για RCE**
*Οι ευκαιρίες για**Remote Code Execution (RCE)** είναι πολλές, με ευάλωτες εγκαταστάσεις όπως μια παρωχημένη **PHPUnit** ή **phpLiteAdmin**. Αυτές μπορούν να εκμεταλλευτούν γιανα εκτελέσουν αυθαίρετο κώδικα, επιδεικνύοντας την εκτενή δυνατότητα χειραγώγησης τοπικών gadgets.
#### **Jailbreak από Τοπικά Gadgets**
Είναι επίσης δυνατό να γίνει jailbreak από τους επιτρεπόμενους φακέλους ακολουθώντας τα symlinks που δημιουργούνται από εγκατεστημένο λογισμικό σε αυτούς τους φακέλους, όπως:
Αυτή η επίθεση εκμεταλλεύεται την επικάλυψη στη λειτουργικότητα μεταξύ των οδηγιών `AddHandler` και `AddType`, οι οποίες και οι δύο μπορούν να χρησιμοποιηθούν γιανα**ενεργοποιήσουν την επεξεργασία PHP**. Αρχικά, αυτές οι οδηγίες επηρεάζουν διαφορετικά πεδία (`r->handler` και `r->content_type` αντίστοιχα) στη εσωτερική δομή του διακομιστή. Ωστόσο, λόγω κωδίκων κληρονομιάς, το Apache χειρίζεται αυτές τις οδηγίες εναλλάξ υπό ορισμένες συνθήκες, μετατρέποντας το `r->content_type` σε `r->handler` εάν το πρώτο είναι ρυθμισμένο και το δεύτερο όχι.
Επιπλέον, στο Apache HTTP Server (`server/config.c#L420`), εάν το `r->handler` είναι κενό πριν την εκτέλεση του `ap_run_handler()`, ο διακομιστής **χρησιμοποιεί το `r->content_type` ως handler**, καθιστώντας ουσιαστικά το `AddType` και το `AddHandler` ταυτόσημα σε αποτέλεσμα.
#### **Αντικατάσταση Handler για Αποκάλυψη Κώδικα PHP**
Σε [**αυτή την ομιλία**](https://web.archive.org/web/20210909012535/https://zeronights.ru/wp-content/uploads/2021/09/013\_dmitriev-maksim.pdf), παρουσιάστηκε μια ευπάθεια όπου μια λανθασμένη `Content-Length` που αποστέλλεται από έναν πελάτη μπορεί να προκαλέσει το Apache να επιστρέψει λανθασμένα **τον κώδικα PHP**. Αυτό συνέβη λόγω ενός προβλήματος χειρισμού σφαλμάτων με το ModSecurity και το Apache Portable Runtime (APR), όπου μια διπλή απάντηση οδηγεί στην αντικατάσταση του `r->content_type` σε `text/html`.\
Δεδομένου ότι το ModSecurity δεν χειρίζεται σωστά τις τιμές επιστροφής, θα επιστρέψει τον κώδικα PHP και δεν θα τον ερμηνεύσει.
#### **Αντικατάσταση Handler για XXXX**
TODO: Η Orange δεν έχει αποκαλύψει αυτή την ευπάθεια ακόμα
### **Εκτέλεση Αυθαίρετων Handlers**
Εάν ένας επιτιθέμενος είναι σε θέση να ελέγξει την κεφαλίδα **`Content-Type`** σε μια απάντηση διακομιστή, θα είναι σε θέση να**εκτελέσει αυθαίρετους χειριστές μονάδας**. Ωστόσο, μέχρι τη στιγμή που ο επιτιθέμενος ελέγχει αυτό, η πλειονότητα της διαδικασίας του αιτήματος θα έχει ολοκληρωθεί. Ωστόσο, είναι δυνατό να**επανεκκινήσει τη διαδικασία αιτήματος εκμεταλλευόμενος την κεφαλίδα `Location`** επειδή εάν η **r** επιστρεφόμενη `Status` είναι 200 και η κεφαλίδα `Location` αρχίζει με `/`, η απάντηση θεωρείται ως Server-Side Redirection και θα πρέπει να επεξεργαστεί
Σύμφωνα με το [RFC 3875](https://datatracker.ietf.org/doc/html/rfc3875) (προδιαγραφή σχετικά με CGI) στην [Ενότητα 6.2.2](https://datatracker.ietf.org/doc/html/rfc3875#section-6.2.2) ορίζει τη συμπεριφορά μιας Τοπικής Αντίστροφης Απόκρισης:
> Το CGI script μπορεί να επιστρέψει μια διαδρομή URI και query-string (‘local-pathquery’) για έναν τοπικό πόρο σε ένα πεδίο κεφαλίδας Location. Αυτό υποδεικνύει στον διακομιστή ότι θα πρέπει να επεξεργαστεί ξανά το αίτημα χρησιμοποιώντας τη διαδρομή που καθορίζεται.
Επομένως, γιανα εκτελεστεί αυτή η επίθεση απαιτείται μία από τις παρακάτω ευπάθειες:
* CRLF Injection στις κεφαλίδες απόκρισης CGI
* SSRF με πλήρη έλεγχο των κεφαλίδων απόκρισης
#### **Αυθαίρετος Handler για Αποκάλυψη Πληροφοριών**
Για παράδειγμα, το `/server-status` θα πρέπει να είναι προσβάσιμο μόνο τοπικά:
```xml
<Location/server-status>
SetHandler server-status
Require local
</Location>
```
Είναι δυνατόν να αποκτήσετε πρόσβαση ρυθμίζοντας το `Content-Type` σε `server-status` και την κεφαλίδα Location να ξεκινά με `/`
```
http://server/cgi-bin/redir.cgi?r=http:// %0d%0a
Location:/ooo %0d%0a
Content-Type:server-status %0d%0a
%0d%0a
```
#### **Αυθαίρετος Χειριστής σε Πλήρη SSRF**
Ανακατεύθυνση στο `mod_proxy`για πρόσβαση σε οποιοδήποτε πρωτόκολλο σε οποιοδήποτε URL:
```
http://server/cgi-bin/redir.cgi?r=http://%0d%0a
Location:/ooo %0d%0a
Content-Type:proxy:
http://example.com/%3F
%0d%0a
%0d%0a
```
Ωστόσο, η κεφαλίδα `X-Forwarded-For` προστίθεται αποτρέποντας την πρόσβαση σε σημεία μεταδεδομένων cloud.
#### **Αυθαίρετος Χειριστής για Πρόσβαση σε Τοπικό Unix Domain Socket**
Πρόσβαση στο τοπικό Unix Domain Socket του PHP-FPM γιανα εκτελέσετε ένα PHP backdoor που βρίσκεται στο `/tmp/`:
Η επίσημη [PHP Docker](https://hub.docker.com/\_/php) εικόνα περιλαμβάνει το PEAR (`Pearcmd.php`), ένα εργαλείο διαχείρισης πακέτων PHP από τη γραμμή εντολών, το οποίο μπορεί να καταχραστεί γιανα αποκτηθεί RCE:
Ελέγξτε [**Docker PHP LFI Summary**](https://www.leavesongs.com/PENETRATION/docker-php-include-getshell.html#0x06-pearcmdphp), γραμμένο από τον [Phith0n](https://x.com/phithon\_xg) για λεπτομέρειες σχετικά με αυτή την τεχνική.
Μάθετε & εξασκηθείτε στο AWS Hacking:<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**