
DOM XSS स्कैनर एकल पृष्ठ अनुप्रयोगों के लिए
DOMDig एक DOM XSS स्कैनर है जो क्रोमियम वेब ब्राउज़र के अंदर चलता है और यह एकल पृष्ठ अनुप्रयोगों (SPA) को पुनरावर्ती रूप से स्कैन कर सकता है।
अन्य स्कैनरों के विपरीत, DOMDig DOM संशोधनों और XHR/fetch/websocket अनुरोधों पर नज़र रखकर किसी भी वेब एप्लिकेशन (gmail सहित) को क्रॉल कर सकता है और यह घटनाओं को ट्रिगर करके एक वास्तविक उपयोगकर्ता इंटरैक्शन का अनुकरण कर सकता है। इस प्रक्रिया के दौरान, XSS पेलोड को इनपुट फ़ील्ड्स में डाला जाता है और इंजेक्शन बिंदुओं और संबंधित URL संशोधनों को खोजने के लिए उनके निष्पादन को ट्रैक किया जाता है।
यह htcrawl पर आधारित है, एक नोड लाइब्रेरी जो आसानी से gmail खाते को क्रॉल करने के लिए पर्याप्त शक्तिशाली है।
git clone https://github.com/fcavallarin/domdig.git
cd domdig && npm i && cd ..
node domdig/domdig.js
node domdig.js -c 'foo=bar' -p http:127.0.0.1:8080 https://fcvl.net/htcap/scanme/domxss.php
DOMDig तीन अलग-अलग जाँच कर सकता है:
DOM XSS जाँच को विभिन्न मोड के साथ कॉन्फ़िगर किया जा सकता है, जो अलग-अलग व्यवहार सक्षम करते हैं। डिफ़ॉल्ट रूप से, सभी सक्षम होते हैं।
मोड हैं:
यह DOM को क्रॉल करता है और उन स्थानों की खोज करता है जहां उपयोगकर्ता जावास्क्रिप्ट कोड इंजेक्ट कर सकता है, उदाहरण के लिए, एक टेक्स्ट बॉक्स। यह इंजेक्शन बिंदुओं को खोज सकता है जो स्कैनर द्वारा अनुमान नहीं लगाए जा सकते। एक उदाहरण एक खोज कार्यक्षमता हो सकती है जो इनपुट बॉक्स का टेक्स्ट लेती है और खोज को ट्रिगर करने के लिए इसे URL के हैश में JSON स्ट्रिंग के रूप में डालती है।
यह URL (क्वेरी पैरामीटर और हैश) को फ़ज़ करता है ताकि यह देख सके कि पृष्ठ लोड होने पर हमारा कोड निष्पादित होता है या नहीं। यदि कोई कोड निष्पादित नहीं होता है, तो यह DOM को क्रॉल करता है और HTML घटनाओं को ट्रिगर करता है, उम्मीद करता है कि कुछ ऐसा मिले जो हमारे पेलोड को निष्पादित करे।
यह शास्त्रीय रिफ्लेक्टेड XSS की भी खोज कर सकता है।
DOM XSS जाँच करने के बाद, DOMDig उसी पृष्ठ को क्रॉल करता है और पहले उपयोग किए गए पेलोड के निष्पादन की प्रतीक्षा करता है। यदि एक पाया जाता है, तो इसका मतलब है कि यह पृष्ठ रीलोड पर बच सकता है।
उन स्थानों की खोज करता है जहां टेम्पलेट प्लेसहोल्डर (जैसे {var1}) का मूल्यांकन जावास्क्रिप्ट कोड के रूप में किया जा सकता है।
प्रत्येक रिपोर्ट की गई कमजोरी में निम्नलिखित फ़ील्ड होते हैं:
domxss, stored या templateinj हो सकता हैDOMDig क्रॉलिंग इंजन के रूप में htcrawl का उपयोग करता है।
आरेख पुनरावर्ती क्रॉलिंग प्रक्रिया दिखाता है।
.
नीचे दिया गया वीडियो इंजन को gmail क्रॉल करते हुए दिखाता है। क्रॉल कई घंटों तक चला और लगभग 3000 XHR अनुरोध कैप्चर किए गए।
एक लॉगिन अनुक्रम (या प्रारंभिक अनुक्रम) एक json ऑब्जेक्ट है जिसमें स्कैन शुरू होने से पहले किए जाने वाले कार्यों की सूची होती है। सूची का प्रत्येक तत्व एक सरणी है जहां पहला तत्व लेने के लिए कार्रवाई का नाम है और शेष तत्व उन कार्रवाइयों के "पैरामीटर" हैं। कार्रवाइयाँ हैं:
[
["navigate", "https://target.local/login-page"],
["write", "#username", "demo"],
["write", "#password", "demo"],
["sleep", 2],
["clickToNavigate", "#btn-login"]
]
पेलोड को json फ़ाइल (-P विकल्प) से स्ट्रिंग्स के सरणी के रूप में लोड किया जा सकता है। कस्टम पेलोड बनाने के लिए, स्ट्रिंग window.___xssSink({0}) को निष्पादित किए जाने वाले फ़ंक्शन के रूप में उपयोग किया जाना चाहिए (क्लासिक alert(1) के बजाय)
[
';window.___xssSink({0});',
'<img src="https://raw.githubusercontent.com/fcavallarin/domdig/HEAD/a" onerror="window.___xssSink({0})">'
]