
प्राधिकृत लैब में ZendTo अनप्रमाणित ClamAV RCE और रूट विशेषाधिकार उन्नयन को पुनरुत्पादित करता है, जिसमें पिन किया गया Docker लक्ष्य, fail-closed सत्यापन, nonce-बद्ध आउटपुट और सफाई शामिल है।
यह निर्देशिका बिना-खाते ZendTo-से-ClamAV कोड-निष्पादन श्रृंखला और इसकी अलग डिफ़ॉल्ट-प्रोफ़ाइल Smarty/root-cron निरंतरता के लिए एक स्वतंत्र, अधिकृत-प्रयोगशाला पुनरुत्पादन बंडल है। इसमें शामिल हैं:
प्रारंभिक PoC, मानक clamav सेवा खाते के रूप में कॉलर-चयनित कमांड निष्पादित करता है। वैकल्पिक वेरिएंट उस बिना-खाते पैर जमाने (foothold) को root के रूप में कॉलर-चयनित कमांड तक आगे बढ़ाता है। दोनों डिफ़ॉल्ट रूप से id चलाते हैं, शाब्दिक /root/flag पथ को अस्वीकार करते हैं, और HTTPS पर nonce-बद्ध आउटपुट लौटाते हैं।
कमजोर समूह, निर्देशिका, Smarty और root-cron संबंध ZendTo Debian पैकेज/इंस्टॉलर डिफ़ॉल्ट हैं। फिर भी root तक पहुँच पर्यावरण-शर्तयुक्त है: यह सटीक सकारात्मक फिक्स्चर ext4-समर्थित /var/zendto वॉल्यूम, कार्यशील PHP CLI FFI/POSIX/exec और एक अप्रतिबंधित (unconfined) clamd प्रक्रिया का उपयोग करता है। AppArmor/SELinux लागू करना या असंगत फ़ाइलसिस्टम सिमेंटिक्स किसी अन्य अन्यथा मानक स्थापना पर निरंतरता को रोक सकते हैं।
इसका उपयोग केवल शामिल डिस्पोज़ेबल फिक्स्चर या किसी अन्य सिस्टम पर करें जिसे आप स्पष्ट रूप से परीक्षण करने हेतु अधिकृत हैं।
आधिकारिक सटीक लक्ष्य निम्न पथ पर एक स्थानीय, जानबूझकर अनावृत्ति-रहित (unversioned) आर्टिफैक्ट है:
image/zendto-installer-systemd-debian12.tar.zst
Git Docker इमेज अभिलेखागार (archives) को अनदेखा करता है। सटीक प्रतिगमन (regression) से पहले, उस पथ पर एक अधिकृत स्थानीय प्रति रखें; scripts/setup.sh को उसका दर्ज SHA-256 और इमेज ID चाहिए। source-recipe/README.md दस्तावेज़ित करता है कि इंस्टॉलर-व्युत्पन्न इमेज कैसे बनाई और कैप्चर की गई। लाइव पैकेज रिपॉज़िटरी से एक नया बिल्ड टोपोलॉजी परीक्षण के लिए उपयोगी है, लेकिन इसे पिन किए गए लक्ष्य के बाइट-समान होने का अनुमान नहीं लगाया जाता।
सेटअप और कंटेनर एंट्रीपॉइंट निम्नलिखित प्रोफ़ाइल से किसी भी बेमेल को अस्वीकार करते हैं:
| घटक | सटीक परीक्षण मान |
|---|---|
| Docker image ID | sha256:de6d2f06ca04943362a9bdec5026e808448953728f31bd926343a4ed2ca2ef7c |
| ZendTo | 6.15-8 |
| ClamAV/libclamav पैकेज | 1.4.3+dfsg-1~deb12u2 |
| libclamav | libclamav.so.12.0.3, SHA-256 55e3cd94…027c |
| libclamav Build ID | e6427ab62146ee3001fe463d12e797e9d25bf81a |
| glibc | 2.36-9+deb12u14, SHA-256 6b4a4535…421 |
| मुख्य डेटाबेस | v63, SHA-256 0b2182d2…365 |
| दैनिक डेटाबेस | v28082, SHA-256 cddbcccf…906 |
| बाइटकोड डेटाबेस | v339, SHA-256 6d4aa01f…ffb |
| clamd | MaxThreads 12, IdleTimeout 30, Restart=no |
| जीवनचक्र | सक्षम clamav-daemon.socket, systemd PID 1 |
| वेब रनटाइम | Apache 2.4.68, PHP 8.2.32 |
| MAC स्थिति | अप्रतिबंधित विशेषाधिकार प्राप्त Docker फिक्स्चर |
| root सेतु | www-data में मानक clamav; /var/zendto root:www-data 0775 |
| root उपभोक्ता | मानक root सफाई cron, मिनट 25 पर प्रति घंटा |
| Smarty कैश | नियतात्मक Smarty 4.5.4 संकलित zendto.conf |
| एक्सचेंज फ़ाइलसिस्टम | ext4-समर्थित नामित /var/zendto वॉल्यूम |
पूर्ण मान PROFILE.json में हैं।
यह केवल ClamAV पैकेज संस्करण को पिन करने से अधिक मज़बूत है। एलोकेटर निर्माण glibc, CVD-संचालित पार्सर ट्रैफ़िक, वर्कर सेटिंग्स और सटीक लक्ष्य लाइब्रेरी पर भी निर्भर करता है। कैप्चर की गई इमेज में FreshClam अक्षम है, और यदि daily.cvd विचलित हो गया है या daily.cld प्रकट हुआ है तो स्टार्टअप विफल हो जाता है।
मूल वर्कस्पेस में वर्तमान में लंबे समय से चल रहा शोध कंटेनर साफ़ फिक्स्चर नहीं है: बाद के परीक्षण ने इसके बाहरी-प्रेषक फ़ॉर्म को अक्षम कर दिया और इसका दैनिक डेटाबेस अद्यतन कर दिया। वे परिवर्तन जानबूझकर यहाँ बाहर रखे गए हैं। यह बंडल उस साफ़ आधार रेखा (baseline) का उपयोग करता है जिसके विरुद्ध मूल (native) निष्पादन प्रदर्शित किया गया था।
/sys/fs/cgroupzstd, venv के साथ Python 3, एक C कंपाइलर, file और GNU readelfलक्ष्य होस्ट कर्नेल और ASLR कार्यान्वयन साझा करता है। इसलिए कर्नेल-निर्भर मैपिंग व्यवहार एक पोर्टेबिलिटी चर बना रहता है।
एक समय में केवल एक systemd फिक्स्चर को होस्ट cgroup नेमस्पेस साझा करना चाहिए। मूल शोध मशीन पर, पुराने फिक्स्चर को हटाए बिना रोकें:
docker stop zendto-installer-systemd-native
इसे बाद में docker start zendto-installer-systemd-native से पुनर्स्थापित किया जा सकता है।
इस निर्देशिका से:
./scripts/verify-bundle.sh
./scripts/setup.sh
सेटअप स्क्रिप्ट:
.venv बनाती है;/var/zendto वॉल्यूम बनाती है और systemd प्रारंभ करती है; औरclamav के रूप में किया गया एक डिस्पोज़ेबल renameat2(RENAME_EXCHANGE) ऑपरेशन शामिल है।डिफ़ॉल्ट एंडपॉइंट केवल-लूपबैक हैं:
http://127.0.0.1:18084/
https://127.0.0.1:18447/
प्रमाणपत्र स्व-हस्ताक्षरित है। PoC जानबूझकर प्रत्येक HTTP अनुरोध के लिए verify=False का उपयोग करता है। सेटअप से पहले अलग लूपबैक पोर्ट चुने जा सकते हैं:
export ZENDTO_HTTP_PORT=19084
export ZENDTO_HTTPS_PORT=19447
./scripts/setup.sh
बाद के Compose/हेल्पर कमांड के लिए समान पर्यावरण चर का उपयोग करें।
किसी भी समय लक्ष्य की जाँच करें:
./scripts/verify-target.sh
docker compose ps
साफ़ इंस्टॉलर आधार रेखा में है:
allowExternalUploads = TRUE
confirmExternalEmails = TRUE
captcha = google
इसके CAPTCHA और मेल मान इंस्टॉलर प्लेसहोल्डर हैं, इसलिए अछूता आर्काइव वास्तव में सार्वजनिक सत्यापन ईमेल वितरित नहीं कर सकता। मूल प्रतिगमन परीक्षण ने केवल उस पूर्ण एप्लिकेशन चरण को समकक्ष बाहरी-प्रेषक AuthData पंक्ति के साथ दर्शाया। लक्ष्य कोड, पैकेज, स्कैनर, अनुमतियाँ और एक्सप्लॉइट पथ को पैच नहीं किया गया।
वह एक प्रयोगशाला पंक्ति और mode-0600 टोकन फ़ाइल बनाएँ:
./scripts/mint-lab-auth.py [email protected]
टोकन मान दबा दिया जाता है और इसमें संग्रहीत होता है:
.lab/upload-auth-token.txt
यह स्थानीय सहायक यह दावा नहीं है कि बाहरी-अपलोड-अक्षम तैनाती का दूरस्थ रूप से शोषण किया जा सकता है। यदि सार्वजनिक बाहरी-प्रेषक फ़ॉर्म अक्षम है, तो PoC टोकन फ़ाइल प्रदान किए जाने पर भी ClamAV से पहले सही ढंग से रुक जाता है।
सामान्य रूप से कॉन्फ़िगर की गई अधिकृत तैनाती पर, --external-auth-token-file को हटाएँ: सत्यापन पृष्ठ को मैन्युअल रूप से खोलें, CAPTCHA हल करें, हमलावर-नियंत्रित मेलबॉक्स पर लक्ष्य-जनित संदेश प्राप्त करें, और छिपे संकेत पर उसका URL/टोकन चिपकाएँ।
यह मोड कोई CAPTCHA, ईमेल, क्षमता (capability), अपलोड, लॉगिन POST या स्कैनर सामग्री नहीं भेजता। --skip-clamd-tcp-probe वैकल्पिक केवल-पठनीय मूल TCP/3310 जाँच को भी दबा देता है:
mkdir -p -m 700 work
.venv/bin/python poc/zendto_6_15_8_unauth_clamav_rce.py \
https://127.0.0.1:18447 \
--enumerate-only \
--skip-clamd-tcp-probe \
--fingerprint-json work/fingerprint.json
गणना फिर भी सामान्य वेब एक्सेस लॉग उत्पन्न करती है और सामान्य एप्लिकेशन कैश आरंभ कर सकती है। इसका Debian/Ubuntu Apache-लेआउट परिणाम मूल पैकेज, Build ID, libc, CVD, socket नीति या MAC स्थिति की पुष्टि नहीं करता। स्थानीय Docker सत्यापन स्क्रिप्ट इस फिक्स्चर के लिए वह साक्ष्य प्रदान करती है।