Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
text4shell-tools — Java JAR/WAR आर्टिफैक्ट्स में असुरक्षित Apache Commons Text का पता लगाएँ और उसे पैच करें; क्लासेस का फ़िंगरप्रिंट लें और CVE-2022-42889 (Text4Shell) कॉल साइट्स के लिए बाइटकोड स्कैन करें। | Kitploit
उपकरण/GitHubGitHub/jfrog/text4shell-tools
रक्षात्मक उपकरणस्थैतिक विश्लेषणभेद्यता विश्लेषणकोड विश्लेषणबाइनरी विश्लेषणआपूर्ति श्रृंखला सुरक्षा
GitHubjfrog/text4shell-tools

text4shell-tools

Java JAR/WAR आर्टिफैक्ट्स में असुरक्षित Apache Commons Text का पता लगाएँ और उसे पैच करें; क्लासेस का फ़िंगरप्रिंट लें और CVE-2022-42889 (Text4Shell) कॉल साइट्स के लिए बाइटकोड स्कैन करें।

रिपॉजिटरी देखें
104203 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

commons-text-tools

त्वरित लिंक

खोजने के लिए क्लिक करें:

  • commons-text .jar फ़ाइलें और उनके संस्करण खोजें

  • commons-text के असुरक्षित फ़ंक्शनों के कॉल

  • असुरक्षित व्यवहारों को अक्षम करने के लिए commons-text .jar फ़ाइलों पर हॉट पैच

  • स्कैन और पैच उदाहरण

अवलोकन

CVE-2022-42889 जावा-आधारित अनुप्रयोगों की एक विस्तृत श्रृंखला के लिए एक गंभीर खतरा पैदा कर सकता है। इस संदर्भ में एक डेवलपर जो महत्वपूर्ण प्रश्न पूछ सकता है वे हैं:

1. क्या मेरे कोड में commons-text शामिल है? कौन से संस्करण?

क्या रिलीज़ किए गए कोड में commons-text शामिल है? उसमें लाइब्रेरी का कौन सा संस्करण शामिल है? दो कारकों के कारण इन प्रश्नों का उत्तर तुरंत नहीं मिल सकता है:

  1. ट्रांज़िटिव निर्भरताएँ: जबकि commons-text प्रोजेक्ट की प्रत्यक्ष निर्भरता सूची में नहीं हो सकता है, इसका उपयोग किसी अन्य निर्भरता द्वारा अप्रत्यक्ष रूप से किया जा सकता है।

  2. इस लाइब्रेरी का कोड सीधे एक अलग फ़ाइल के रूप में प्रकट नहीं हो सकता है, बल्कि इसे किसी अन्य कोड जार फ़ाइल में बंडल किया जा सकता है।

JFrog इस समस्या को हल करने में मदद के लिए एक टूल जारी कर रहा है: scan_commons_text_versions। यह टूल StringLookupFactory के क्लास कोड को खोजता है (चाहे .jar फ़ाइल नाम और pom.xml फ़ाइलों की सामग्री कुछ भी हो), और ऑब्जेक्ट के संस्करणों का फिंगरप्रिंट लेने का प्रयास करता है ताकि रिपोर्ट कर सके कि शामिल commons-text संस्करण असुरक्षित है या नहीं।

2. क्या मेरा कोड असुरक्षित commons-text फ़ंक्शनों का उपयोग करता है?

यह प्रश्न उन मामलों के लिए प्रासंगिक है जहाँ डेवलपर यह सत्यापित करना चाहेगा कि कोडबेस में commons-text के कॉल संभावित रूप से हमलावर-नियंत्रित डेटा पास कर सकते हैं। जैसा कि एडवाइज़री में चर्चा की गई है, भेद्यता को ठीक करने का सबसे सुरक्षित तरीका उचित पैच लागू करना है, लेकिन अनपैच्ड commons-text की धारणा के तहत संभावित प्रभाव को नियंत्रित करना और सत्यापित करना कई स्थितियों में मूल्यवान हो सकता है।

scan_commons_text_calls_jar.py, जो संकलित .jar में असुरक्षित फ़ंक्शनों के कॉल का पता लगाता है, और निष्कर्षों को क्लास नाम और मेथड नाम के रूप में रिपोर्ट करता है जिसमें प्रत्येक कॉल दिखाई देती है।

3. मेरे सिस्टम में असुरक्षित commons-text जार फ़ाइलें हैं, मैं खतरनाक व्यवहार को जल्दी से कैसे अक्षम कर सकता हूँ?

  • अपडेट करना सबसे अच्छा समाधान है - यह समाधान तेज़ हॉट पैचिंग के लिए है

  • CVE-2022-42889 भेद्यता के संदर्भ में, commons-text में क्लास org/apache/commons/text/lookup/ScriptStringLookup उन स्क्रिप्टों के निष्पादन को सक्षम करता है जो हमलावर-नियंत्रित स्रोत से प्राप्त स्ट्रिंग में ${script} के माध्यम से एम्बेडेड हो सकती हैं। इसलिए, ScriptStringLookup.lookup फ़ंक्शन का आह्वान इस कार्यक्षमता के सक्रिय होने का संकेत है।

  • हम एक टूल, Text4ShellPatch प्रदान करते हैं, जो इस विशेष कॉल को पैच करने की अनुमति देता है ताकि स्क्रिप्ट निष्पादन कार्यक्षमता का उपयोग न किया जा सके। पैच लागू करने के बाद, लाइब्रेरी हमेशा एक चेतावनी संदेश लौटाने वाली स्क्रिप्ट निष्पादित करेगी (संभावित रूप से हमलावर-नियंत्रित कोड के बजाय)

  • इसी तरह, DNS और URL लुकअप ${dns} और ${url} के माध्यम से हमलावर द्वारा नियंत्रित किए जाने पर अविश्वसनीय सामग्री लोड कर सकते हैं, इस प्रकार, उनके संबंधित लुकअप DnsStringLookup और UrlStringLookup को पैच के माध्यम से अक्षम किया जा सकता है ताकि चेतावनी संदेश लौटाया जा सके,

  • पैच को किसी विशिष्ट जार फ़ाइल पर लागू किया जा सकता है, केवल script लुकअप के लिए या , और के लिए बेहतर सुरक्षा हेतु यदि इनका उपयोग अनुप्रयोग में करने का इरादा नहीं है,

4. क्या मैं असुरक्षित commons-text जार की स्कैनिंग और पैचिंग को स्वचालित कर सकता हूँ?

हमारे दो टूल मिलकर असुरक्षित commons-text जार फ़ाइलों को स्कैन और पैच करने की क्षमता प्रदान करते हैं।

इस Github रिपॉजिटरी में scan_and_patch.sh नाम से एक उदाहरण bash स्क्रिप्ट मौजूद है। मूल रूप से, यह किसी विशिष्ट root-folder के अंतर्गत असुरक्षित संस्करण वाली commons-text जार फ़ाइलों को खोजने के लिए scan_commons_text_versions.py स्क्रिप्ट का उपयोग करता है और उनके विरुद्ध Text4ShellPatch टूल को निम्नानुसार चलाता है।

ऑटोमेशन का उदाहरण


scan_commons_text_versions.py

उपयोग
root@kitploit:~
python scan_commons_text_versions.py root-folder [-quiet] [-exclude folder1 folder2 ..]

यह टूल root_folder को पुनरावर्ती रूप से .jar और .war फ़ाइलों के लिए स्कैन करेगा; प्रत्येक मिली फ़ाइल में टूल StringLookupFactory.class की खोज करता है (प्रत्येक .jar फ़ाइल में पुनरावर्ती रूप से)। यदि कम से कम एक क्लास मिलती है, तो टूल उसके संस्करण का फिंगरप्रिंट लेने का प्रयास करता है (पैच और बैकपोर्ट पैच में पाए जाने वाले कुछ बदलावों सहित) ताकि यह रिपोर्ट कर सके कि कोड असुरक्षित है या नहीं।

-quiet फ़्लैग के साथ, केवल संस्करण निष्कर्ष मुद्रित होते हैं, और अन्य संदेश (फ़ाइलें नहीं मिलीं / आर्काइव खोलने में विफल / पासवर्ड संरक्षित आर्काइव) म्यूट कर दिए जाते हैं।

-exclude (वैकल्पिक) के बाद आने वाले फ़ोल्डरों को छोड़ दिया जाता है।


scan_commons_text_calls_jar.py

इस टूल के लिए python 3 और निम्नलिखित तृतीय-पक्ष लाइब्रेरी की आवश्यकता होती है: jawa, tqdm, easyargs, colorama

