कंटेंट पर जाएँ
HackIndex.io
टूल्स

Laravel कुकी फोर्ज और डीकोडर

Laravel AES एन्क्रिप्टेड कुकीज़ डीकोड करें या हस्ताक्षरित फोर्ज करें — CTF और अधिकृत परीक्षण के लिए।

Laravel सभी cookies को AES-256-CBC (या Laravel 10+ पर AES-256-GCM) से आपकी .env फ़ाइल के APP_KEY का उपयोग करके एन्क्रिप्ट करता है। एन्क्रिप्टेड मान base64-एन्कोडेड JSON है जिसमें IV, ciphertext और HMAC-SHA256 सिग्नेचर होता है। यह टूल cookie को डिक्रिप्ट करके सेशन payload — user ID, role, CSRF token — दिखाता है, HMAC सिग्नेचर सत्यापित करता है और नई वैध हस्ताक्षरित cookie forge करने देता है। सभी प्रोसेसिंग सर्वर-साइड PHP में होती है। कुछ भी स्टोर या लॉग नहीं किया जाता।

कुकी डीकोड करें

मौजूदा कुकी डिक्रिप्ट और सत्यापित करें

स्वीकार करता है: base64:xxx (मानक), hex स्ट्रिंग, या कच्चा base64। लक्ष्य .env में APP_KEY के रूप में मिलता है।

कुकी फोर्ज करें

वैध हस्ताक्षरित Laravel कुकी बनाएं

AES-256-CBC Laravel 9 और नीचे के लिए डिफ़ॉल्ट है। AES-256-GCM Laravel 10+ के लिए।

सुझाव: पहले कोई असली कुकी डिकोड करें ताकि सटीक सीरियलाइज़्ड फ़ॉर्मैट दिखे, फिर उसे बदलकर फोर्ज करें।

यह कैसे काम करता है

Laravel आपकी .env फ़ाइल की APP_KEY के साथ AES-256-CBC (या AES-128-CBC / GCM वेरिएंट) से कुकीज़ एन्क्रिप्ट करता है। एन्क्रिप्टेड मान base64 में एन्कोड किया गया JSON होता है, जिसमें IV, साइफ़रटेक्स्ट और HMAC-SHA256 सिग्नेचर होते हैं। यह टूल डिक्रिप्ट कर सिग्नेचर जाँचता है या शुरू से एक नई वैध कुकी बनाता है। दोनों काम सर्वर पर PHP में होते हैं और कोई इनपुट सहेजा नहीं जाता।

  1. 1. कुकी प्राप्त करें: Burp Suite या ब्राउज़र DevTools में अनुरोध इंटरसेप्ट करें और laravel_session कुकी का मान कॉपी करें।
  2. 2. APP_KEY प्राप्त करें: इसे लक्ष्य की .env, किसी लीक हुए कॉन्फ़िग में खोजें, या ज्ञात प्लेनटेक्स्ट से क्रैक करें।
  3. 3. डिकोड करें: दोनों को ऊपर पेस्ट कर डिकोड करें ताकि सेशन पेलोड (यूज़र आईडी, CSRF टोकन, flash डेटा) दिखे।
  4. 4. बदलें और फोर्ज करें: पेलोड बदलें (जैसे user_id बढ़ाएँ), APP_KEY पेस्ट करें और एक नई वैध साइन की गई कुकी बनाएँ।
  5. 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 के रूप में संग्रहीत करता है — इसे ठीक वैसे ही पेस्ट करें।