Flask Cookie Forge & Decoder
Flask itsdangerous सेशन cookies डिकोड करें या हस्ताक्षरित forge करें — CTF challenges और अधिकृत परीक्षण के लिए।
कुकी डीकोड करें
मौजूदा Flask cookie डिकोड करें और सत्यापित करेंकुकी फोर्ज करें
एक वैध हस्ताक्षरित Flask cookie उत्पन्न करेंयह कैसे काम करता है
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. Get the cookie: Burp Suite या ब्राउज़र DevTools में लक्ष्य अनुरोध को इंटरसेप्ट करें और सेशन cookie मान कॉपी करें।
- 2. Decode: key की आवश्यकता के बिना JSON payload प्रकट करने के लिए cookie पेस्ट करें — Flask cookies हस्ताक्षरित हैं, एन्क्रिप्टेड नहीं।
- 3. SECRET_KEY प्राप्त करें: इसे लक्ष्य ऐप कॉन्फ़िग, लीक हुए .env, git इतिहास में खोजें, या ज्ञात सिग्नेचर से क्रैक करें।
- 4. Modify & forge: JSON payload बदलें (जैसे user_id या is_admin सेट करें), SECRET_KEY दर्ज करें और एक नई वैध हस्ताक्षरित cookie forge करें।
- 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" है)।