कंटेंट पर जाएँ
HackIndex logo

HackIndex

टूल्स

Flask Cookie Forge & Decoder

Flask itsdangerous सेशन cookies डिकोड करें या हस्ताक्षरित forge करें — CTF challenges और अधिकृत परीक्षण के लिए।

Flask itsdangerous लाइब्रेरी का उपयोग करके HMAC-SHA1 या HMAC-SHA512 से सेशन cookies पर हस्ताक्षर करता है। cookie का फ़ॉर्मेट PAYLOAD.TIMESTAMP.SIGNATURE है — सभी सेगमेंट base64url-एन्कोडेड हैं। संपीड़ित payloads एक डॉट prefix से शुरू होते हैं। यह टूल JSON payload दिखाने के लिए किसी भी Flask सेशन cookie को डिकोड करता है (कोई key आवश्यक नहीं), SECRET_KEY प्रदान करने पर HMAC सिग्नेचर सत्यापित करता है और नई वैध हस्ताक्षरित cookie forge करने देता है। सभी प्रोसेसिंग सर्वर-साइड PHP में होती है। कुछ भी स्टोर या लॉग नहीं किया जाता।

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

मौजूदा Flask cookie डिकोड करें और सत्यापित करें

लक्ष्य ऐप कॉन्फ़िग में SECRET_KEY के रूप में मिलता है। HMAC सिग्नेचर सत्यापित करने के लिए उपयोग किया जाता है।

Flask-Session डिफ़ॉल्ट रूप से "cookie-session" का उपयोग करता है। केवल तभी बदलें जब लक्ष्य ऐप कस्टम salt उपयोग करे।

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

एक वैध हस्ताक्षरित Flask cookie उत्पन्न करें

Flask डिफ़ॉल्ट रूप से HMAC-SHA1 उपयोग करता है। कुछ ऐप्स HMAC-SHA512 कॉन्फ़िगर करते हैं।

Flask डिफ़ॉल्ट "cookie-session" के लिए खाली छोड़ें।

सुझाव: पहले एक वास्तविक cookie डिकोड करें ताकि सटीक JSON संरचना देख सकें, फिर संशोधित करें और forge करें।

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

Flask HMAC से सेशन cookies पर हस्ताक्षर करने के लिए itsdangerous लाइब्रेरी का उपयोग करता है। cookie फ़ॉर्मेट तीन base64url सेगमेंट हैं जो बिंदुओं से अलग हैं: PAYLOAD.TIMESTAMP.SIGNATURE। key derivation HMAC-{algo}(key=secret, msg=salt) है — derived key का उपयोग HMAC-{algo}(key=derived, msg=PAYLOAD.TIMESTAMP) की गणना के लिए किया जाता है। यह टूल किसी भी Flask सेशन cookie को डिकोड और वैकल्पिक रूप से सत्यापित करता है, फिर एक नई forge करने देता है — सभी सर्वर-साइड PHP में बिना किसी इनपुट को स्टोर किए।

  1. 1. Get the cookie: Burp Suite या ब्राउज़र DevTools में लक्ष्य अनुरोध को इंटरसेप्ट करें और सेशन cookie मान कॉपी करें।
  2. 2. Decode: key की आवश्यकता के बिना JSON payload प्रकट करने के लिए cookie पेस्ट करें — Flask cookies हस्ताक्षरित हैं, एन्क्रिप्टेड नहीं।
  3. 3. SECRET_KEY प्राप्त करें: इसे लक्ष्य ऐप कॉन्फ़िग, लीक हुए .env, git इतिहास में खोजें, या ज्ञात सिग्नेचर से क्रैक करें।
  4. 4. Modify & forge: JSON payload बदलें (जैसे user_id या is_admin सेट करें), SECRET_KEY दर्ज करें और एक नई वैध हस्ताक्षरित cookie forge करें।
  5. 5. Inject: अपने अनुरोध में सेशन cookie बदलें और पुनः भेजें।

