
सीवीई-2025-66516 Apache Tika भेद्यता के लिए एक POC केवल शैक्षिक उद्देश्यों के लिए
केवल शैक्षिक/अधिकृत परीक्षण | लाइसेंस | सुरक्षा नीति
इस रिपॉजिटरी में CVE-2025-66516 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट (POC) एक्सप्लॉइट है, जो Apache Tika के 3.2.2 से पहले के संस्करणों में एक XML एक्सटर्नल एंटिटी (XXE) इंजेक्शन भेद्यता है। यह भेद्यता tika-parser-pdf-module घटक में XFA (XML Forms Architecture) पार्सर को प्रभावित करती है, जिससे हमलावर दुर्भावनापूर्ण रूप से तैयार किए गए PDF दस्तावेज़ों के माध्यम से स्थानीय फ़ाइलें पढ़ सकते हैं और संवेदनशील डेटा चुरा सकते हैं।
CVE-2025-66516 Apache Tika के PDF पार्सिंग कार्यक्षमता में एक गंभीर सुरक्षा भेद्यता है। एम्बेडेड XFA फ़ॉर्म वाली PDF फ़ाइलों को संसाधित करते समय, Tika के 3.2.2 से पहले के संस्करण XML पार्सर में बाहरी एंटिटी प्रोसेसिंग को ठीक से प्रतिबंधित करने में विफल रहते हैं। यह हमलावरों को अनुमति देता है:
इस रिपॉजिटरी में शामिल हैं:
Apache Tika XXE, CVE-2025-66516 एक्सप्लॉइट, Tika सुरक्षा भेद्यता, XML एक्सटर्नल एंटिटी हमला, PDF XXE इंजेक्शन, Tika 3.2.1 भेद्यता, आउट-ऑफ-बैंड XXE, OOB XXE, सुरक्षा अनुसंधान, पेनिट्रेशन टेस्टिंग, POC एक्सप्लॉइट, भेद्यता प्रकटीकरण, XFA पार्सर भेद्यता, tika-parser-pdf-module, फ़ाइल प्रकटीकरण भेद्यता, डेटा चोरी, SSRF हमला, सुरक्षित कोडिंग, भेद्यता विश्लेषण, सुरक्षा परीक्षण, नैतिक हैकिंग, इन्फोसेक, साइबर सुरक्षा अनुसंधान, Apache Tika एक्सप्लॉइट कोड, XXE पेलोड, PDF सुरक्षा, दस्तावेज़ पार्सर भेद्यता
नोट: इस POC का परीक्षण और सत्यापन निम्नलिखित पर किया गया है:
सबसे पहले, सभी फ़ाइलों को व्यवस्थित रखने के लिए POC के लिए एक समर्पित निर्देशिका बनाएं।
mkdir apache_tika_poc
cd apache_tika_poc
POC के साथ आगे बढ़ने से पहले, सुनिश्चित करें कि आपके पर्यावरण में आवश्यक निर्भरताएँ हैं। ये कमांड आपके Java कंपाइलर/रनटाइम संस्करण और OS विवरण प्रदर्शित करेंगे, जो भेद्यता को पुन: उत्पन्न करने के लिए महत्वपूर्ण हैं।
# Java संस्करण जांचें
java -version
javac -version
# OS संस्करण जांचें
lsb_release -a
अपेक्षित आउटपुट: आपको Java संस्करण जानकारी (जैसे, OpenJDK 17.x.x) और Ubuntu संस्करण विवरण (24.04.3 LTS) दिखना चाहिए।
Apache Tika के असुरक्षित (3.2.1) और पैच किए गए (3.2.2) दोनों संस्करण डाउनलोड करें। हमें यह प्रदर्शित करने के लिए दोनों संस्करणों की आवश्यकता है कि XXE भेद्यता 3.2.1 में मौजूद है और 3.2.2 में ठीक की गई है। tika-app JAR एक ऑल-इन-वन निष्पादन योग्य है जिसमें सभी Tika पार्सर और निर्भरताएँ शामिल हैं।
# असुरक्षित Tika संस्करण डाउनलोड करें
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.1/tika-app-3.2.1.jar
# पैच किया गया Tika संस्करण डाउनलोड करें
wget https://repo1.maven.org/maven2/org/apache/tika/tika-app/3.2.2/tika-app-3.2.2.jar
अपेक्षित आउटपुट: दो JAR फ़ाइलें डाउनलोड होंगी - tika-app-3.2.1.jar (~75MB) और tika-app-3.2.2.jar (~75MB)।
JAR मेनिफेस्ट फ़ाइलों का निरीक्षण करके सटीक संस्करण सत्यापित करें। यह परीक्षण से पहले पुष्टि करता है कि हमारे पास सही असुरक्षित और पैच किए गए संस्करण हैं।
# असुरक्षित संस्करण मेनिफेस्ट जांचें
unzip -p tika-app-3.2.1.jar META-INF/MANIFEST.MF
# पैच किए गए संस्करण मेनिफेस्ट जांचें
unzip -p tika-app-3.2.2.jar META-INF/MANIFEST.MF
अपेक्षित आउटपुट: मेनिफेस्ट फ़ाइलें क्रमशः Implementation-Version: 3.2.1 और 3.2.2 दिखाती हैं, साथ ही बिल्ड टाइमस्टैम्प और अन्य मेटाडेटा।
यदि हम प्रोजेक्ट ऑब्जेक्ट मॉडल (Maven के POM गुण किसी प्रोजेक्ट की निर्भरताओं, बिल्ड कॉन्फ़िगरेशन और मेटाडेटा को परिभाषित करते हैं) को देखते हैं, तो हम देखते हैं कि सुरक्षा सलाह में उल्लिखित कोई अलग tika-parsers नहीं हैं - यह एक संस्करण-संबंधित बात हो सकती है और धारणा यह है कि संस्करण 3.2.1 और 3.2.2 में, जो POC का हिस्सा हैं, tika-parsers मॉड्यूल को व्यक्तिगत पार्सर मॉड्यूल द्वारा बदल दिया गया।
# दोनों संस्करणों के लिए सभी घटक pom.properties फ़ाइलें सूचीबद्ध करें
unzip -l tika-app-3.2.1.jar | grep pom.properties | grep tika
unzip -l tika-app-3.2.2.jar | grep pom.properties | grep tika
अपेक्षित आउटपुट: tika-core, tika-parser-pdf-module, tika-xmp आदि सहित सभी Tika घटक मॉड्यूल की एक सूची। आप एकल tika-parsers मॉड्यूल के बजाय व्यक्तिगत पार्सर मॉड्यूल देखेंगे।
कोर Tika घटकों के लिए संस्करण जानकारी निकालें और प्रदर्शित करें। यह आंतरिक मॉड्यूल संरचना को समझने में मदद करता है और पुष्टि करता है कि कोर लाइब्रेरी और PDF पार्सर मॉड्यूल दोनों अपेक्षित संस्करणों पर हैं।
# 3.2.1 के लिए tika-core, tika-parser-pdf-module और tika-app संस्करण जांचें
unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.1.jar META-INF/maven/org.apache.tika/tika-app/pom.properties
# 3.2.2 के लिए tika-core, tika-parser-pdf-module और tika-app संस्करण जांचें
unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-core/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-parser-pdf-module/pom.properties && echo "---" && unzip -p tika-app-3.2.2.jar META-INF/maven/org.apache.tika/tika-app/pom.properties
अपेक्षित आउटपुट: POM गुण प्रत्येक घटक के लिए version=3.2.1 या version=3.2.2 दिखाते हैं, --- द्वारा अलग किए गए। सभी तीन घटकों (tika-core, tika-parser-pdf-module, tika-app) को समग्र संस्करण से मेल खाना चाहिए।
एक नकली रहस्य फ़ाइल बनाएं जो हमारे XXE हमले का लक्ष्य होगी। यह फ़ाइल संवेदनशील डेटा (जैसे API कुंजी या क्रेडेंशियल) का अनुकरण करती है जिसे एक हमलावर XXE भेद्यता के माध्यम से चुराने का प्रयास कर सकता है।
# लक्ष्य गुप्त फ़ाइल बनाएं
echo "INTERNAL_SERVER_KEY=EXPOSED" > fake-secrets.txt