Regular expression Denial of Service - ReDoS
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
एक Regular Expression Denial of Service (ReDoS) तब होता है जब कोई नियमित अभिव्यक्तियों (पाठ में पैटर्न खोजने और मेल करने का एक तरीका) में कमजोरियों का लाभ उठाता है। कभी-कभी, जब नियमित अभिव्यक्तियों का उपयोग किया जाता है, तो वे बहुत धीमी हो सकती हैं, विशेष रूप से यदि वे जिस पाठ के साथ काम कर रही हैं वह बड़ा हो जाता है। यह धीमापन इतना बुरा हो सकता है कि यह पाठ के आकार में छोटे-छोटे बढ़ोतरी के साथ तेजी से बढ़ता है। हमलावर इस समस्या का उपयोग करके एक ऐसा प्रोग्राम बना सकते हैं जो नियमित अभिव्यक्तियों का उपयोग करता है और लंबे समय तक सही तरीके से काम करना बंद कर देता है।
Check the details in https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
एक बुरी नियमित अभिव्यक्ति पैटर्न वह है जो निर्मित इनपुट पर अटक सकता है जिससे DoS होता है। बुरी regex पैटर्न आमतौर पर समूह के साथ पुनरावृत्ति और पुनरावृत्ति या वैकल्पिकता के साथ ओवरलैपिंग के साथ होती हैं। बुरी पैटर्न के कुछ उदाहरण हैं:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x} for x > 10
ये सभी इनपुट aaaaaaaaaaaaaaaaaaaaaaaa!
के प्रति संवेदनशील हैं।
एक CTF (या बग बाउंटी) में, शायद आप Regex को नियंत्रित करते हैं जिससे संवेदनशील जानकारी (ध्वज) मेल खाती है। फिर, यदि एक Regex मेल खाता है और यदि यह मेल नहीं खाता है तो नहीं तो पृष्ठ को फ्रीज (टाइमआउट या लंबे प्रोसेसिंग समय) करना उपयोगी हो सकता है। इस तरह आप एक-एक करके स्ट्रिंग निकाल सकते हैं:
In this post you can find this ReDoS rule: ^(?=<flag>)((.*)*)*salt$
Example: ^(?=HTB{sOmE_fl§N§)((.*)*)*salt$
In this writeup you can find this one:<flag>(((((((.*)*)*)*)*)*)*)!
In this writeup he used: ^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$
निम्नलिखित ReDoS उदाहरण हैं जहाँ आप इनपुट और regex दोनों को नियंत्रित करते हैं:
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)