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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
text4shell-tools — اكتشاف وإصلاح Apache Commons Text المعرّضة للخطر في ملفات Java بصيغة JAR/WAR؛ اعمل بصمة للفئات وافحص البايت كود بحثًا عن مواقع استدعاء CVE-2022-42889 (Text4Shell). | Kitploit
أدوات/GitHubGitHub/jfrog/text4shell-tools
أدوات دفاعيةالتحليل الثابتتحليل الثغرات الأمنيةتحليل الكودتحليل الملفات الثنائيةأمن سلسلة التوريد
GitHubjfrog/text4shell-tools

text4shell-tools

اكتشاف وإصلاح Apache Commons Text المعرّضة للخطر في ملفات Java بصيغة JAR/WAR؛ اعمل بصمة للفئات وافحص البايت كود بحثًا عن مواقع استدعاء CVE-2022-42889 (Text4Shell).

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

الأكثر شعبية

عرض الكل →

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

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

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

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

commons-text-tools

روابط سريعة

انقر للانتقال إلى:

  • العثور على ملفات commons-text بصيغة .jar وإصداراتها

  • استدعاءات الدوال الضعيفة في commons-text

  • التصحيح الفوري لملفات commons-text بصيغة .jar لتعطيل السلوكيات الضعيفة

  • مثال على الفحص والتصحيح

نظرة عامة

قد يشكل CVE-2022-42889 تهديدًا خطيرًا لمجموعة واسعة من التطبيقات المبنية على Java. الأسئلة المهمة التي قد يطرحها المطوّر في هذا السياق هي:

1. هل يتضمّن كودي commons-text؟ وما هي الإصدارات؟

هل يتضمّن الكود المُصدَر commons-text؟ وما هو إصدار المكتبة المضمّنة فيه؟ قد لا تكون الإجابة على هذه الأسئلة مباشرة بسبب عاملين:

  1. التبعيات غير المباشرة (Transitive dependencies): في حين أن commons-text قد لا يكون في قائمة التبعيات المباشرة للمشروع، إلا أنه قد يُستخدم بشكل غير مباشر عبر تبعية أخرى.

  2. قد لا يظهر كود هذه المكتبة مباشرةً كملف منفصل، بل قد يكون مضمّنًا داخل ملف jar آخر خاص بكود التطبيق.

تُصدر JFrog أداة للمساعدة في حل هذه المشكلة: scan_commons_text_versions. تبحث الأداة عن كود الفئة StringLookupFactory (بغضّ النظر عن أسماء ملفات .jar المحتوية عليها ومحتوى ملفات pom.xml)، وتحاول تحديد بصمة إصدارات الكائنات لتُبلغ ما إذا كان إصدار commons-text المضمّن ضعيفًا.

2. هل يستخدم كودي دوال commons-text الضعيفة؟

هذا السؤال مهم في الحالات التي يرغب فيها المطوّر بالتحقق مما إذا كانت استدعاءات commons-text في قاعدة الكود قد تمرّر بيانات يحتمل أن يتحكم بها المهاجم. في حين أن الطريقة الأأمن لإصلاح الثغرة، كما ورد في النشرات الأمنية، هي تطبيق التصحيحات المناسبة، فإن ضبط والتحقق من الأثر المحتمل بافتراض عدم تصحيح commons-text قد يكون ذا قيمة في العديد من الحالات.

scan_commons_text_calls_jar.py، التي تحدّد مواقع استدعاءات الدوال الضعيفة في ملفات .jar المترجمة، وتبلغ عن النتائج كأسماء الفئات وأسماء الدوال التي يظهر فيها كل استدعاء.

3. لديّ ملفات commons-text بصيغة jar ضعيفة على نظامي، كيف يمكنني تعطيل السلوك الخطير بسرعة؟

  • يبقى التحديث هو الحل الأفضل - هذا الحل مخصّص للتصحيح الفوري السريع (hot patching).

  • في سياق ثغرة CVE-2022-42889، تتيح الفئة org/apache/commons/text/lookup/ScriptStringLookup في commons-text تنفيذ نصوص برمجية قد تكون مضمّنة في سلسلة نصية واردة من مصدر يتحكم به المهاجم عبر ${script}. لذلك، فإن استدعاءات الدالة ScriptStringLookup.lookup تدل على تفعيل هذه الوظيفة.

  • نوفر أداة، Text4ShellPatch، تسمح بتصحيح هذا الاستدعاء المحدد بحيث لا يمكن استخدام وظيفة تنفيذ النصوص البرمجية. بعد تطبيق التصحيح، ستنفّذ المكتبة دائمًا نصًا برمجيًا يعيد رسالة تحذير (بدلاً من الكود الذي يحتمل أن يتحكم به المهاجم).

  • وبالمثل، يمكن لعمليات البحث DNS وURL تحميل محتوى غير موثوق إذا تحكم بها المهاجم عبر ${dns} و ${url}؛ لذا يمكن تعطيل عملية البحث الخاصة بكل منهما، DnsStringLookup و UrlStringLookup على التوالي، من خلال تصحيح يُرجع رسالة تحذير.

  • يمكن تطبيق التصحيح على ملف jar محدد، لبحث script فقط أو لـ script و و معًا لحماية أفضل في حال لم يكن من المقرر استخدامها في التطبيق.

4. هل يمكنني أتمتة فحص وتصحيح ملفات commons-text بصيغة jar الضعيفة؟

