
CVE-2026-28496 को पुनरुत्पादित और मान्य करने के लिए Docker-आधारित प्रयोगशाला, जो FOSSBilling के Twig रेंडरिंग में एक सर्वर-साइड टेम्पलेट इंजेक्शन कमजोरी है, जिसमें कमजोर और पैच किए गए तुलना लक्ष्य शामिल हैं।
इस रिपॉजिटरी में CVE-2026-28496 को पुनः प्रस्तुत करने और मान्य करने के लिए एक स्थानीय Docker लैब शामिल है, जो FOSSBilling के Twig टेम्पलेट रेंडरिंग व्यवहार को प्रभावित करने वाली सर्वर-साइड टेम्पलेट इंजेक्शन भेद्यता है।
FOSSBilling एक निःशुल्क और ओपन-सोर्स बिलिंग और क्लाइंट प्रबंधन प्लेटफॉर्म है। 0.8.0 से पहले के संस्करण असुरक्षित Twig टेम्पलेट रेंडरिंग व्यवहार से प्रभावित हैं जो प्रदान किए गए टेम्पलेट अभिव्यक्तियों का मूल्यांकन कर सकते हैं। इस लैब में पैच किए गए तुलना लक्ष्य के रूप में FOSSBilling 0.8.0 का उपयोग किया गया है।
यह लैब दो FOSSBilling संस्करणों की तुलना करता है:
| सेवा | FOSSBilling संस्करण | उद्देश्य | URL |
|---|---|---|---|
| vuln | 0.7.2 | भेद्य तुलना लक्ष्य | http://localhost:8081 |
| patched | 0.8.0 | पैच किया गया तुलना लक्ष्य | http://localhost:8082 |
इस स्थानीय लैब में प्रदर्शित HTTP मान्यीकरण पथ है:```text Unauthenticated HTTP request in this local FOSSBilling 0.7.2 lab → POST /api/system/system/string_render → JSON body contains _tpl={{ 7*7 }} → vulnerable target renders the Twig expression → patched target does not expose the same tested API behavior
कमजोर लक्ष्य में, API कॉल वापस आता है:```json
{"result":"49","error":null}
पैच किए गए लक्ष्य में, वही अनुरोध वापस आता है:```json {"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}
यह लैब FOSSBilling 0.7.2 और FOSSBilling 0.8.0 का उपयोग करके कमजोर-बनाम-पैच किए गए HTTP व्यवहार को मान्य करती है।
लैब जानबूझकर स्थानीय Docker सेवाओं तक सीमित है। यह बाहरी सिस्टम को लक्ष्य नहीं करता है और इसमें वेब शेल, मैलवेयर, स्थिरता, बाहरी कॉलबैक, डेटाबेस डंपिंग या विनाशकारी पेलोड शामिल नहीं हैं।
## सत्यापित तथ्य
| दावा | प्रमाण | इस लैब में कैसे सत्यापित करें |
| ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| CVE-2026-28496 FOSSBilling के 0.8.0 से पहले के संस्करणों को प्रभावित करता है। | सार्वजनिक CVE और सलाहकार मेटाडेटा FOSSBilling के 0.8.0 से पहले के संस्करणों को Twig SSTI से प्रभावित बताते हैं। | संदर्भ अनुभाग की समीक्षा करें और कमजोर और पैच किए गए लक्ष्य संस्करणों की तुलना करें। |
| FOSSBilling 0.7.2 का उपयोग कमजोर तुलना लक्ष्य के रूप में किया जाता है। | कमजोर सेवा आधिकारिक `fossbilling/fossbilling:0.7.2` Docker इमेज से बनाई गई है। | `vuln/Dockerfile` का निरीक्षण करें और `docker compose ps -a` चलाएँ। |
| FOSSBilling 0.8.0 का उपयोग पैच किए गए तुलना लक्ष्य के रूप में किया जाता है। | पैच की गई सेवा आधिकारिक `fossbilling/fossbilling:0.8.0` Docker इमेज से बनाई गई है। | `patched/Dockerfile` का निरीक्षण करें और `docker compose ps -a` चलाएँ। |
| कमजोर HTTP पथ `/api/system/system/string_render` है। | कमजोर लक्ष्य `_tpl={{ 7*7 }}` के लिए `result: "49"` के साथ JSON लौटाता है। | `python3 poc/poc.py --url http://localhost:8081` चलाएँ। |
| पैच किया गया लक्ष्य समान HTTP व्यवहार प्रदर्शित नहीं करता है। | पैच किया गया लक्ष्य `Unknown API call system/system/string_render` लौटाता है। | `python3 poc/poc.py --url http://localhost:8082` चलाएँ। |
| PoC केवल HTTP-आधारित है। | `poc/poc.py` HTTP POST अनुरोध भेजता है और Docker, Docker Compose, शेल कमांड या कंटेनर APIs को कॉल नहीं करता है। | `poc/poc.py` का निरीक्षण करें। |
| लैब Docker Compose स्टार्टअप के दौरान दोनों FOSSBilling लक्ष्यों को स्वचालित रूप से स्थापित करता है। | एक-शॉट इंस्टॉलर साइडकार कंटेनर सेटअप पूरा करते हैं और स्थिति 0 के साथ बाहर निकलते हैं। | `docker compose ps -a` और `docker compose logs installer-vuln installer-patched` चलाएँ। |
| कमजोर लक्ष्य हानिरहित Twig अभिव्यक्ति को प्रस्तुत करता है। | पोर्ट 8081 से HTTP प्रतिक्रिया `{"result":"49","error":null}` है। | कमजोर PoC कमांड चलाएँ। |
| पैच किया गया लक्ष्य परीक्षण किए गए API पथ के माध्यम से समान अभिव्यक्ति को प्रस्तुत नहीं करता है। | पोर्ट 8082 से HTTP प्रतिक्रिया कोड `879` के साथ एक JSON API त्रुटि है। | पैच किए गए PoC कमांड चलाएँ। |
## धारणाएँ और अज्ञात
यह लैब FOSSBilling 0.7.2 का उपयोग कमजोर तुलना लक्ष्य के रूप में करती है क्योंकि सार्वजनिक भेद्यता अनुसंधान FOSSBilling के 0.8.0 से पहले के संस्करणों को प्रभावित बताता है, और 0.7.2 परीक्षण श्रृंखला में उपयोग किया जाने वाला नवीनतम कमजोर रिलीज़ है।
यह लैब FOSSBilling 0.8.0 का उपयोग पैच किए गए तुलना लक्ष्य के रूप में करती है क्योंकि सार्वजनिक सलाहकार मेटाडेटा 0.8.0 को पैच किए गए संस्करण के रूप में पहचानता है।
यह लैब निम्नलिखित के अवलोकन योग्य HTTP व्यवहार पर केंद्रित है:```text
POST /api/system/system/string_render
इस JSON बॉडी के साथ:```json {"_tpl":"{{ 7*7 }}"}
यह लैब दर्शाता है कि FOSSBilling 0.7.2 HTTP API पथ के माध्यम से दिए गए Twig एक्सप्रेशन को रेंडर करता है, जबकि FOSSBilling 0.8.0 उसी API कॉल को एक्सपोज़ नहीं करता है।
यह लैब प्रत्येक FOSSBilling टेम्पलेट रेंडरिंग सुविधा का परीक्षण करने का दावा नहीं करता है। CVE-2026-28496 अन्य Twig रेंडरिंग संदर्भों से भी संबंधित है, जैसे कि एप्लिकेशन के अंदर उपलब्ध टेम्पलेट रेंडरिंग सुविधाएँ।
यह लैब पूर्ण अप्रमाणित रिमोट कोड निष्पादन श्रृंखला का प्रदर्शन नहीं करता है। यह स्थानीय FOSSBilling 0.7.2 लक्ष्य में देखे गए अप्रमाणित HTTP व्यवहार को मान्य करता है और इसकी तुलना FOSSBilling 0.8.0 से करता है। पूर्ण सार्वजनिक श्रृंखला में यहाँ दिखाए गए सुरक्षित Twig एक्सप्रेशन सत्यापन से परे अतिरिक्त API प्राधिकरण व्यवहार शामिल है।
यह लैब प्रदर्शित नहीं करता है:
* रिमोट कमांड निष्पादन,
* क्रेडेंशियल निष्कर्षण,
* डेटाबेस डंपिंग,
* एक्सटेंशन स्थापना,
* मनमाना फ़ाइल लेखन,
* स्थायित्व,
* वेब शेल अपलोड,
* बाहरी कॉलबैक,
* गैर-लैब सिस्टम पर हमले,
* या पोस्ट-एक्सप्लॉइटेशन गतिविधि।
## मूल कारण सारांश
CVE-2026-28496 का मूल कारण असुरक्षित Twig टेम्पलेट रेंडरिंग है।
FOSSBilling गतिशील टेम्पलेट्स को रेंडर करने के लिए Twig का उपयोग करता है। कमजोर संस्करणों में, एक आपूर्ति की गई टेम्पलेट स्ट्रिंग को पर्याप्त सैंडबॉक्स प्रतिबंधों के बिना Twig रेंडरिंग लॉजिक में पारित किया जा सकता है।
कमजोर व्यवहार को इस प्रकार संक्षेपित किया जा सकता है:```text
Input template string
→ FOSSBilling API receives _tpl
→ System\Api\Admin::string_render() reads _tpl
→ System\Service::renderString() receives the template string
→ Twig creates a template from the supplied string
→ Twig evaluates the expression
→ rendered output is returned in the HTTP response
इस हानिरहित टेम्पलेट अभिव्यक्ति के लिए:```twig {{ 7*7 }}
असुरक्षित लक्ष्य अभिव्यक्ति का मूल्यांकन करता है और लौटाता है:```text
49
सुरक्षा मुद्दा केवल अंकगणितीय मूल्यांकन तक सीमित नहीं है। अंकगणितीय मूल्यांकन केवल इस प्रयोगशाला में उपयोग किया जाने वाला सुरक्षित दृश्य संकेत है।