
إثبات مفهوم لـ CVE-2021-27850 الذي يؤثر على Apache Tapestry ويؤدي إلى تنفيذ تعليمات برمجية عن بُعد بدون مصادقة.
CVE-2021-27850 هي ثغرة حرجة لتنفيذ الأوامر عن بُعد غير مصرح بها، وُجدت في جميع الإصدارات الحديثة من Apache Tapestry. عن طريق تحميل ملف AppModule.class يمكننا تسريب المفتاح السري HMAC المستخدم لتوقيع جميع الكائنات المسلسلة في Apache Tapestry.
واجهنا هذه الثغرة في تقييم واقعي، وحسب علمي لا توجد استغلالات عامة متاحة حول كيفية توقيع Tapestry للكائنات المسلسلة، لذلك قررنا نشر إثبات المفهوم التالي الذي استخدمناه بعد الغوص في شفرة مصدر Apache Tapestry لفترة طويلة x) .
تحية إلى معلمي Fares
1- استنساخ هذا المستودع
2- تشغيل الأمر التالي
javac -classpath commons-codec-1.15/commons-codec-1.15.jar:. Exploit.java
3- أخيرًا، تشغيل ما يلي:
java -cp commons-codec-1.15/commons-codec-1.15.jar:. Exploit [Tapestry Key] [Ysoserial Payload] [Command To Execute]
حيث [Tapestry Key] هو المفتاح Hmac المسرب من ملف AppModule.class، و [Ysoserial Payload] هو الحمولة التي تريد استخدامها من ysoserial، و [Command To Execute] هو الأمر الذي تريد تنفيذه.

ملاحظة: على عكس استغلالات إلغاء التسلسل المعتادة في Java حيث تكون الأوامر التي تشغلها محدودة (لا أنابيب أو أحرف خاصة...)، يمكنك هنا استخدام أي أمر معقد تريده لأننا نضيف التالي قبل تنفيذ الأمر sh -c $@|sh . echo .
المراجع: