
CVE-2021-41773 | Apache HTTP Server 2.4.49 معرّض لهجمات اجتياز المسار (Path Traversal) وتنفيذ الكود عن بُعد (Remote Code Execution)
CVE-2021-41773 وفقًا لقاعدة بيانات الثغرات الوطنية (NVD) CVE-2021-41773، فإن Apache HTTP Server 2.4.49 عرضة لهجمات اجتياز المسار وتنفيذ التعليمات البرمجية عن بُعد.
أُدخلت ثغرة اجتياز المسار بسبب تغيير الكود الجديد المضاف لتطبيع المسار، أي لإزالة الأجزاء غير المرغوب فيها أو الخطيرة من اسم المسار في مسارات URL،
لكنه لم يكن كافيًا لاكتشاف التقنيات المختلفة لتشفير أحرف اجتياز المسار «نقطة-نقطة-شرطة مائلة (../)» لمنع هجمات اجتياز المسار، تقوم دالة التطبيع المسؤولة عن حل القيم المشفرة عبر URL من URI المطلوب بحل قيم Unicode واحدة تلو الأخرى. لذا عند ترميز النقطة الثانية كـ %2e، يفشل المنطق في التعرف على %2e كنقطة وبالتالي لا يقوم بفك تشفيرها، وهذا يحول الأحرف ../ إلى .%2e/ ويتجاوز الفحص.
إلى جانب تجاوز فحص اجتياز المسار، لكي يكون خادم Apache HTTP عرضة للثغرة، يجب أن يحتوي تكوين الخادم إما على توجيه الدليل لنظام ملفات الخادم بالكامل كـ Require all granted أو أن يكون توجيه الدليل مفقودًا تمامًا من ملف التكوين. لذلك، فإن تجاوز فحص النقطة-النقطة كـ .%2e وربطه بتوجيه دليل تم إعداده بشكل خاطئ يسمح للمهاجم بقراءة ملفات عشوائية مثل passwd من نظام ملفات الخادم المعرّض للثغرة.
بينما تم توثيق CVE-2021-41773 في البداية كثغرة اجتياز المسار وكشف الملفات، خلص بحث إضافي إلى أنه يمكن استغلال الثغرة بشكل أكبر لتنفيذ تعليمات برمجية عن بُعد عند تمكين وحدة mod_cgi على خادم Apache HTTP، مما يسمح للمهاجم باستغلال ثغرة اجتياز المسار واستدعاء أي برنامج ثنائي على النظام باستخدام طلبات HTTP POST.
معطلة على خادم Apache HTTP من خلال التعليق على السطر أعلاه في ملف التكوين. وبالتالي، عندما يتم تمكين mod_cgi ويتم تطبيق إعداد “Require all granted” على توجيه دليل نظام الملفات، يمكن للمهاجم تنفيذ أوامر عن بُعد على خادم Apache.
docker run -dit --name Apache -p 83:80 b0x
cp /bin/sh /usr/bin/
ruby CVE-2021-41773.rb
# c c wWw wWw -2021-41773
# (OO) (O) (O) wWw
# ,'.--.) ( / ) (O)_
# / //_|_ / / .' __)
# | ___ / / ( _)
# '. ) `--' / `.__)
# `-.' `-..-'
# Author:Habib
# ruby CVE-2021-41773.rb target_url dir command
# ruby CVE-2021-41773.rb http://localhost bin/sh whoami
ruby CVE-2121-41773.rb http://localhost:83
Target: http://localhost:83 is vulnerable
Command:
ruby CVE-2121-41773.rb http://localhost:83 bin/sh id Target: http://localhost:83 is vulnerable
Command: uid=1(daemon) gid=1(daemon) groups=1(daemon)