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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
regexploit — ऐसे रेगुलर एक्सप्रेशन खोजें जो ReDoS (Regular Expression Denial of Service) के प्रति संवेदनशील हैं | Kitploit
उपकरण/GitHubGitHub/doyensec/regexploit
स्थैतिक कोड विश्लेषण (SAST)भेद्यता विश्लेषणफज़िंग
GitHubdoyensec/regexploit

regexploit

ऐसे रेगुलर एक्सप्रेशन खोजें जो ReDoS (Regular Expression Denial of Service) के प्रति संवेदनशील हैं

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

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

सभी देखें →

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

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

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

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

Regexploit

regexploit_logo

उन regexes को खोजें जो Regular Expression Denial of Service (ReDoS) के प्रति संवेदनशील हैं।

अधिक जानकारी Doyensec ब्लॉग पर

अधिकांश डिफ़ॉल्ट रेगुलर एक्सप्रेशन पार्सर्स की सबसे खराब स्थिति की जटिलता असीमित होती है। जब कोई मिलान करने वाला इनपुट स्ट्रिंग दिया जाता है तो regex मिलान तेज़ हो सकता है। हालांकि, कुछ गैर-मिलान करने वाले इनपुट स्ट्रिंग regex मैचर को पागल बैकट्रैकिंग लूप में डाल सकते हैं और प्रोसेस करने में बहुत समय ले सकते हैं। इससे सेवा से इनकार हो सकता है, क्योंकि CPU regex को मिलाने की कोशिश में फंस जाएगा।

यह उपकरण निम्नलिखित के लिए डिज़ाइन किया गया है:

  • उन रेगुलर एक्सप्रेशंस को खोजें जो ReDoS के प्रति संवेदनशील हैं
  • एक उदाहरण दुर्भावनापूर्ण स्ट्रिंग दें जो भयावह बैकट्रैकिंग का कारण बनेगी

सबसे खराब स्थिति की जटिलता

यह regex मैचर की बैकट्रैकिंग प्रक्रिया की जटिलता को दर्शाता है, जो इनपुट स्ट्रिंग की लंबाई के सापेक्ष है।

यहाँ घन जटिलता का अर्थ है कि यदि स्ट्रिंग के संवेदनशील भाग की लंबाई दोगुनी कर दी जाए, तो निष्पादन समय लगभग 8 गुना अधिक (2^3) होना चाहिए। तारांकित तारों के साथ घातीय ReDoS के लिए जैसे (a*)*$ एक फजी कारक का उपयोग किया जाता है और जटिलता 10 से अधिक होगी।

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

उदाहरण

regexploit चलाएँ और कमांड लाइन पर रेगुलर एक्सप्रेशन v\w*_\w*_\w*$ दर्ज करें।

root@kitploit:~
$ regexploit
v\w*_\w*_\w*$
Pattern: v\w*_\w*_\w*$
---
Worst-case complexity: 3 ⭐⭐⭐ (cubic)
Repeated character: [5f:_]
Final character to cause backtracking: [^WORD]
Example: 'v' + '_' * 3456 + '!'

भाग \w*_\w*_\w* में तीन ओवरलैपिंग दोहराए जाने वाले समूह हैं (\w अक्षरों, अंकों और अंडरस्कोर से मेल खाता है)। जैसा कि लाइन Repeated character: [5f:_] में दिखाया गया है, _ (0x5f) का एक लंबा स्ट्रिंग इस खंड से कई अलग-अलग तरीकों से मेल खाएगा। सबसे खराब स्थिति की जटिलता 3 है क्योंकि यहाँ 3 अनंत रूप से दोहराए जाने वाले समूह हैं। ReDoS का कारण बनने के लिए एक उदाहरण दिया गया है: इसमें आवश्यक उपसर्ग v, _ का एक लंबा स्ट्रिंग और फिर बैकट्रैकिंग के लिए एक ! (गैर-शब्द वर्ण) शामिल है। सभी ReDoS के लिए अंत में किसी विशेष वर्ण की आवश्यकता नहीं होती, लेकिन इस मामले में, _ का एक लंबा स्ट्रिंग regex से सफलतापूर्वक मेल खाएगा और बैकट्रैक नहीं करेगा। लाइन Final character to cause backtracking: [^WORD] दर्शाती है कि अंत में एक गैर-मिलान वर्ण (शब्द वर्ण नहीं) की आवश्यकता है ताकि मिलान को रोका जा सके और ReDoS का कारण बना जा सके।

एक अन्य उदाहरण के रूप में, ReDoS के प्रति संवेदनशील मॉड्यूल संस्करण स्थापित करें जैसे pip install ua-parser==0.9.0। स्थापित पायथन मॉड्यूल को स्कैन करने के लिए regexploit-python-env चलाएँ।

root@kitploit:~
Importing ua_parser.user_agent_parser
Vulnerable regex in /somewhere/.env/lib/python3.9/site-packages/ua_parser/user_agent_parser.py #183
Pattern: \bSmartWatch *\( *([^;]+) *; *([^;]+) *;
Context: self.user_agent_re = re.compile(self.pattern)
---
Worst-case complexity: 3 ⭐⭐⭐
Repeated character: [20]
Example: 'SmartWatch(' + ' ' * 3456

Worst-case complexity: 3 ⭐⭐⭐
Repeated character: [20]
Example: 'SmartWatch(0;' + ' ' * 3456

Vulnerable regex in /somewhere/.env/lib/python3.9/site-packages/ua_parser/user_agent_parser.py #183
Pattern: ; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\d+[^\);]+)[^\);]*\)
Context: self.user_agent_re = re.compile(self.pattern)
---
Worst-case complexity: 3 ⭐⭐⭐
Repeated character: [[0-9]]
Example: ';0 Build/HuaweiA' + '0' * 3456
...

प्रत्येक संवेदनशील रेगुलर एक्सप्रेशन के लिए यह ReDoS ट्रिगर करने के लिए एक या अधिक दुर्भावनापूर्ण स्ट्रिंग प्रिंट करता है। अपने user agent को ;0 Build/HuaweiA000000000000000... पर सेट करना और ua-parser के पुराने संस्करण का उपयोग करने वाली वेबसाइट पर ब्राउज़ करना सर्वर को आपके अनुरोध को संसाधित करने में लंबा समय ले सकता है, संभवतः स्थिति 502 पर समाप्त हो सकता है।

स्थापना

Python 3.8+ आवश्यक है। JavaScript / TypeScript कोड से regex निकालने के लिए, NodeJS 12+ भी आवश्यक है।

वैकल्पिक रूप से एक वर्चुअल वातावरण बनाएँ

root@kitploit:~
python3 -m venv .env
source .env/bin/activate

अब pip के साथ वास्तव में स्थापित करें

root@kitploit:~
pip install regexploit

उपयोग

regexploit का उपयोग regex की सूची के साथ

regexploit में stdin के माध्यम से (प्रति पंक्ति एक) रेगुलर एक्सप्रेशन दर्ज करें।

root@kitploit:~
regexploit

या फ़ाइल के माध्यम से

root@kitploit:~
cat myregexes.txt | regexploit

स्वचालित रूप से regex निकालें

Python, JavaScript, TypeScript, C#, YAML और JSON से regex पार्स करने के लिए अंतर्निहित समर्थन है।

Python कोड

Python कोड को AST के माध्यम से (निष्पादित किए बिना) पार्स करता है ताकि regex मिल सकें। फिर regex का ReDoS के लिए विश्लेषण किया जाता है।

root@kitploit:~
regexploit-py my-project/
regexploit-py "my-project/**/*.py" --glob

Javascript / Typescript

