Electronic Code Book (ECB)
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)
(ECB) इलेक्ट्रॉनिक कोड बुक - सममित एन्क्रिप्शन योजना जो स्पष्ट पाठ के प्रत्येक ब्लॉक को साइफर टेक्स्ट के ब्लॉक से बदलती है। यह सबसे सरल एन्क्रिप्शन योजना है। मुख्य विचार यह है कि स्पष्ट पाठ को N बिट्स के ब्लॉकों में विभाजित किया जाए (यह इनपुट डेटा के ब्लॉक के आकार, एन्क्रिप्शन एल्गोरिदम पर निर्भर करता है) और फिर केवल कुंजी का उपयोग करके स्पष्ट पाठ के प्रत्येक ब्लॉक को एन्क्रिप्ट (डिक्रिप्ट) किया जाए।
ECB का उपयोग करने के कई सुरक्षा निहितार्थ हैं:
एन्क्रिप्टेड संदेश से ब्लॉक हटाए जा सकते हैं
एन्क्रिप्टेड संदेश से ब्लॉक इधर-उधर किए जा सकते हैं
कल्पना करें कि आप एक एप्लिकेशन में कई बार लॉगिन करते हैं और आपको हमेशा वही कुकी मिलती है। इसका कारण यह है कि एप्लिकेशन की कुकी <username>|<password>
है।
फिर, आप दो नए उपयोगकर्ताओं को उत्पन्न करते हैं, दोनों के पास एक ही लंबा पासवर्ड और लगभग वही उपयोगकर्ता नाम होता है।
आप पाते हैं कि 8B के ब्लॉक जहां दोनों उपयोगकर्ताओं की जानकारी समान है, वे बराबर हैं। फिर, आप कल्पना करते हैं कि यह ECB के उपयोग के कारण हो सकता है।
जैसे कि निम्नलिखित उदाहरण में। देखें कि ये 2 डिकोडेड कुकीज़ कई बार ब्लॉक \x23U\xE45K\xCB\x21\xC8
रखती हैं।
यह इसलिए है क्योंकि उन कुकीज़ के उपयोगकर्ता नाम और पासवर्ड में कई बार "a" अक्षर शामिल थे (उदाहरण के लिए)। विभिन्न ब्लॉक वे ब्लॉक हैं जिनमें कम से कम 1 अलग अक्षर शामिल है (शायद विभाजक "|" या उपयोगकर्ता नाम में कुछ आवश्यक अंतर)।
अब, हमलावर को केवल यह पता लगाने की आवश्यकता है कि प्रारूप <username><delimiter><password>
है या <password><delimiter><username>
। ऐसा करने के लिए, वह बस कई उपयोगकर्ता नाम उत्पन्न कर सकता है जिनमें समान और लंबे उपयोगकर्ता नाम और पासवर्ड हैं जब तक कि वह प्रारूप और विभाजक की लंबाई नहीं खोज लेता:
2
2
4
8
3
3
6
8
3
4
7
8
4
4
8
16
7
7
14
16
कुकी के प्रारूप को जानकर (<username>|<password>
), उपयोगकर्ता नाम admin
का अनुकरण करने के लिए एक नया उपयोगकर्ता बनाएं जिसका नाम aaaaaaaaadmin
हो और कुकी प्राप्त करें और इसे डिकोड करें:
हम पहले देख सकते हैं कि पैटर्न \x23U\xE45K\xCB\x21\xC8
पहले उस उपयोगकर्ता नाम के साथ बनाया गया था जिसमें केवल a
था।
फिर, आप 8B का पहला ब्लॉक हटा सकते हैं और आपको उपयोगकर्ता नाम admin
के लिए एक मान्य कुकी मिलेगी:
कई डेटाबेस में WHERE username='admin';
या WHERE username='admin ';
के लिए खोज करना समान है। (अतिरिक्त स्पेस पर ध्यान दें)
तो, उपयोगकर्ता admin
की नकल करने का एक और तरीका होगा:
एक उपयोगकर्ता नाम उत्पन्न करें जो: len(<username>) + len(<delimiter) % len(block)
। 8B
के ब्लॉक आकार के साथ, आप username
नाम का उपयोगकर्ता नाम उत्पन्न कर सकते हैं, जिसमें डिलिमिटर |
है, तो भाग <username><delimiter>
8Bs के 2 ब्लॉकों का निर्माण करेगा।
फिर, एक पासवर्ड उत्पन्न करें जो उस उपयोगकर्ता नाम को भरने के लिए एक सटीक संख्या में ब्लॉकों को भरता है जिसे हम नकल करना चाहते हैं और स्पेस, जैसे: admin
इस उपयोगकर्ता का कुकी 3 ब्लॉकों से बना होगा: पहले 2 उपयोगकर्ता नाम + डिलिमिटर के ब्लॉक हैं और तीसरा पासवर्ड (जो उपयोगकर्ता नाम की नकल कर रहा है): username |admin
फिर, बस पहले ब्लॉक को अंतिम समय के साथ बदलें और आप उपयोगकर्ता admin
की नकल कर रहे होंगे: admin |username
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)