توفر أداتان من أدواتنا معًا القدرة على فحص وتصحيح ملفات commons-text بصيغة jar الضعيفة.

يوجد مثال على سكربت bash في هذا المستودع على Github باسم scan_and_patch.sh. يستخدم بشكل أساسي سكربت scan_commons_text_versions.py للعثور، داخل root-folder محدد، على ملفات commons-text بصيغة jar ذات إصدار ضعيف، ثم تشغيل أداة Text4ShellPatch عليها كما يلي.

Example of automation


scan_commons_text_versions.py

الاستخدام
root@kitploit:~
python scan_commons_text_versions.py root-folder [-quiet] [-exclude folder1 folder2 ..]

ستقوم الأداة بفحص root_folder بشكل متكرر بحثًا عن ملفات .jar و .war؛ وفي كل ملف يتم العثور عليه، تبحث الأداة عن StringLookupFactory.class (بشكل متكرر داخل كل ملف .jar). إذا تم العثور على فئة واحدة على الأقل، تحاول الأداة تحديد بصمة إصدارها (بما في ذلك بعض الاختلافات الموجودة في التصحيحات والتصحيحات المُرحّلة backport) لتُبلغ ما إذا كان الكود ضعيفًا.

مع العلمة -quiet، تتم طباعة استنتاجات الإصدار فقط، ويتم كتم الرسائل الأخرى (ملفات غير موجودة / أرشيفات فشل فتحها / أرشيفات محمية بكلمة مرور).

يتم تخطي المجلدات التي تظهر بعد -exclude (اختياري).


scan_commons_text_calls_jar.py

تتطلب الأداة بايثون 3 والمكتبات الخارجية التالية: jawa، tqdm، easyargs، colorama

تثبيت التبعيات
root@kitploit:~
pip install -r requirements.txt
الاستخدام

حالة الاستخدام الافتراضية:

root@kitploit:~
python scan_commons_text_calls_jar.py root-folder

ستقوم بفحص جميع ملفات .jar في root-folder بشكل متكرر، وستطبع لكل ملف مواقع (اسم الفئة واسم الدالة) الاستدعاءات لدوال lookup/replace/replaceIn الخاصة بـ StringSubstitutor/StringLookup.

يمكن تهيئة الأداة لحالات استخدام إضافية باستخدام علامات سطر الأوامر التالية.


text_4_shell_patch

الاستخدام
root@kitploit:~
java -jar Text4ShellPatch.jar TARGET_JAR [PATCHING_MODE]
  Where TARGET_JAR is the application to patch and PATCHING_MODE is
    0 (default): Patch Script lookup
    1:           Patch Script + DNS + URL lookups
  [Note: The original Jar will be kept in the same folder with the .orig.jar extension]  

ستبحث الأداة عن الفئة org/apache/commons/text/lookup/ScriptStringLookup في ملف commons-text jar المعطى، وتستبدل محتوى الدالة lookup() برسالة تحذير وتعود من الدالة. وبالتالي، لن يكون eval موجودًا في فئة ScriptStringLookup الجديدة.

يمكنها أيضًا تصحيح الفئتين DnsStringLookup و URLStringLookup وتعطيل الدالة lookup() عند ضبط خيار PATCHING_MODE على 1.

يتم إنشاء ملف نسخة احتياطية أثناء العملية في نفس المسار بامتداد .orig.jar.

البناء من الكود المصدري

يمكن تعديل Text4ShellPatch وترجمته باستخدام Maven بالأمر البسيط: mvn clean assembly:single. سينشئ ملف Text4ShellPatch.jar في مجلد target/.

تنزيل الأداة
dns
url
  • يتم إنشاء نسخة احتياطية في نفس موقع ملف jar الأصلي قبل استبداله بالملف المصحح. يتبع اسم النسخة الاحتياطية النمط التالي: <original_jar_name>_YYYY.MM.DD_HH.mm.ss.orig.jar حيث YYYY و MM و DD هي السنة والشهر واليوم على التوالي، وHH و mm و ss هي الساعة والدقائق والثانية على التوالي.

  • من الممكن أيضًا تحديد الإصدارات الضعيفة من commons-text وتصحيحها تلقائيًا كما يجيب على ذلك السؤال التالي.

  • FlagDefault valueUse
    --class_regex(.*StringSubstitutor|.*StringLookup)تعبير نمطي (Regex) لاسم الفئة المطلوبة
    --method_regex(lookup|replace|replaceIn)تعبير نمطي (Regex) لاسم الدالة المطلوبة
    --quickmatch_string(StringLookup|StringSubstitutor)شرط مسبق لتحليل الملف: سيتم تجاهل ملفات .jar التي لا تحتوي على التعبير النمطي المحدد
    --class_existenceغير معيّنعند عدم تعيينها، تبحث عن استدعاءات class::method كما هو محدد بواسطة التعبيرات النمطية. عند تعيينها، يتم تجاهل --method_regex، وستبحث الأداة عن وجود الفئات المحددة بواسطة --class_regex في ملف jar.
    --no_quickmatchغير معيّنعند تعيينها، يتم تجاهل قيمة --quickmatch_string ويتم تحليل جميع ملفات jar
    --caller_block.*org/apache/commons/textإذا تطابق اسم الفئة المستدعية مع هذا التعبير النمطي، فلن يتم عرضها