
Docker-आधारित लैब जो Java ऐप्स में CVE-2021-44228 (Log4Shell) को मान्य करने, शमन (mitigations) का परीक्षण करने, और LDAP तथा HTTP पेलोड के माध्यम से RCE का अनुकरण करने के लिए है।
यह टूल आपको यह जाँचने की सुविधा देता है कि कोई साधारण Java वेब ऐप, उपयोगकर्ता द्वारा प्रदान किए गए Java और Log4J के संस्करण के लिए CVE-2021-44228 के प्रति संवेदनशील (vulnerable) है या नहीं।
आप [वैकल्पिक रूप से] पूर्व-निर्धारित शमन (mitigations) में से एक को भी लागू कर सकते हैं।
log4shell_validator.py द्वारा तैयार किया गया सिमुलेशन लैब, log4j भेद्यता का फायदा उठाने और संवेदनशील मशीन पर RCE प्राप्त करने का अनुकरण करने के लिए docker-compose का उपयोग करता है।
सबसे पहले, कुछ docker इमेज बनानी होती हैं। ./build_images.sh स्क्रिप्ट इसका ध्यान रखनी चाहिए।
हमले का अनुकरण निम्नलिखित तरीके से किया जाता है:
/2021-44228-via-message पर GET कॉल प्राप्त करता है, तो यह हमेशा User-Agent हेडर फ़ील्ड को लॉग करता है। इस एप्लिकेशन का कोड ./poc_template के अंतर्गत उपलब्ध है।./exploit.sh स्क्रिप्ट चलाता है जो संवेदनशील ऐप को एक पेलोड भेजती है।cd marshalsec/ ;mvn clean package -DskipTests ;cd -./build-images.sh चलाएँpython log4shell_validator.py --java-version 8 --log4j-version 2.12.1 चलाएँ~/workspace/CVE-2021-44228-playground$ python log4shell_validator.py --help
usage: log4shell_validator.py [-h] [--java-version JAVA_VERSION] --log4j-version LOG4J_VERSION [--no-cleanup] [--disable-trust-url] [--remove-jndi-lookup-class] [--disable-message-lookup] [--debug]
[--exploit-via-thread-context]
log4j-vulnerability-tester
optional arguments:
-h, --help show this help message and exit
--java-version JAVA_VERSION
version of java to be used
--log4j-version LOG4J_VERSION
version of log4j to be used
--no-cleanup Don't delete used containers.
--disable-trust-url Disable the LDAP trustURLCodebase setting on the victim app
--remove-jndi-lookup-class
Remove the JNDI Lookup class from the log4j jar file
--disable-message-lookup
Disable the JNDI message lookup in the victim app's JVM
--debug Display all container's logs
--exploit-via-thread-context
By sending the payload to an HTTP handler which makes use of Custom logging with ThreadContext, attempt to bypass the no-message-lookup mitigation
इस वैलिडेटर का परीक्षण Java7/8 के कई संयोजनों और Log4J2 के विभिन्न संस्करणों के साथ किया गया है, अधिक उदाहरणों के लिए कृपया github actions टैब में विस्तारित परीक्षण पाइपलाइन देखें।
अभी के लिए, निम्नलिखित शमन लागू किए गए हैं:
com.sun.jndi.ldap.object.trustURLCodebase प्रॉपर्टी को False पर सेट करके LDAP के लिए trustURLCodebase को अक्षम करना।-Dlog4j2.formatMsgNoLookups=Trueइसके अलावा, message lookups को अक्षम करने से बचने वाले शोषण वेक्टर का परीक्षण करने के लिए एक नया फ्लैग जोड़ा गया है: --exploit-via-thread-context
यह सॉफ़्टवेयर पूरी तरह से शोध और प्रभावी शमन तकनीकों के विकास के उद्देश्य से बनाया गया है, और इसका उद्देश्य सिस्टम पर हमला करना नहीं है, सिवाय उन स्थितियों के जहाँ स्पष्ट रूप से अधिकृत किया गया हो। परियोजना अनुरक्षक सॉफ़्टवेयर के दुरुपयोग के लिए ज़िम्मेदार या उत्तरदायी नहीं हैं। ज़िम्मेदारी से उपयोग करें।