
यह CVE-2019-17240 का एक्सप्लॉइट है।
Bludit CMS के 3.9.2 और उससे पहले के संस्करण एंटी-ब्रूट फोर्स तंत्र को बायपास करने की भेद्यता से ग्रस्त हैं, जो 10 या उससे अधिक बार गलत लॉगिन करने का प्रयास करने वाले उपयोगकर्ताओं को ब्लॉक करने के लिए लागू है।
इस भेद्यता की खोज Rastating ने की थी।
बदलते स्ट्रिंग (स्पूफ़्ड स्ट्रिंग) के X-Forwarded-For हेडर मान के साथ लॉगिन अनुरोध सफलतापूर्वक संसाधित किया गया था, और असफल लॉगिन प्रयास स्पूफ़्ड स्ट्रिंग के विरुद्ध लॉग किया गया था।
उपरोक्त स्क्रिप्ट उस भेद्यता का उपयोग एंटी-ब्रूट तंत्र को बायपास करने के लिए करती है।
लॉगिन पेज के बॉडी में CSRF टोकन होते हैं, इसलिए क्रेडेंशियल्स के साथ POST अनुरोध करने से पहले हर बार उसे पिछले रिस्पॉन्स के स्रोत से CSRF टोकन प्राप्त करना होता है।
ऐसा करने का एक तरीका है GET अनुरोध करना, CSRF टोकन प्राप्त करना और क्रेडेंशियल्स तथा प्राप्त टोकन के साथ POST अनुरोध करना, और जब तक आपको पासवर्ड नहीं मिल जाता तब तक इसे दोहराना — और यही मैंने अधिकांश स्क्रिप्ट्स में देखा है।
दूसरा तरीका अंतिम POST अनुरोध के रिस्पॉन्स से CSRF टोकन प्राप्त करना है, इसलिए केवल पहली बार GET अनुरोध करने की आवश्यकता होती है।
दूसरा तरीका पहले की तुलना में बहुत तेज़ है, और जब ब्रूटफोर्स हमलों की बात आती है जहाँ आपको कई अनुरोध करने होते हैं, तो थोड़ी अधिक दक्षता बहुत प्रभाव डालती है।
मैंने दोनों तरीकों को आज़माया और दूसरे तरीके से 1 मिनट में 63 शब्दों का परीक्षण कर पाया, जबकि पहले तरीके से केवल 19 शब्दों का।
python3 brute.py -u [url] -user [username] -w [pathToWordlist] [-t [threads to use]]
python3 brute.py -u https://192.168.10.13/ -user admin -w sysadmin -t 30
