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

चरण 3 — शमन

चरण 3 CSD शमन का एक पहले/बाद का प्रमाण बनाता है। आप बेसलाइन स्थापित करने के लिए बिना किसी शमन के हमला फिर से चलाते हैं, शमन लागू करते हैं, फिर यह सिद्ध करने के लिए वही हमला फिर से चलाते हैं कि CSD नेटवर्क कॉल को ब्लॉक करता है। आगे बढ़ने से पहले चरण 2 पूरा होना चाहिए — सभी DET जाँचें PASS होनी चाहिए।

चरण 1: कोई सक्रिय शमन नहीं (बेसलाइन) की पुष्टि करें

Section titled “चरण 1: कोई सक्रिय शमन नहीं (बेसलाइन) की पुष्टि करें”

“पहले” का स्नैपशॉट कैप्चर करने से पहले, सत्यापित करें कि परिवेश साफ़ है — कोई भी शमन सक्रिय नहीं होना चाहिए। यह सुनिश्चित करता है कि बेसलाइन हमला किसी भी CSD ब्लॉकिंग के बिना चलता है।

शमन किए गए डोमेन की गिनती जाँचें

Section titled “शमन किए गए डोमेन की गिनती जाँचें”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq '{count: (.items | length)}'

यदि गिनती 0 नहीं है, तो पिछले रन से शमन शेष हैं। आगे बढ़ने से पहले प्रत्येक को हटाएँ:

Terminal window
# एक शमन किए गए डोमेन को हटाएँ (प्रत्येक डोमेन नाम के लिए दोहराएँ)
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains/<domain-name>" \
| jq .

<domain-name> को उस metadata.name से बदलें जो डोमेन को शमन करते समय उपयोग किया गया था (जैसे, cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io, httpbin.org, jsonplaceholder.typicode.com)। यदि httpbin.org की सफाई के बाद एक आइटम शेष रहता है, तो www.httpbin.org को भी हटाने का प्रयास करें — कुछ पिछले रन में उसे metadata name के रूप में उपयोग किया गया होगा।

चरण 2 के डिटेक्शन की उपस्थिति की पुष्टि करें

Section titled “चरण 2 के डिटेक्शन की उपस्थिति की पुष्टि करें”
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{total_domains: .domain_summary.totalDomains, domains: [.domains_list[]? | {domain: .domain, category: .category}]}'
जाँचअपेक्षितस्थिति
शमन किए गए डोमेन की गिनती0 (साफ़ बेसलाइन)0 होने पर PASS, > 0 होने पर सफाई आवश्यक
डिटेक्ट किए गए डोमेन की गिनती> 0 (चरण 2 के डिटेक्शन उपस्थित)> 0 होने पर PASS
एक्सफिल डोमेन उपस्थितwww.httpbin.org, jsonplaceholder.typicode.comकम से कम एक दिखाई देने पर PASS

चरण 2: हमला चलाएँ — शमन से पहले

Section titled “चरण 2: हमला चलाएँ — शमन से पहले”

एक ताज़ा बेसलाइन कैप्चर करने के लिए कोई शमन सक्रिय न होने पर संयुक्त सिमुलेशन फिर से चलाएँ। यह “पहले” का स्नैपशॉट है — इस बात का प्रमाण कि जब CSD शमन लागू नहीं होता तो हमले सफल होते हैं।

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

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

ब्राउज़र ऑटोमेशन उपकरणों वाले AI सहायक उसी चरण 2 initScript (जो नेटिव fetch को सेव करती है) का उपयोग करके हमले के सिमुलेशन को प्रोग्रामेटिक रूप से चलाते हैं:

  1. initScript के साथ नेविगेट करें — पहले एक साफ़ डॉक्युमेंट संदर्भ सुनिश्चित करने के लिए (पिछले नेविगेशन से पुरानी initScripts से बचने के लिए) about:blank पर नेविगेट करें, फिर चरण 2 initScript (verbatim कोड चरण 2 — AI-स्वचालित निष्पादन में) के साथ http://$F5XC_DOMAINNAME/#/login पर navigate_page करें। यह initScript नेटिव setInterval, clearInterval, fetch, और console.log को सेव करती है — नेटिव fetch संदर्भ यहाँ सही है क्योंकि कोई शमन सक्रिय नहीं है
  2. स्वागत बैनर बंद करें — Welcome Banner बंद करने के लिए Escape के साथ press_key करें। बाद की विज़िट पर बैनर दिखाई नहीं दे सकता (कुकीज़ बनी रहती हैं)। कुकी सहमति डायलॉग Escape कुंजी द्वारा स्वचालित रूप से बंद हो जाता है
  3. पूर्णता की प्रतीक्षा करें — सभी CDN स्क्रिप्ट लोड/एरर कॉलबैक और fetch promise रिज़ॉल्यूशन पूरे होने के लिए 10 सेकंड प्रतीक्षा करें
  4. साक्ष्य कैप्चर करें[CSD Demo] Simulation complete और CDN लोड परिणाम जाँचने के लिए list_console_messages; HTTP स्थिति कोड (200/201 सफलता के लिए) सत्यापित करने के लिए script और fetch प्रकारों के लिए फ़िल्टर किए गए list_network_requests

