
cve-2022-34169 से विस्तारित Jdk Xalan के payload स्वचालित जनरेटर, जो विभिन्न Jdk के अनुसार उनके अनुरूप xslt फ़ाइल उत्पन्न करता है।
यह cve-2022-34169 भेद्यता के आधार पर विकसित एक उपकरण है जो jdk xalan ओवरफ़्लो भेद्यता के लिए पेलोड स्वचालित रूप से उत्पन्न करता है। चूंकि विभिन्न JDK संस्करणों के लिए अलग-अलग ओवरफ़्लो पेलोड की आवश्यकता होती है, इसलिए यह स्वचालित जनरेटर उपकरण बनाया गया है। बस विभिन्न JDK संस्करणों के साथ इस प्रोजेक्ट को चलाकर विभिन्न xslt एक्सप्लॉइट फ़ाइलें उत्पन्न की जा सकती हैं।
select.bak.xslt को select.xslt के रूप में कॉपी करें, और अपना इच्छित कमांड संशोधित करें।

फिर java -jar AutoGenerateXalanPayload.jar चलाएं। प्रक्रिया के दौरान कुछ त्रुटियाँ आ सकती हैं, उन्हें अनदेखा करें। प्रोग्राम चलने के बाद प्राप्त select.xslt उस JDK संस्करण के अनुरूप xalan ओवरफ़्लो कमांड निष्पादन पेलोड है।

https://mp.weixin.qq.com/s/xxAtjFvk9RxWiY-pwGf8Ow
चूंकि JDK के कई उप-संस्करण हैं, मैंने jdk1.6 से jdk1.8 के संस्करणों की तुलना करने के लिए बाइनरी विधि का उपयोग किया। उदाहरण के लिए 1.7 संस्करण का परीक्षण करें: पहले jdk1.7 के उच्चतम उप-संस्करण का परीक्षण करें, एक xslt प्राप्त करें, इस xslt को टाइप A मानें। फिर jdk1.7 के न्यूनतम उप-संस्करण का परीक्षण करें, एक xslt प्राप्त करें। यदि यह xslt 1.7 के उच्चतम उप-संस्करण द्वारा उत्पन्न सामग्री से बिल्कुल मेल खाता है, तो इसका मतलब है कि jdk1.7 के न्यूनतम से उच्चतम तक सभी एक ही टाइप A पेलोड का उपयोग करते हैं। यदि अलग है, तो मैं jdk1.7 का मध्य संस्करण लेता हूँ और परीक्षण करता हूँ, इस प्रकार बाइनरी विभाजन करता रहता हूँ। यह सबसे तेज़ तरीका है जो मुझे लगा, बिना सभी को स्थापित किए सभी को कवर करने के लिए। नीचे एक परीक्षण उदाहरण दिया गया है: Jdk-8u301 टाइप A पेलोड है, Jdk-8u202 टाइप A पेलोड है, तो Jdk-8u221 उन दोनों का मध्य संस्करण है, यह टाइप B पेलोड नहीं हो सकता, है ना?
https://blog.noah.360.net/xalan-j-integer-truncation-reproduce-cve-2022-34169/
| JDK संस्करण | xsls प्रकार |
|---|
| Jdk-8u301 | A |
| Jdk-8u202 | A |
| Jdk-8u162 | A |
| Jdk8u152 | A |
| Jdk8u151 | B |
| Jdk8u144 | B |
| Jdk8u131 | B |
| Jdk8u121 | C |
| Jdk8u111 | C |
| Jdk8u102 | D |
| Jdk8u101 | D |
| Jdk8u91 | D |
| Jdk8u60 | D |
| Jdk8u20 | D |
| Jdk7u40 | D |
| Jdk7u21 | D |
| Jdk7u10 | D |
| Jdk7u05 | D |
| Jdk7u04 | D |
| Jdk7u03 | E |
| Idk7u02 | E |
| Jdk7u0 | E |
| Jdk6u45 | E |
| Jdk6u20 | E |
| Jdk6u17 | F |
| Jdk6u15 | F |
| Jdk6u10 | F |
| Jdk6u0 | F |