लीक हुए सीक्रेट स्कैनर

लीक हुए सीक्रेट स्कैनर यह जांचता है कि क्या वे फ़ाइलें और क्रेडेंशियल, जो कभी सार्वजनिक नहीं होने चाहिए, कोई भी आपकी वेबसाइट से प्राप्त कर सकता है: डेटाबेस पासवर्ड वाला .env फ़ाइल, आपका पूरा सोर्स इतिहास सौंप देने वाला .git फ़ोल्डर, वेब रूट में छूटा बैकअप आर्काइव, या JavaScript बंडल के अंदर असली API कुंजी। एक URL दर्ज करें और यह स्कैनर ज्ञात उजागर पथों की जांच करता है, जो भी जवाब देता है उसके कंटेंट की पुष्टि करता है, और पेज व उसकी स्क्रिप्ट में ज्ञात सीक्रेट पैटर्न खोजता है — केवल मास्क किए गए मान दिखाता है, स्वयं सीक्रेट कभी नहीं। साथी मार्गदर्शिका, उजागर .env फ़ाइलें और लीक हुई कुंजियाँ, बताती है कि ये उजागर कैसे होते हैं और फ़ाइल हटाना अकेले कभी पर्याप्त क्यों नहीं होता। इसे प्रतिक्रिया सख़्ती के लिए सुरक्षा हेडर जांच के साथ और दूसरों से लोड की जाने वाली स्क्रिप्ट के लिए तृतीय-पक्ष स्क्रिप्ट ऑडिट के साथ जोड़ें।

अंतिम अपडेट:

क्या आप इसे लगातार देखना चाहते हैं? myeventwatch से मुफ़्त निगरानी करें — समाप्ति और डाउनटाइम अलर्ट, कार्ड की ज़रूरत नहीं।

क्या उजागर माना जाता है — और क्या नहीं

स्कैनर ज्ञात पथों की एक प्रकाशित सूची — /.env और उसके सामान्य प्रकार, /.git/HEAD और /.git/config, कॉन्फ़िगरेशन फ़ाइलें, बैकअप आर्काइव और कुंजी फ़ाइलें — को साधारण सार्वजनिक GET अनुरोधों से जांचता है, ठीक वैसे ही अनुरोध जैसे कोई हमलावर, खोज इंजन या जिज्ञासु आगंतुक भेज सकता है। कोई पथ केवल तभी उजागर माना जाता है जब प्रतिक्रिया का कंटेंट उससे मेल खाता है जैसा वह फ़ाइल वास्तव में होनी चाहिए: env फ़ाइल कुंजी–मान पंक्तियों के रूप में पार्स होनी चाहिए, Git HEAD Git संदर्भ जैसा दिखना चाहिए। कई सर्वर हर पथ पर 200 जवाब देते हैं — एकल-पेज ऐप फ़ॉलबैक, कस्टम त्रुटि पेज, सब कुछ पकड़ने वाले रीराइट — और आपके मुखपृष्ठ के HTML वाला 200 लीक नहीं है। ऐसे पथ परिणाम में अलग से जवाब दिया लेकिन अपुष्ट के रूप में सूचीबद्ध होते हैं, ताकि आप स्वयं निर्णय ले सकें; यह टूल अपुष्ट 200 को कभी लीक नहीं कहता, और आप जिस भी स्कैनर का उपयोग करें उसे भी ऐसा नहीं करना चाहिए।

फ़ाइल जांच के साथ-साथ, स्कैनर स्वयं पेज और उसके लगभग पंद्रह JavaScript बंडल तक प्राप्त करता है और उनमें ज्ञात सीक्रेट आकृतियाँ खोजता है: क्लाउड एक्सेस कुंजी आईडी, निजी-कुंजी हेडर, सामान्य API कुंजी और टोकन असाइनमेंट, डेटाबेस कनेक्शन स्ट्रिंग और इसी तरह के उच्च-संकेत पैटर्न। क्लाइंट-साइड कोड परिभाषा के अनुसार सार्वजनिक होता है — ब्राउज़र को भेजी गई हर चीज़ हर आगंतुक पढ़ सकता है — इसलिए बंडल में मिली असली क्रेडेंशियल उजागर है, भले ही कोई फ़ाइल ग़लत तरीके से कॉन्फ़िगर न हुई हो। निष्कर्ष प्रकार, स्रोत फ़ाइल और प्रकट होने की संख्या के अनुसार बताए जाते हैं, मान को अधिकतम उसके पहले चार अक्षरों तक मास्क करके: इतना कि आप पहचान सकें कि यह कौन-सी कुंजी है, इतना कभी नहीं कि रिपोर्ट पढ़ने वाला उसका उपयोग कर सके। पूरा सीक्रेट इस रिपोर्ट में कभी प्राप्त, संग्रहीत या दिखाया नहीं जाता।

सीमाएँ, स्पष्ट रूप से कही गईं

