
इस repo में डंप किए गए फ्लैश पार्टीशन हैं जिनमें CVE-2019-17147 के प्रति संवेदनशील फर्मवेयर संस्करण है, और आपके WR841N राउटर को डाउनग्रेड और डीबग करने के लिए कुछ उपयोगी बाइनरी हैं।
इस रिपॉजिटरी में CVE-2019-17147 के लिए असुरक्षित फर्मवेयर संस्करण वाले डंप किए गए फ्लैश पार्टीशन और आपके WR841N(V14) राउटर को डाउनग्रेड और डीबग करने के लिए कुछ उपयोगी बाइनरी शामिल हैं।
फ्लैश चिप पार्टीशन को ओवरराइट करने जैसे हार्डवेयर संशोधन करने में जोखिम होते हैं। जोखिमों का मूल्यांकन करें और स्वयं निर्णय लें कि आप इसे करना चाहते हैं या नहीं।
ZDI की पोस्ट: https://www.zerodayinitiative.com/blog/2019/12/2/mindshare-hardware-reversing-with-the-tp-link-tl-wr841n-router-part-2 ने एक बहुत ही दिलचस्प कमजोरी का प्रदर्शन किया जिसे मैं वास्तव में आज़माना और उससे कुछ सीखना चाहूंगा।
दुर्भाग्य से फर्मवेयर संस्करण (US) 0.9.1 4.16 v007c.0 Build 180613 Rel.42415n पहले ही US वेबसाइट से हटा दिया गया है और अब डाउनलोड नहीं किया जा सकता। हालांकि मेरे पास कुछ WR841N हैं जो फर्मवेयर संस्करण (TW) 0.9.1 4.16 v009e.0 Build 180516 Rel.81030n चला रहे हैं, जो ZDI द्वारा शोषित किए गए संस्करण से पुराना है और वही कमजोरी अभी भी मौजूद है।
मुझे लगता है कि बहुत से लोग इस शोषण को पुन: उत्पन्न करने में रुचि रखते हैं लेकिन उसी समस्या का सामना कर रहे हैं कि वे एक कार्यशील WR841N नहीं ढूंढ पा रहे हैं जो फर्मवेयर का असुरक्षित संस्करण चला रहा हो। यदि आप TW, EU या JP संस्करण हार्डवेयर का उपयोग कर रहे हैं, तो 180613 से पुराना फर्मवेयर संस्करण (जिसका अर्थ है कि यह 2018/06/13 को बनाया गया था) डाउनलोड करना और आधिकारिक वेबसाइट से पुराने फर्मवेयर के साथ "अपग्रेड" करके अपने राउटर को डाउनग्रेड करना अभी भी संभव है।
हालांकि फर्मवेयर डाउनग्रेड संभव है, WR841N वास्तव में जांचता है और विभिन्न देशों में बेचे गए हार्डवेयर के लिए बनाए गए फर्मवेयर को स्वीकार नहीं करेगा। इसलिए उन लोगों के लिए जो उन देशों में रहते हैं जहां TP-Link अपनी वेबसाइट पर फर्मवेयर का असुरक्षित संस्करण प्रदान नहीं करता है (उदाहरण के लिए, US), उन्हें http सर्वर में जांच को बायपास करना होगा और असुरक्षित फर्मवेयर को सीधे अपने डिवाइस के फ्लैश चिप में लिखना होगा। यही इस रिपॉजिटरी का मुख्य उद्देश्य है।
मैंने स्थिर busybox और gdbserver भी क्रॉस कंपाइल किया है जो WR841N पर काम करते हैं, उन लोगों के लिए जो शोषण को डीबग और पुन: बनाने का प्रयास करना चाहते हैं।
अपने फ्लैश पार्टीशन को ओवरराइट करने का प्रयास करने से पहले, आपको वर्तमान पार्टीशन का बैकअप लेना चाहिए ताकि आप इस असुरक्षित संस्करण के साथ खेलने के बाद अपने राउटर को पुनर्स्थापित कर सकें।
मैं मानता हूं कि आप पहले से ही सीरियल कंसोल का उपयोग करने से परिचित हैं इसलिए मैं हार्डवेयर भाग को छोड़ दूंगा।
अपनी पसंद की मशीन पर एक tftp सर्वर सेट अप करें।
WR841N कंसोल में:
(अपने tftp सर्वर के आईपी पते से बदलें)
~ # cat /dev/mtd0 > /var/WR841N_backup_mtd0_boot.bin
~ # tftp -p -r /var/WR841N_backup_mtd0_boot.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd0_boot.bin
~ #
~ # cat /dev/mtd1 > /var/WR841N_backup_mtd1_kernel.bin
~ # tftp -p -r /var/WR841N_backup_mtd1_kernel.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd1_kernel.bin
~ #
~ # cat /dev/mtd2 > /var/WR841N_backup_mtd2_rootfs.bin
~ # tftp -p -r /var/WR841N_backup_mtd2_rootfs.bin 192.168.0.100
~ # rm /var/WR841N_backup_mtd2_rootfs.bin=
WR841N में फ्लैश पार्टीशन इस प्रकार हैं:
dev: size erasesize name
mtd0: 00010000 00010000 "boot"
mtd1: 000f0000 00010000 "kernel"
mtd2: 002e0000 00010000 "rootfs"
mtd3: 00010000 00010000 "config"
mtd4: 00010000 00010000 "radio"
मुख्य पार्टीशन जिसे आपको ओवरराइट करने की आवश्यकता है वह rootfs (mtd2) है, लेकिन स्थिरता के लिए हम boot और kernel को भी ओवरराइट करेंगे। मैंने config और radio पार्टीशन प्रदान नहीं किए क्योंकि वे कमजोरी को प्रभावित नहीं करते थे और आप संभावित कानूनी समस्याओं से बचने के लिए निश्चित रूप से RF सेटिंग्स के साथ खिलवाड़ नहीं करना चाहेंगे।
flashcp को tftp के साथ WR841N में ट्रांसफर करें।WR841N शेल में:
~ # cd /var
/var # tftp -g -r flashcp 192.168.0.100
/var # chmod +x flashcp
(बेशक, आईपी पते को अपनी मशीन से बदलें जो tftp सर्वर चला रही है।)
TW_wr841N_mtd0_boot_180516.bin को WR841N में ट्रांसफर करें और flashcp के साथ ओवरराइट करें:/var # tftp -g -r TW_wr841N_mtd0_boot_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd0_boot_180516.bin /dev/mtd0
/var # rm TW_wr841N_mtd0_boot_180516.bin
TW_wr841N_mtd1_kernel_180516.bin को WR841N में ट्रांसफर करें और flashcp के साथ ओवरराइट करें:/var # tftp -g -r TW_wr841N_mtd1_kernel_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd1_kernel_180516.bin /dev/mtd1
/var # rm TW_wr841N_mtd1_kernel_180516.bin
TW_wr841N_mtd2_rootfs_180516.bin को WR841N में ट्रांसफर करें और flashcp के साथ ओवरराइट करें (यह सबसे बड़ा पार्टीशन है इसलिए flashcp को पूरा होने में कुछ समय लगेगा):/var # tftp -g -r TW_wr841N_mtd2_rootfs_180516.bin 192.168.0.100
/var # ./flashcp TW_wr841N_mtd2_rootfs_180516.bin /dev/mtd2
/var # rm TW_wr841N_mtd2_rootfs_180516.bin
0.9.1 4.16 v009e.0 Build 180516 Rel.81030n है।
buildroot-2021.02.6 के साथ क्रॉस कंपाइल किए गए हैं।