Flask सेशन cookies क्या हैं?

Flask संपूर्ण सेशन डिक्शनरी सीधे ब्राउज़र cookie में स्टोर करता है — डिफ़ॉल्ट रूप से कोई सर्वर-साइड सेशन स्टोर नहीं होता। सेशन ऑब्जेक्ट JSON-सीरियलाइज़, वैकल्पिक रूप से zlib-संपीड़ित, base64url-एन्कोडेड और ऐप की SECRET_KEY से HMAC के साथ हस्ताक्षरित होता है। सिग्नेचर छेड़छाड़ रोकता है, लेकिन payload एन्क्रिप्टेड नहीं होने के कारण कोई भी key के बिना सेशन डेटा पढ़ सकता है। इससे Flask सेशन cookies CTF वेब challenges में एक सामान्य लक्ष्य बन जाती हैं।

payload

Base64url-एन्कोडेड JSON ऑब्जेक्ट (डॉट prefix होने पर zlib-संपीड़ित)। इसमें सेशन डेटा होता है — user_id, roles, CSRF token, आदि।

timestamp

base64url में पैक किया गया 4-byte big-endian Unix epoch। समयबद्ध cookies (URLSafeTimedSerializer) में मौजूद। cookie expiry जाँच के लिए उपयोग किया जाता है।

signature

base64url(HMAC-{algo}(derived_key, PAYLOAD.TIMESTAMP))। Derived key = HMAC-{algo}(secret_key, salt)। डिफ़ॉल्ट salt "cookie-session" है।

compression

itsdangerous payload को zlib deflate से संपीड़ित करता है जब संपीड़न स्थान बचाता है। संपीड़ित payloads को base64url एन्कोडिंग से पहले डॉट से prefix किया जाता है।

FAQ

क्या यह मेरी cookie या SECRET_KEY कहीं भेजता है?

नहीं। सभी डिकोडिंग और हस्ताक्षर सर्वर-साइड PHP में होते हैं। कोई डेटा स्टोर, लॉग या तृतीय पक्षों को प्रेषित नहीं किया जाता।

क्या मैं SECRET_KEY के बिना payload पढ़ सकता हूँ?

हाँ — Flask cookies हस्ताक्षरित हैं लेकिन एन्क्रिप्टेड नहीं। key के बिना cookie पेस्ट करें और तुरंत JSON सेशन डेटा देखें। आपको वैध सिग्नेचर सत्यापित या forge करने के लिए केवल SECRET_KEY की आवश्यकता है।

itsdangerous key derivation कैसे काम करती है?

itsdangerous एक signing key को HMAC-{algo}(key=secret_key, msg=salt) के रूप में derive करता है। सिग्नेचर फिर HMAC-{algo}(key=derived_key, msg=PAYLOAD.TIMESTAMP) होता है। यह सीधे HMAC से अलग है — salt एक ही secret key के विभिन्न उपयोगों के बीच domain separation जोड़ता है।

forge करते समय कौन सा एल्गोरिदम चुनें?

HMAC-SHA1 Flask/itsdangerous का डिफ़ॉल्ट है। HMAC-SHA512 केवल तभी उपयोग करें जब लक्ष्य ऐप इसे स्पष्ट रूप से कॉन्फ़िगर करे। आप डिकोड के दौरान दोनों आज़माकर एल्गोरिदम का पता लगा सकते हैं — यह टूल पहले sha1 आज़माता है, फिर sha512।

डिकोडिंग विफल होती है या सिग्नेचर अमान्य है — क्यों?

सुनिश्चित करें कि आप URL-एन्कोडिंग (%3D आदि) के बिना कच्चा cookie मान पेस्ट करें। टूल URL-एन्कोडेड इनपुट स्वचालित रूप से संभालता है। सिग्नेचर सत्यापन के लिए जाँचें कि SECRET_KEY सही है और salt लक्ष्य ऐप से मेल खाता है (डिफ़ॉल्ट "cookie-session" है)।