मैन्युअल निष्पादन

Section titled “मैन्युअल निष्पादन”

ब्राउज़र ऑटोमेशन उपकरणों के बिना ऑपरेटर चरण 2 — चरण 8: हमला सिमुलेशन के समान प्रक्रिया का उपयोग करके सिमुलेशन को मैन्युअल रूप से चलाते हैं:

  1. http://xF5XC_DOMAINNAMEx/#/login पर नेविगेट करें
  2. Email और Password फ़ील्ड में डमी क्रेडेंशियल दर्ज करें (सबमिट न करें)
  3. DevTools खोलें — F12 दबाएँ और Console टैब पर जाएँ
  4. ट्रिगर डिटेक्शन से Combined Detection Script पेस्ट करें और चलाएँ
  5. कंसोल आउटपुट देखें — सभी CDN स्क्रिप्ट लोड होनी चाहिए और एक्सफिल कॉल 200/201 प्रतिक्रियाओं के साथ सफल होनी चाहिए

साक्ष्य — शमन से पहले

Section titled “साक्ष्य — शमन से पहले”
जाँचअपेक्षित (शमन से पहले)स्थिति
CDN स्क्रिप्ट इंजेक्ट किए गएसभी 4 स्क्रिप्ट टैग लोड — [Supply Chain] Loaded from संदेश दिखाई देते हैं, नेटवर्क टैब 200 दिखाता हैPASS
www.httpbin.org पर एक्सफिल fetchनेटवर्क टैब 200 दिखाता है — डेटा भेजा गयाPASS
jsonplaceholder.typicode.com पर एक्सफिल fetchनेटवर्क टैब 201 दिखाता है — डेटा भेजा गयाPASS
कंसोल आउटपुट[CSD Demo] Simulation completePASS

चरण 3: शमन लागू करें

Section titled “चरण 3: शमन लागू करें”

प्रत्येक डिटेक्ट किए गए डोमेन के लिए, mitigated domains एंडपॉइंट पर POST करें। चरण 2 सिमुलेशन के प्राथमिक लक्ष्य 4 CDN इंजेक्शन डोमेन और डिटेक्ट किए गए कोई भी डेटा एक्सफिलट्रेशन डोमेन हैं।

प्राथमिक शमन लक्ष्य (संयुक्त सिमुलेशन स्क्रिप्ट से):

डोमेनभूमिका
cdn.jsdelivr.netCDN स्क्रिप्ट इंजेक्शन
esm.shCDN स्क्रिप्ट इंजेक्शन
unpkg.comCDN स्क्रिप्ट इंजेक्शन
ga.jspm.ioCDN स्क्रिप्ट इंजेक्शन
www.httpbin.orgडेटा एक्सफिलट्रेशन एंडपॉइंट
jsonplaceholder.typicode.comडेटा एक्सफिलट्रेशन एंडपॉइंट

एक डोमेन को शमन करें (प्रति डोमेन एक बार चलाएँ):

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "cdn.jsdelivr.net",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {
"mitigated_domain": "cdn.jsdelivr.net"
}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .

प्रत्येक डोमेन के लिए दोहराएँ:

