
CVE-2026-55168 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Runtipi में बैकअप पुनर्स्थापना के दौरान सिमलिंक प्लांटिंग के माध्यम से प्रमाणीकृत मनमाना फ़ाइल लेखन प्रदर्शित करता है।
इस रिपॉजिटरी में Runtipi में CVE-2026-55168 के लिए एक सरल PoC है।
समस्या एक प्रमाणीकृत मनमाना फ़ाइल लेखन है जो बैकअप रिस्टोर प्रवाह के माध्यम से प्राप्त किया जा सकता है। एक निर्मित बैकअप आर्काइव रिस्टोर किए गए एप्लिकेशन डेटा में एक सिमलिंक लगा सकता है, और बाद में एक सामान्य कॉन्फ़िग अपडेट उस सिमलिंक का अनुसरण करता है और हमलावर-नियंत्रित सामग्री को इच्छित निर्देशिका के बाहर लिखता है।
रेफरेंस सलाह:
प्रभावित संस्करण:
<= 4.10.0PoC Runtipi में लॉग इन करता है, मेमोरी में एक दुर्भावनापूर्ण बैकअप आर्काइव बनाता है, इसे अपलोड करता है, रिस्टोर ट्रिगर करता है, और फिर एक सामान्य user-config अपडेट अनुरोध भेजता है।
रिस्टोर पेलोड इस सिमलिंक को लगाता है:
user-config/app.env -> /data/state/proof.txt
उसके बाद, ऐप कॉन्फ़िग अपडेट करने का सामान्य अनुरोध Runtipi को आपूर्ति की गई सामग्री को यहाँ लिखने का कारण बनता है:
/data/state/proof.txt
तो महत्वपूर्ण भाग केवल रिस्टोर के दौरान सिमलिंक की स्थिरता नहीं है, बल्कि यह तथ्य है कि बाद में एक वैध लेखन लगाए गए सिमलिंक का अनुसरण करता है।
poc.py — एंड-टू-एंड Python PoCpython poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--app-urn demoapp3:_user \
--target-path /data/state/proof.txt \
--write-content PWNED_FROM_USERCFG_WRITE
यदि आप चाहें, तो आप जनरेट किए गए आर्काइव को स्थानीय रूप से भी सहेज सकते हैं:
python poc.py \
--base-url http://127.0.0.1:3001 \
--username YOUR_USERNAME \
--password YOUR_PASSWORD \
--output payload.tar.gz
यदि लक्ष्य असुरक्षित है, तो स्क्रिप्ट सफलतापूर्वक समाप्त होती है और status: "ok" के साथ एक छोटा JSON परिणाम प्रिंट करती है।
यह PoC अनुसंधान और पुनरुत्पादन उद्देश्यों के लिए प्रदान किया गया है।