यह ज्ञात पथों की एक सार्वजनिक, केवल-पठन जांच है, और इसकी सीमाएँ परिणाम का हिस्सा हैं। यह केवल प्रकाशित सूची के पथों का अनुरोध करता है — असामान्य नाम वाली फ़ाइल में रखा सीक्रेट नहीं मिलेगा। यह लैंडिंग पेज और लगभग पंद्रह स्क्रिप्ट बंडलों को स्कैन करता है, बड़ी साइट के हर संसाधन को नहीं, और यह लॉग इन नहीं करता, प्रमाणीकरण के पीछे क्रॉल नहीं करता, फ़ाइल नामों पर बल-प्रयोग नहीं करता और ऐसी किसी चीज़ का परीक्षण नहीं करता जो अप्रमाणित GET से पहले से पहुँच योग्य न हो। स्कैन प्रति आगंतुक प्रति घंटे 5 तक सीमित हैं और परिणाम 10 मिनट के लिए कैश किए जाते हैं, इसलिए उस अवधि में दोबारा स्कैन करने पर कैश किया गया निर्णय दिख सकता है। स्कैन के पास समय बजट भी होता है: जब कोई धीमा लक्ष्य उसे ख़त्म कर देता है, तो परिणाम आंशिक के रूप में चिह्नित होता है और ऐसा कहता भी है — आंशिक स्वच्छ परिणाम को "स्वच्छ" नहीं, "पूरी तरह जांचा नहीं गया" समझें।

यदि स्कैन में कुछ मिलता है, तो हटाने की गति से अधिक काम का क्रम मायने रखता है। पहले क्रेडेंशियल बदलें — उजागर कुंजी को रद्द करें और नई जारी करें — क्योंकि प्रतियाँ पहले से कैश, आर्काइव और दूसरों के हाथों में हो सकती हैं; फ़ाइल हटाने से नए डाउनलोड रुकते हैं लेकिन जो कुंजी पहले ही बाहर जा चुकी है उसके लिए कुछ नहीं होता। फिर सर्वर पर फ़ाइल हटाएँ या पथ अवरुद्ध करें, उन CDN और प्रॉक्सी कैश को साफ़ करें जिनमें प्रति हो सकती है, और उसी पथ के पहले के अनुरोधों के लिए अपने एक्सेस लॉग जांचें। साथी लेख, उजागर .env फ़ाइलें और लीक हुई कुंजियाँ, हमलावरों द्वारा उपयोग की जाने वाली पहले घंटे की कार्यपद्धति और पूरी पुनर्प्राप्ति क्रम को क्रम से समझाता है।

पड़ोसी जांचें तस्वीर पूरी करती हैं: तृतीय-पक्ष स्क्रिप्ट ऑडिट उन बाहरी स्क्रिप्ट को कवर करता है जो आपके पेज लोड करते हैं — यह आपकी अपनी लीक हुई फ़ाइलों से अलग आपूर्ति-श्रृंखला जोखिम है — और सुरक्षा हेडर जांच आपके जवाबों में मौजूद ब्राउज़र सुरक्षा का मूल्यांकन करती है। विधि पर एक टिप्पणी: स्वच्छ परिणाम का अर्थ है कि जांचे गए पथों में से किसी ने भी मेल खाते कंटेंट से जवाब नहीं दिया और स्कैन की गई फ़ाइलों में कोई ज्ञात सीक्रेट पैटर्न नहीं मिला, स्कैन के समय, जांचकर्ता की नेटवर्क स्थिति से। यह उन पथों और फ़ाइलों के बारे में साक्ष्य है, पूरे सर्वर की गारंटी नहीं — फ़ाइलों को शुरू से ही वेब रूट से बाहर रखें, और हर उस परिनियोजन परिवर्तन के बाद दोबारा स्कैन करें जो आपके सर्वर द्वारा प्रकाशित चीज़ों को छूता है।

जांच सूची, प्रकाशित

/.env और प्रकारडेटाबेस पासवर्ड, मेल क्रेडेंशियल और API कुंजियाँ रखने वाली पर्यावरण फ़ाइलें (.env, .env.local, .env.production और इसी तरह की)। केवल तभी पुष्ट होती हैं जब मुख्य भाग कुंजी–मान पंक्तियों के रूप में पार्स हो।
/.git/HEAD और /.git/configपरोसा गया .git फ़ोल्डर रिपॉज़िटरी को उजागर करता है: HEAD संरचना साबित करता है, config अक्सर रिमोट का नाम बताता है। दोनों के साथ, पूरा सोर्स इतिहास आमतौर पर पुनर्निर्मित किया जा सकता है।
कॉन्फ़िगरेशन फ़ाइलेंज्ञात कॉन्फ़िगरेशन पथ (उदाहरण के लिए wp-config बैकअप, config.php प्रतियाँ और फ़्रेमवर्क कॉन्फ़िगरेशन फ़ाइलें) जो सादे पाठ में क्रेडेंशियल रखते हैं।
बैकअप और आर्काइव फ़ाइलेंवेब रूट में छोड़े गए डेटाबेस डंप, .zip / .tar.gz साइट आर्काइव और संपादक बैकअप प्रतियाँ — अक्सर क्रेडेंशियल सहित साइट की पूरी प्रति।
कुंजी और प्रमाणपत्र फ़ाइलेंनिजी-कुंजी आकृति वाली फ़ाइलें (.pem, .key, id_rsa शैली के नाम) जो कभी वेब से सुलभ नहीं होनी चाहिए; परोसी गई निजी कुंजी अपने आप में गंभीर निष्कर्ष है।
JavaScript बंडलपेज और लगभग 15 तक स्क्रिप्ट बंडल, क्लाउड कुंजी आईडी, निजी-कुंजी हेडर, टोकन असाइनमेंट और कनेक्शन स्ट्रिंग के लिए खोजे गए। मान अधिकतम चार शुरुआती अक्षरों तक मास्क किए जाते हैं।
पुष्टि नियमजांच केवल तभी उजागर मानी जाती है जब प्रतिक्रिया का कंटेंट अपेक्षित फ़ाइल आकृति से मेल खाता है। नंगा 200 जवाब दिया-अपुष्ट के रूप में सूचीबद्ध होता है और कभी लीक के रूप में रिपोर्ट नहीं किया जाता।
बजट और कैशिंगकेवल सार्वजनिक GET जांच, केवल-पठन, प्रति आगंतुक प्रति घंटे 5 स्कैन, परिणाम 10 मिनट कैश। जो स्कैन अपना समय बजट ख़त्म कर देता है उसे आंशिक चिह्नित किया जाता है।