यह regexploit/bin/javascript में बंडल NodeJS पैकेज का उपयोग करेगा जो आपके JavaScript को AST के रूप में eslint के साथ पार्स करता है और सभी regex प्रिंट करता है।

वे regex python ReDoS खोजकर्ता में फीड किए जाते हैं।

root@kitploit:~
regexploit-js my-module/my-file.js another/file.js some/folder/
regexploit-js "my-project/node_modules/**/*.js" --glob

नोट: जावास्क्रिप्ट और पायथन regex पार्सिंग में अंतर हैं, इसलिए कुछ त्रुटियाँ हो सकती हैं। मुझे यकीन नहीं है कि मैं चाहता हूँ JS regex AST लिखना!

Python आयात

आपके पथ / env में वर्तमान में स्थापित सभी python मॉड्यूल में regex खोजें। इसका मतलब है कि आप जिस भी मॉड्यूल में रुचि रखते हैं उसे pip install कर सकते हैं और उनका विश्लेषण किया जाएगा। Cpython कोड शामिल है।

root@kitploit:~
regexploit-python-env

नोट: यह python कोड को AST में पार्स नहीं करता है और केवल उन regex को ढूँढेगा जो मॉड्यूल आयात पर स्वचालित रूप से संकलित होते हैं। मॉड्यूल वास्तव में आयात किए जाते हैं, इसलिए मॉड्यूल में कोड निष्पादित किया जाएगा। यह उन regex को खोजने में सहायक है जो लोड होने पर छोटे स्ट्रिंग्स से निर्मित होते हैं, उदाहरण के लिए Pillow में CVE-2021-25292

JSON / YAML

Yaml समर्थन के लिए pyyaml की आवश्यकता है, जिसे pip install regexploit[yaml] से स्थापित किया जा सकता है।

root@kitploit:~
regexploit-json *.json
regexploit-yaml *.yaml

C# (.NET)

root@kitploit:~
regexploit-csharp something.cs

🏆 रिपोर्ट किए गए बग 🏆

  • CVE-2020-5243: uap-core जो uap-python, uap-ruby, आदि को प्रभावित करता है (User-Agent हेडर पार्सिंग)
  • CVE-2020-8492: cpython का urllib.request (WWW-Authenticate हेडर पार्सिंग)
  • CVE-2021-21236: CairoSVG (SVG पार्सिंग)
  • CVE-2021-21240: httplib2 (WWW-Authenticate हेडर पार्सिंग)
  • CVE-2021-25292: python-pillow (PDF पार्सिंग)
  • CVE-2021-26813: python-markdown2 (Markdown पार्सिंग)
  • CVE-2021-27290: npm/ssri (SRI पार्सिंग)
  • CVE-2021-27291: pygments ADL, CADL, Ceylon, Evoque, Factor, Logos, Matlab, Octave, ODIN, Scilab और Varnish VCL के लिए लेक्सर्स (सिंटैक्स हाइलाइटिंग)
  • CVE-2021-27292: ua-parser-js (User-Agent हेडर पार्सिंग)
  • CVE-2021-27293: RestSharp (.NET C# पैकेज में JSON डीसेरियलाइज़ेशन)
  • bpo-38804: cpython का http.cookiejar (Set-Cookie हेडर पार्सिंग)
  • SimpleCrawler (संग्रहीत) (HTML पार्सिंग)
  • CVE-2021-28092: is-svg (SVG पार्सिंग)
  • nuget.org, NuGetGallery और NuGet.Client (NuGet पैकेज ID पार्सिंग)

श्रेय

यह उपकरण Doyensec LLC के बेन कॉलर द्वारा शोध समय के दौरान बनाया गया है।

alt text

टूल डाउनलोड करें
  • markdown (python) (Markdown पार्सिंग)
  • ansi-html (nodejs) (ANSI पार्सिंग)
  • साथ ही pypi, npm, ruby और nuget पैकेजों के एक मुट्ठी भर में अप्रकाशित बग