
Log4Shell Proof-Of-Concept https://github.com/kozmer/log4j-shell-poc से व्युत्पन्न
यह रिपॉज़िटरी CVE-2021-44228 भेद्यता के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट है।
यह इस रेपो से व्युत्पन्न है।
इस रिपॉज़िटरी में मैंने एक भेद्य एप्लिकेशन का उदाहरण और इसे एक्सप्लॉइट करने के तरीके का प्रदर्शन बनाया है।
मैंने इस भेद्यता की पीढ़ी को स्वचालित करने के लिए अपस्ट्रीम पायथन स्क्रिप्ट को संशोधित किया है।
इस रेपो में आसान उपयोग के लिए निम्नानुसार दो Dockerfiles हैं:
इस Docker इमेज में हम jdk-8u20 को अपने google drive से डाउनलोड करते हैं, क्योंकि इसे डाउनलोड करने के लिए आपको oracle पर एक खाता बनाना आवश्यक है।
यदि आप इस पर भरोसा नहीं करते हैं, तो आप Dockerfile से डाउनलोडिंग फ़ाइल को संशोधित कर सकते हैं और jdk को यहाँ से डाउनलोड कर सकते हैं (सुनिश्चित करें कि आप linux के लिए Java SE Development Kit 8u20 संस्करण डाउनलोड करते हैं)।
यह Docker Image kozmer द्वारा प्रदान की गई स्क्रिप्ट का एक संशोधित संस्करण चलाता है और यह निम्न कार्य करता है:
इसके लिए उपयोग किए जाने वाले डिफ़ॉल्ट पोर्ट हैं: JNDI LDAP के लिए 1389, SimpleHttpServer के लिए 8000 और रिवर्स शेल के लिए 9001!
इसे संकलित और चलाने के लिए चलाएँ:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
एप्लिकेशन से लॉग देखने और भेद्य एप्लिकेशन को प्रदान किए जाने वाले सही इनपुट को प्राप्त करने के लिए docker logs <containerID> का उपयोग करें।
इस PoC के लिए मैंने docker द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट IPs (172.17.0.1/24) पर विचार किया है, आप अपने परिदृश्य से मेल खाने के लिए उन्हें ./Docker-Ldap/run.sh स्क्रिप्ट में बदल सकते हैं।
इस docker इमेज में एक भेद्य वेब एप्लिकेशन चलता है जो Log4J 2 के बिना-पैच किए गए संस्करण का उपयोग करता है और इसे पोर्ट 8080 पर एक्सपोज़ करता है।
एप्लिकेशन स्रोत ./Docker-Vuln में भी उपलब्ध है, श्रेय kozmer को।
इसे संकलित और चलाने के लिए चलाएँ:
sudo docker build -t log4j-ldap .
sudo docker run -d -p 8000:8000 -p 1389:1389 log4j-ldap
यूज़रनेम इंजेक्टेबल फ़ील्ड है!
रिवर्स शेल स्वीकार करने के लिए आपको पोर्ट 9001 के लिए एक netcat लिसनर बनाना होगा।
nc -lvnp 9001
रेपो डाउनलोड करने के बाद, सुनिश्चित करें कि आपके पास docker engine स्थापित है और आपकी मशीन पर अन्य docker इमेज चालू नहीं हैं।
config.sh स्क्रिप्ट चलाएँ। (यह स्क्रिप्ट चलाने के लिए root विशेषाधिकारों का उपयोग करती है, आप उन्हें तदनुसार संशोधित कर सकते हैं)।9001 पर एक netcat लिसनर खोलें।localhost:8080 पर जाएँ।docker logs <containerID>)।