esm.sh
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{"metadata":{"name":"esm.sh","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"esm.sh"}}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
# unpkg.com
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{"metadata":{"name":"unpkg.com","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"unpkg.com"}}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
# ga.jspm.io
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{"metadata":{"name":"ga.jspm.io","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"ga.jspm.io"}}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
# httpbin.org — mitigated_domain के रूप में www.httpbin.org का उपयोग करें (नीचे नोट देखें)
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{"metadata":{"name":"httpbin.org","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"www.httpbin.org"}}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
# jsonplaceholder.typicode.com
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{"metadata":{"name":"jsonplaceholder.typicode.com","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"jsonplaceholder.typicode.com"}}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .

200 प्रतिक्रिया बनाए गए shaman किए गए डोमेन ऑब्जेक्ट को लौटाती है। 409 प्रतिक्रिया का अर्थ है कि डोमेन पहले से ही shaman सूची में है — यह एक सफलता की स्थिति है।

चरण 4: शमन लागू होने की पुष्टि करें

Section titled “चरण 4: शमन लागू होने की पुष्टि करें”

सभी shaman किए गए डोमेन सूचीबद्ध करें और पुष्टि करें कि गिनती अभी सबमिट किए गए डोमेन की संख्या से मेल खाती है:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq '{count: (.items | length)}'
जाँचअपेक्षितस्थिति
Shaman किए गए डोमेन की गिनती6 (POST गिनती से मेल खाती है)गिनती मेल खाने पर PASS
चरण 3 के सभी POST ने 200 या 409 लौटायाप्रत्येक डोमेन स्वीकार किया गयाPASS

यदि गिनती अपेक्षा से कम है, तो चरण 3 से गायब डोमेन के लिए POST कमांड फिर से चलाएँ।

चरण 5: हमला चलाएँ — शमन के बाद

Section titled “चरण 5: हमला चलाएँ — शमन के बाद”

“बाद” का स्नैपशॉट कैप्चर करने के लिए बिल्कुल वही संयुक्त सिमुलेशन फिर से चलाएँ। सिमुलेशन स्क्रिप्ट समान है — केवल CSD की shaman स्थिति बदली है। shaman किए गए डोमेन से स्क्रिप्ट लोड अब CSD JavaScript द्वारा ब्लॉक किए जाते हैं (&lt;script&gt; टैग src को empty string में साफ़ किया जाता है)।

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

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

ब्राउज़र ऑटोमेशन उपकरणों वाले AI सहायक उसी चरण 2 initScript (verbatim कोड चरण 2 — AI-स्वचालित निष्पादन में) का उपयोग करके हमले के सिमुलेशन को प्रोग्रामेटिक रूप से फिर से चलाते हैं। initScript zone.js एरर से बचने के लिए नेटिव fetch को सेव करती है — यह CSD शमन को प्रभावित नहीं करता क्योंकि CSD fetch() कॉल को इंटरसेप्ट नहीं करता।

  1. initScript के साथ नेविगेट करें — एक साफ़ ब्राउज़र संदर्भ के लिए isolatedContext के साथ new_page का उपयोग करें (चरण 2 से पुरानी initScripts से बचने के लिए), फिर about:blank पर नेविगेट करें, फिर चरण 2 initScript के साथ लॉगिन पेज पर
  2. स्वागत बैनर बंद करेंEscape के साथ press_key करें
  3. पूर्णता की प्रतीक्षा करें — सभी async कॉलबैक के लिए 10 सेकंड प्रतीक्षा करें
  4. साक्ष्य कैप्चर करें[CSD Demo] Simulation complete जाँचने के लिए list_console_messages; script और fetch प्रकारों के लिए फ़िल्टर किए गए list_network_requests यह देखने के लिए कि CDN स्क्रिप्ट लोड अनुपस्थित हैं (CSD ने script src को साफ़ किया) जबकि एक्सफिल डोमेन पर fetch कॉल सामान्य रूप से पूरी होती हैं

मैन्युअल निष्पादन

Section titled “मैन्युअल निष्पादन”

ब्राउज़र ऑटोमेशन उपकरणों के बिना ऑपरेटर चरण 2 — चरण 8: हमला सिमुलेशन के समान प्रक्रिया का उपयोग करके सिमुलेशन को मैन्युअल रूप से फिर से चलाते हैं:

  1. http://xF5XC_DOMAINNAMEx/#/login पर नेविगेट करें
  2. Email और Password फ़ील्ड में डमी क्रेडेंशियल दर्ज करें (सबमिट न करें)
  3. DevTools खोलें — F12 दबाएँ और Console टैब पर जाएँ
  4. ट्रिगर डिटेक्शन से Combined Detection Script पेस्ट करें और चलाएँ
  5. कंसोल और नेटवर्क आउटपुट देखें — shaman किए गए डोमेन के लिए CDN स्क्रिप्ट onload और onerror कॉलबैक फ़ायर नहीं होते (CSD ने स्क्रिप्ट src को empty string में साफ़ किया, नेटवर्क अनुरोध को पूरी तरह से रोका)। एक्सफिल डोमेन पर Fetch कॉल (www.httpbin.org, jsonplaceholder.typicode.com) 200/201 के साथ अभी भी पूरी होती हैं — CSD शमन स्क्रिप्ट लोडिंग को ब्लॉक करता है, fetch/XHR कॉल को नहीं

साक्ष्य — शमन के बाद

Section titled “साक्ष्य — शमन के बाद”
जाँचअपेक्षित (शमन के बाद)स्थिति
CDN स्क्रिप्ट लोडब्लॉक — स्क्रिप्ट नेटवर्क टैब में दिखाई नहीं देतीं (CSD ने src को empty string में साफ़ किया)PASS
CDN स्क्रिप्ट कॉलबैकshaman किए गए डोमेन के लिए न onload और न onerror फ़ायर होता हैPASS
www.httpbin.org पर एक्सफिल fetch200 — fetch अभी भी पूरी होती है (CSD fetch को इंटरसेप्ट नहीं करता)INFO
jsonplaceholder.typicode.com पर एक्सफिल fetch201 — fetch अभी भी पूरी होती है (CSD fetch को इंटरसेप्ट नहीं करता)INFO
कंसोल आउटपुट[CSD Demo] Simulation completePASS

चरण 6: पहले बनाम बाद की तुलना

Section titled “चरण 6: पहले बनाम बाद की तुलना”

यह डेमो का payoff है — साइड-बाइ-साइड साक्ष्य जो साबित करता है कि वही हमला, उसी पेज पर, उसी स्क्रिप्ट के साथ, अब एक पूरी तरह से अलग परिणाम देता है।

संकेतशमन से पहले (चरण 2)शमन के बाद (चरण 5)
CDN स्क्रिप्ट लोड200 — सभी 4 CDN स्क्रिप्ट सामान्य रूप से लोड होती हैंब्लॉक — नेटवर्क टैब से स्क्रिप्ट अनुपस्थित (CSD ने src को empty string में साफ़ किया)
CDN onload कॉलबैक[Supply Chain] Loaded from संदेश दिखाई देते हैंकोई कॉलबैक फ़ायर नहीं होता (कोई नेटवर्क अनुरोध नहीं किया गया)
www.httpbin.org पर एक्सफिल200 — डेटा एक्सफिल्ट्रेट हुआ200 — fetch अभी भी पूरी होती है (CSD fetch को इंटरसेप्ट नहीं करता)
jsonplaceholder.typicode.com पर एक्सफिल201 — डेटा एक्सफिल्ट्रेट हुआ201 — fetch अभी भी पूरी होती है (CSD fetch को इंटरसेप्ट नहीं करता)
CSD mitigated domains API0 shaman किए गए6 shaman किए गए

बैकएंड डेटा में शमन सत्यापित करें

Section titled “बैकएंड डेटा में शमन सत्यापित करें”

10 पुनरावृत्तियों (10 मिनट) तक हर 60 सेकंड में /detected_domains क्वेरी करें। तुलना तालिका तक आगे बढ़ें एक बार क्वेरी वापस आने पर, या 10 मिनट के अधिकतम के बाद — ये जाँचें सूचनात्मक हैं और चरण 4 को नहीं रोकतीं।

शमन के बाद डिटेक्ट किए गए डोमेन जाँचें:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq '{total_domains: .domain_summary.totalDomains, domains: [.domains_list[]? | {domain: .domain, category: .category}]}'

Shaman स्थिति के लिए स्क्रिप्ट जाँचें:

Terminal window
NOW=$(date +%s)
START=$(( NOW - 86400 ))
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d "{\"startTime\": \"$START\", \"endTime\": \"$NOW\"}" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq '{total: (.scripts | length), scripts: [.scripts[]? | {script_name: .script_name, risk_level: .risk_level}]}'

चरण 3 साक्ष्य सारांश

Section titled “चरण 3 साक्ष्य सारांश”
जाँचअपेक्षितस्थिति
बेसलाइन साफ़ (चरण 1)शुरुआत में 0 shaman किए गए डोमेनPASS / FAIL
पहले — हमला सफल (चरण 2)स्क्रिप्ट लोड, एक्सफिल 200/201 लौटाता हैPASS / FAIL
शमन लागू (चरण 3)सभी 6 डोमेन POST के माध्यम से स्वीकार (200 या 409)PASS / FAIL
Shaman गिनती की पुष्टि (चरण 4)सूची में 6 आइटमPASS / FAIL
बाद — स्क्रिप्ट लोड ब्लॉक (चरण 5)CDN स्क्रिप्ट नेटवर्क टैब से अनुपस्थित, fetch कॉल अभी भी पूरी होती हैंPASS / FAIL
पहले बनाम बाद की तुलना (चरण 6)चरण 2 और चरण 5 के साक्ष्य के बीच स्पष्ट अंतरPASS / FAIL

चरण 3 पूरा। सभी परिनियोजन ऑब्जेक्ट हटाने के लिए तैयार होने पर चरण 4 — निष्कासन पर आगे बढ़ें।