Laravel कुकी फोर्ज और डीकोडर
Laravel AES एन्क्रिप्टेड कुकीज़ डीकोड करें या हस्ताक्षरित फोर्ज करें — CTF और अधिकृत परीक्षण के लिए।
कुकी डीकोड करें
मौजूदा कुकी डिक्रिप्ट और सत्यापित करेंकुकी फोर्ज करें
वैध हस्ताक्षरित Laravel कुकी बनाएंयह कैसे काम करता है
Laravel आपकी .env फ़ाइल की APP_KEY के साथ AES-256-CBC (या AES-128-CBC / GCM वेरिएंट) से कुकीज़ एन्क्रिप्ट करता है। एन्क्रिप्टेड मान base64 में एन्कोड किया गया JSON होता है, जिसमें IV, साइफ़रटेक्स्ट और HMAC-SHA256 सिग्नेचर होते हैं। यह टूल डिक्रिप्ट कर सिग्नेचर जाँचता है या शुरू से एक नई वैध कुकी बनाता है। दोनों काम सर्वर पर PHP में होते हैं और कोई इनपुट सहेजा नहीं जाता।
- 1. कुकी प्राप्त करें: Burp Suite या ब्राउज़र DevTools में अनुरोध इंटरसेप्ट करें और laravel_session कुकी का मान कॉपी करें।
- 2. APP_KEY प्राप्त करें: इसे लक्ष्य की .env, किसी लीक हुए कॉन्फ़िग में खोजें, या ज्ञात प्लेनटेक्स्ट से क्रैक करें।
- 3. डिकोड करें: दोनों को ऊपर पेस्ट कर डिकोड करें ताकि सेशन पेलोड (यूज़र आईडी, CSRF टोकन, flash डेटा) दिखे।
- 4. बदलें और फोर्ज करें: पेलोड बदलें (जैसे user_id बढ़ाएँ), APP_KEY पेस्ट करें और एक नई वैध साइन की गई कुकी बनाएँ।
- 5. इंजेक्ट करें: अपने अनुरोध में मूल कुकी बदलें और दोबारा भेजें।
Laravel एन्क्रिप्टेड कुकीज़ क्या हैं?
Laravel स्वचालित रूप से Cookie::make() या cookie हेल्पर के माध्यम से सेट की गई सभी कुकीज़ को एन्क्रिप्ट और साइन करता है (जब तक कि EncryptCookies मिडलवेयर में $except के ज़रिए बाहर न रखा जाए)। सेशन कुकी (डिफ़ॉल्ट laravel_session) cookie सेशन ड्राइवर का उपयोग केवल तब करती है जब SESSION_DRIVER=cookie हो; अन्यथा इसमें केवल एक एन्क्रिप्टेड सेशन ID पॉइंटर होता है। CTF चैलेंज में, ऐप अक्सर पूरे सेशन payload को सीधे कुकी में संग्रहीत करने के लिए cookie ड्राइवर का उपयोग करते हैं।
iv
इनिशियलाइज़ेशन वेक्टर। हर एन्क्रिप्शन ऑपरेशन के लिए यादृच्छिक रूप से जनरेट होता है। JSON payload में Base64-एन्कोडेड।
value
AES-एन्क्रिप्टेड सिफरटेक्स्ट। Base64-एन्कोडेड। openssl_encrypt() flags=0 (डिफ़ॉल्ट) के साथ सीधे base64 लौटाता है।
mac
base64(iv) और base64(value) को जोड़कर उसका HMAC-SHA256, कच्चे APP_KEY बाइट्स से कीड। GCM साइफर में अनुपस्थित।
tag
GCM प्रमाणीकरण टैग। AES-256-GCM और AES-128-GCM साइफर (Laravel 10+) के लिए HMAC के बजाय उपयोग होता है।
FAQ
क्या यह मेरी कुकी या APP_KEY कहीं भेजता है?
नहीं। डिक्रिप्शन और एन्क्रिप्शन दोनों सर्वर-साइड PHP में openssl_decrypt / openssl_encrypt का उपयोग करके होते हैं। कोई डेटा संग्रहीत, लॉग या तृतीय पक्षों को प्रेषित नहीं किया जाता।
कुकी सेशन ड्राइवर क्या है?
जब .env में SESSION_DRIVER=cookie सेट होता है, तो Laravel पूरे सेशन ऐरे को सीरियलाइज़ करता है, एन्क्रिप्ट करता है और सीधे ब्राउज़र कुकी में संग्रहीत करता है। यह CTF चैलेंज सेटअप में आम है। अधिकांश प्रोडक्शन ऐप file, database या Redis ड्राइवर उपयोग करते हैं जहाँ कुकी में केवल एन्क्रिप्टेड सेशन ID रहता है।
HMAC सिग्नेचर कैसे काम करता है?
Laravel hash_hmac("sha256", base64(iv) . base64(ciphertext), raw_key) की गणना करता है। MAC गणना में उपयोग की गई IV और सिफरटेक्स्ट दोनों स्ट्रिंग JSON में संग्रहीत base64-एन्कोडेड संस्करण हैं, कच्चे बाइट्स नहीं।
फोर्जिंग के समय कौन सा सिफर चुनें?
साइफर को लक्ष्य ऐप द्वारा उपयोग किए गए साइफर से मिलाएँ। Laravel 5-9 का डिफ़ॉल्ट AES-256-CBC है। Laravel 10+ AES-256-GCM का समर्थन करता है। इसे डिकोड की गई कुकी संरचना में tag फ़ील्ड की उपस्थिति से पहचान सकते हैं (GCM में गैर-खाली tag फ़ील्ड होता है; CBC में इसके बजाय mac)।
सही APP_KEY के साथ भी डिक्रिप्शन विफल होता है — क्यों?
सुनिश्चित करें कि आप कच्चा कुकी मान पेस्ट कर रहे हैं, URL-एन्कोडेड संस्करण नहीं। कुछ फ्रेमवर्क कुकीज़ को दोहरा एनकोड करते हैं। कुंजी फ़ॉर्मेट भी सत्यापित करें: Laravel इसे .env में base64:xxx के रूप में संग्रहीत करता है — इसे ठीक वैसे ही पेस्ट करें।