निर्भरताओं की स्थापना
root@kitploit:~
pip install -r requirements.txt
उपयोग

डिफ़ॉल्ट उपयोग मामला:

root@kitploit:~
python scan_commons_text_calls_jar.py root-folder

यह root-folder में सभी .jar फ़ाइलों को पुनरावर्ती रूप से स्कैन करेगा, और प्रत्येक के लिए StringSubstitutor/StringLookup के lookup/replace/replaceIn मेथडों के कॉल के स्थान (क्लास नाम और मेथड नाम) प्रिंट करेगा।

निम्नलिखित कमांड लाइन फ़्लैग का उपयोग करके टूल को अतिरिक्त उपयोग मामलों के लिए कॉन्फ़िगर किया जा सकता है।


text_4_shell_patch

उपयोग
root@kitploit:~
java -jar Text4ShellPatch.jar TARGET_JAR [PATCHING_MODE]
  Where TARGET_JAR is the application to patch and PATCHING_MODE is
    0 (default): Patch Script lookup
    1:           Patch Script + DNS + URL lookups
  [Note: The original Jar will be kept in the same folder with the .orig.jar extension]  

यह टूल दिए गए commons-text जार में org/apache/commons/text/lookup/ScriptStringLookup क्लास को खोजेगा और lookup() फ़ंक्शन की सामग्री को चेतावनी संदेश से बदल देगा और फ़ंक्शन से बाहर लौट जाएगा। इस प्रकार, नई ScriptStringLookup क्लास में eval मौजूद नहीं होगा।

यह DnsStringLookup और URLStringLookup क्लासों को भी पैच कर सकता है और PATCHING_MODE विकल्प को 1 पर सेट करने पर lookup() फ़ंक्शन को अक्षम कर सकता है।

इस प्रक्रिया के दौरान मूल जार के समान पथ में .orig.jar एक्सटेंशन के साथ एक बैकअप फ़ाइल तैयार की जाती है।

कोड-स्रोत से निर्माण

Text4ShellPatch को Maven के साथ सरल कमांड का उपयोग करके संपादित और संकलित किया जा सकता है: mvn clean assembly:single। यह target/ फ़ोल्डर में एक Text4ShellPatch.jar फ़ाइल बनाएगा।

टूल डाउनलोड करें
script
dns
url
  • पैच वाली फ़ाइल से बदले जाने से पहले मूल जार के समान स्थान पर एक बैकअप तैयार किया जाता है। बैकअप फ़ाइल नाम निम्न पैटर्न का पालन करता है: <original_jar_name>_YYYY.MM.DD_HH.mm.ss.orig.jar जहाँ YYYY, MM, DD क्रमशः वर्ष, माह और दिन हैं, और HH, mm, ss क्रमशः घंटे, मिनट और सेकंड हैं।

  • commons-text के असुरक्षित संस्करणों का पता लगाना और उन्हें स्वचालित रूप से पैच करना भी संभव है, जैसा कि अगला प्रश्न उत्तर देता है।

  • फ़्लैगडिफ़ॉल्ट मानउपयोग
    --class_regex(.*StringSubstitutor|.*StringLookup)आवश्यक क्लास नाम के लिए रेगुलर एक्सप्रेशन
    --method_regex(lookup|replace|replaceIn)आवश्यक मेथड नाम के लिए रेगुलर एक्सप्रेशन
    --quickmatch_string(StringLookup|StringSubstitutor)फ़ाइल विश्लेषण के लिए पूर्व-शर्त: निर्दिष्ट regex वाली नहीं मिलने वाली .jar फ़ाइलों को अनदेखा किया जाएगा
    --class_existenceसेट नहींजब सेट न हो, regexes द्वारा निर्दिष्ट क्लास::मेथड कॉल खोजें। जब सेट हो, --method_regex अनदेखा किया जाता है, और टूल जार में --class_regex द्वारा निर्दिष्ट क्लासों के अस्तित्व की खोज करेगा।
    --no_quickmatchसेट नहींजब सेट हो, --quickmatch_string का मान अनदेखा किया जाता है और सभी जार फ़ाइलों का विश्लेषण किया जाता है
    --caller_block.*org/apache/commons/textयदि कॉलर क्लास इस regex से मेल खाती है, तो इसे प्रदर्शित नहीं किया जाएगा