अक्सर पूछे जाने वाले प्रश्न

स्कैन कहता है कि किसी पथ ने "जवाब दिया लेकिन अपुष्ट" है। क्या यह लीक है?

इस साक्ष्य पर, नहीं। इसका अर्थ है कि पथ ने HTTP 200 से जवाब दिया लेकिन कंटेंट जांची जा रही फ़ाइल की आकृति से मेल नहीं खाया — सामान्य कारण सब कुछ पकड़ने वाला मार्ग या फ़ॉलबैक पेज है जो हर URL पर आपके मुखपृष्ठ या ऐप खोल से जवाब देता है। निजी विंडो में वह पथ स्वयं खोलें और देखें कि वास्तव में क्या वापस आता है: यदि आपको असली फ़ाइल कंटेंट दिखे, तो उसे उजागर मानें; यदि आपको अपनी सामान्य साइट दिखे, तो वह फ़ॉलबैक है।

स्कैनर को मेरी एक कुंजी मिली। मैं पहले क्या करूँ?

उसे बदलें — उजागर क्रेडेंशियल को रद्द करें और प्रतिस्थापन जारी करें — किसी भी अन्य चीज़ से पहले। सार्वजनिक फ़ाइल की प्रतियाँ तेज़ी से कैश, आर्काइव और स्कैनर डेटाबेस में निकल जाती हैं, इसलिए फ़ाइल हटाने से कुंजी का "लीक रद्द" नहीं होता। फिर फ़ाइल हटाएँ या अवरुद्ध करें, CDN और प्रॉक्सी कैश साफ़ करें, उस पथ के एक्सेस लॉग की समीक्षा करें, और जांचें कि वही क्रेडेंशियल और कहाँ उपयोग हुई थी।

क्या स्कैनर अपने पाए पूरे सीक्रेट संग्रहीत या दिखाता है?

नहीं। जांचकर्ता सीक्रेट का प्रकार, वह फ़ाइल जिसमें वह मिला, और प्रकट होने की संख्या बताता है, मान को अधिकतम पहले चार अक्षरों तक मास्क करके — इतना कि पहचान सकें कि यह कौन-सी क्रेडेंशियल है, इतना कभी नहीं कि उसका उपयोग हो सके। रिपोर्ट में जानबूझकर चुराने लायक कुछ नहीं है: लीक रिपोर्ट दूसरी लीक नहीं बननी चाहिए।

क्या यह मेरी स्टेजिंग साइट या लॉगिन के पीछे के पेज को स्कैन कर सकता है?

नहीं। स्कैनर केवल अप्रमाणित सार्वजनिक GET अनुरोध भेजता है, इसलिए लॉगिन, VPN या IP अनुमति-सूची के पीछे की हर चीज़ पहुँच से बाहर है — जानबूझकर, क्योंकि यह जिस प्रश्न का उत्तर देता है वह यह है कि इंटरनेट पर कोई अजनबी क्या प्राप्त कर सकता है। इस साइट के अपने बुनियादी ढाँचे के पतों सहित अवरुद्ध लक्ष्यों को सीधे अस्वीकार कर दिया जाता है।

मेरा परिणाम कैश किया गया या आंशिक क्यों है?

परिणाम 10 मिनट के लिए कैश किए जाते हैं ताकि बार-बार की जांच सस्ती रहे और स्कैनर लक्ष्य सर्वर पर विनम्र अतिथि बना रहे; परिणाम बताता है कि वह कब कैश किया गया है। आंशिक परिणाम का अर्थ है कि स्कैन हर जांच पूरी करने से पहले अपने समय बजट तक पहुँच गया — आमतौर पर धीमा लक्ष्य या कई बड़े बंडल — बैनर ऐसा कहता है, और आंशिक स्वच्छ परिणाम को पूरी तरह स्वच्छ मानने के बजाय दोबारा चलाना चाहिए।