Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

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

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/hoangrealer/cve-2023-27216
Embedded Systems SecurityIoT SecurityVulnerability AnalysisReverse EngineeringDebuggersHardware HackingLearning & EducationFirmware AnalysisBinary Exploitation
GitHubhoangrealer/cve-2023-27216

CVE-2023-27216

Newbie's approach to firmware hacking

रिपॉजिटरी देखें
32 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2023-27216 - DLink राउटर

यह दस्तावेज़ मेरे व्यक्तिगत अनुभव का वर्णन है - फर्मवेयर रिवर्सिंग और एक्सप्लॉइटिंग में एक नौसिखिया। Firmwhere??

दायरा

प्रदर्शन के लिए, हम CVE-2023-27216 का विश्लेषण और पुनरुत्पादन करेंगे।

  • CVE संख्या: CVE-2023-27216
  • कमजोरी का विवरण: D-Link DSL-3782 v.1.03 में पाई गई एक समस्या दूरस्थ प्रमाणित उपयोगकर्ताओं को नेटवर्क सेटिंग्स पेज के माध्यम से रूट के रूप में मनमाना कोड निष्पादित करने की अनुमति देती है।
  • उपकरण मॉडल: D-Link DSL-3782
  • फर्मवेयर संस्करण: DSL-3782_A1_EU_1.01
  • निर्माता की आधिकारिक वेबसाइट: http://www.dlink.com.cn/
  • फर्मवेयर पता: https://media.dlink.eu/support/products/dsl/dsl-3782/driver_software/dsl-3782_a1_eu_1.01_07282016.zip

कार्य

किसी भी फर्मवेयर का शोषण करने के लिए निम्नलिखित चरण हैं:

  • फर्मवेयर प्राप्त करें। 2 तरीके हैं: उन्हें सीधे हार्डवेयर (कैमरा, राउटर, प्रिंटर, आदि) से निकालें या निर्माता की वेबसाइट से प्राप्त करें। इस पर एक अन्य दस्तावेज़ में चर्चा की जाएगी।
  • फर्मवेयर का विश्लेषण करें और किसी भी कमजोरी का पता लगाएं
  • फर्मवेयर का अनुकरण करें।
  • डिबग करने के लिए gdbserver को स्थिर रूप से बनाएं।

फर्मवेयर विश्लेषण

आमतौर पर एक फर्मवेयर बाइनरी फ़ाइल में एक बूटलोडर (uBoot), एक कर्नेल फ़ाइल, बूटलोडर के लिए कर्नेल हेडर (uImage), एक संपीड़ित फ़ाइल सिस्टम (आमतौर पर SquashFS प्रारूप में), एक CRC/MD5 तालिका (फ़ाइल अखंडता सत्यापित करने के लिए) और अन्य विविध फ़ाइलें होती हैं।

पहले फर्मवेयर का विश्लेषण करने का एक तरीका खोजें, कुछ शोध करें, कुछ संसाधन मिले:

  • बिनवॉक फर्मवेयर का विश्लेषण और निष्कर्षण के लिए
  • अनुकरण कैसे करें: https://boschko.ca/qemu-emulating-firmware/ Binwalk check signature

महत्वपूर्ण फ़ाइलें निकालें

बिनवॉक का उपयोग करके फर्मवेयर निकालें: binwalk -Me DSL-3782_A1_EU_1.01_07282016.bin Binwalk extract

निकाले गए squashfs-root फ़ोल्डर और कुछ अजीब फ़ाइलें मिलीं। Extracted files

बोनस: यदि आपको squashfs-root फ़ोल्डर दिखाई नहीं देता है, तो आप किसी भी ".squashfs" फ़ाइल पर unsquashfs का उपयोग करें जो आप देखते हैं। वे बस ज़िप फ़ाइलों की तरह हैं 😅।

फर्मवेयर कैसे काम करता है इसका विश्लेषण

फर्मवेयर आर्किटेक्चर और एंडियन की जाँच करें। यह फर्मवेयर से निकाले गए कुछ बायनरी की जाँच करके किया जा सकता है। आर्किटेक्चर और फर्मवेयर की जाँच करें: file <binary> Firmware Architecture

यहाँ हम लगभग पुष्टि कर सकते हैं कि फर्मवेयर MIPS 32-bit MSB आर्किटेक्चर पर चलता है। "लगभग" का कारण यह है कि कुछ फर्मवेयर MIPS संगत जैसे Lexra के साथ भिन्न आर्किटेक्चर पर चल सकते हैं।

सquashfs-root फ़ोल्डर की जाँच करें और कुछ दिलचस्प फ़ाइलें मिलीं:

  • usr/etc/init.d/rcS => यह वह स्क्रिप्ट है जो फर्मवेयर बूट होने पर चलती है
  • usr/etc/passwd => यह वह फ़ाइल है जिसमें उपयोगकर्ता जानकारी होती है
  • userfs/romfile.cfg => इसमें एक क्रेडेंशियल admin:admin है

rcS फ़ाइल की जाँच करें और कुछ दिलचस्प कोड मिला:

root@kitploit:~
echo "admin:$1$$iC.dUsGpxNNJGeOm1dFio/:0:0:root:/:/bin/sh" > /usr/etc/passwd
  • यह कोड उपयोगकर्ता जानकारी को passwd फ़ाइल में लिखने के लिए उपयोग किया जाता है
  • एक वेबसर्वर चलाएं जिसे boa सर्वर कहा जाता है। Boa एक प्राचीन वेबसर्वर है, जिसका उपयोग मुख्य रूप से 2000 के दशक में राउटर जैसे एम्बेडेड उपकरणों में किया जाता था। हालांकि, बोआ सर्वर ने 2005 में ही अपना विकास बंद कर दिया था! भले ही बोआ सर्वर लगभग 20 साल पहले मर चुका है, यह आज भी हमारे विक्रेता की बदौलत जीवित है। Boa boot

पूर्ण सिस्टम फर्मवेयर अनुकरण

मैं अनुकरण प्रक्रिया के लिए Debian-आधारित OS जैसे Ubuntu या Kali का उपयोग करने की सलाह देता हूं। एक और OS है जो फर्मवेयर हैकिंग पर केंद्रित है जिसे AttifyOS कहा जाता है। इस दस्तावेज़ में, मैंने Kali Linux का उपयोग किया। अनुकरण प्रक्रिया शुरू करें, 2 उपकरण हैं:

  • QEMU => पहियों का पुन: आविष्कार न करें 🙏 🛐
  • FAT- फर्मवेयर-विश्लेषण-टूलकिट => यह काम करता है, आप यह जानने के लिए स्रोत कोड पढ़ सकते हैं कि यह क्या करता है।

Stick with it

आइए देखें कि फर्मवेयर को पूरी तरह से अनुकरण करने के लिए FAT का उपयोग कैसे करें। सबसे पहले, हम github से आपकी Kali मशीन पर रिपो को क्लोन करते हैं। और सेटअप प्रक्रिया से गुजरते हैं। आपको fat.config फ़ाइल भी बदलनी होगी, अन्यथा यह काम नहीं करेगा।

root@kitploit:~
git clone https://github.com/attify/firmware-analysis-toolkit.git

cd firmware-analysis-toolkit

./setup.sh

vi fat.config # Modify to your sudo password.

फिर हम फर्मवेयर बाइनरी (जो हमने निर्माता से डाउनलोड की थी) को अपनी Kali मशीन पर FAT के फ़ोल्डर में कॉपी करते हैं और इसे चलाते हैं।

root@kitploit:~
./fat.py DSL-3782_A1_EU_1.01_07282016.bin

नोट: FAT की सेटअप प्रक्रिया के दौरान हमें त्रुटियां मिल सकती हैं। यह 'no libmagic' कह सकता है। Fat run fail

बस सरलता से चलाएं

root@kitploit:~
pip unistall python-magic
pip install python-magic

इससे आपकी समस्या ठीक हो जानी चाहिए, फिर हम बिल्ड कमांड फिर से चलाते हैं। यह अब बढ़िया काम करना चाहिए।

Fat run nice

चलाने के लिए Enter दबाएं। अनुकरण प्रक्रिया अच्छी तरह से काम करनी चाहिए जैसे आप http://192.168.1.1 (Kali मशीन पर) ब्राउज़ करके जांच सकते हैं कि यह काम करता है या नहीं।

Router main page

यदि आपके पास क्रेडेंशियल हैं तो आप कंसोल में भी लॉगिन कर सकते हैं। यहाँ admin:admin है।

Console login

यदि आप अनुकरण फर्मवेयर को बंद करने का निर्णय लेते हैं, तो बस Ctrl+A X दबाएं। जब आपको फिर से चलाने की आवश्यकता हो, तो fat.py को दोबारा न चलाएं क्योंकि फर्मवेयर पहले से ही एक इमेज में बन चुका है। आपको केवल वह स्क्रिप्ट चलानी होगी जो पहले ही उत्पन्न हो चुकी है।

root@kitploit:~
cd firmadyne/scratch/<Image-ID>
./run.sh

Rerun the image

डिबगर

डिबगिंग उद्देश्य के लिए gdbserver बनाएं। gdbserver बनाने के कई तरीके हैं। आप स्थिर रूप से निर्मित सर्वर भी डाउनलोड कर सकते हैं। एक repo है जिसमें कुछ स्थिर रूप से निर्मित सर्वर हैं। हालांकि, मैं स्वयं gdbserver बनाना पसंद करता हूं क्योंकि github repo में मौजूद काफी पुराने हैं, जिनमें कुछ संगतता समस्याएं हो सकती हैं।

संदर्भ के लिए इस ब्लॉग पोस्ट को देखें https://sheran.sg/blog/cross-compile-gdb-for-mips/. ब्लॉग 30 जुलाई 2024 को अपलोड किया गया था, इस प्रोजेक्ट से ठीक पहले, इसलिए यह पूरी तरह से काम करता है। नोट: ब्लॉग MIPS x32 LSB के लिए बनाया गया था जबकि हमें MIPS x32 MSB चाहिए। हमें mipsel-linux-gnu को mips-linux-gnu में बदलना होगा।

बिल्ड चरण

हमें MIPS के लिए टूल चेन स्थापित करने की आवश्यकता है। सौभाग्य से, Debian पैकेज में पहले से ही यह है।

root@kitploit:~
**apt update && apt upgrade -y
apt install -y build-essential m4 gcc-mips-linux-gnu g++-mips-linux-gnu**

MIPS के लिए gdbserver बनाने के लिए, कुछ पैकेज हैं जिन्हें हमें बनाने और स्थापित करने की आवश्यकता है। यहाँ मैं स्रोत प्राप्त करता हूं।

  1. gdb 15.1 - https://sourceware.org/pub/gdb/releases/gdb-15.1.tar.xz
  2. GNU GMP lib v6.3.0 - https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz
  3. GNU MPFR lib v4.2.1 - https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz

स्रोत प्राप्त करें

root@kitploit:~
wget https://sourceware.org/pub/gdb/releases/gdb-15.1.tar.xz
wget https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz
wget https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz

टूलचेन के साथ लाइब्रेरी बनाएं इन लाइब्रेरीज़ को बनाते समय रूट विशेषाधिकार होना महत्वपूर्ण है। हमें पहले GMP बनाना होगा क्योंकि MPFR बनाते समय यह एक आवश्यकता है।

root@kitploit:~
tar xvf gmp-6.3.0.tar.xz && cd gmp-6.3.0
./configure --host=mips-linux-gnu
make -j$((`nproc`+1))
make install
cd ..

फिर हम MPFR बनाते हैं:

root@kitploit:~
tar xvf mpfr-4.2.1.tar.xz && cd mpfr-4.2.1
./configure --host=mipsel-linux-gnu --with-gmp-build=<YOUR-FOLDER>/gmp-6.3.0
make -j$((`nproc`+1))
make install
cd ..

अब हम अंततः gdbserver बना सकते हैं:

root@kitploit:~
tar xvf gdb-15.1.tar.xz && cd gdb-15.1
./configure --host=mipsel-linux-gnu --with-gmp-lib=/usr/local/lib --with-mpfr-lib=/usr/local/lib --with-gmp-include=<YOUR-FOLDER>/gmp-6.3.0 --with-mpfr-include=<YOUR-FOLDER>/mpfr-4.2.1/src
make -j$((`nproc`+1)) LDFLAGS=-static

बनाया गया बाइनरी gdbserver gdb-15.1/gdbserver फ़ोल्डर में होना चाहिए।

gdbserver को फर्मवेयर इमेज में डालें

अनुकरण फर्मवेयर में wget, nc, curl, /dev/tcp, ... उपलब्ध नहीं है। हम फ़ाइलों को स्थानांतरित करने के लिए Python HTTP सर्वर होस्ट नहीं कर सकते। हमारे पास ssh भी नहीं है। हालांकि, हम इमेज को माउंट करके अपने gdbserver को अनुकरण मशीन में रख सकते हैं।

  • sudo ./scripts/mount.sh 1
  • स्थिर रूप से निर्मित gdbserver को माउंटेड फ़ोल्डर में कहीं भी कॉपी करें।
  • sudo ./scripts/umount.sh 1
  • qemu को पुनरारंभ करें (सुनिश्चित करने के लिए फिर से ./run.sh चलाएं)।

Push gdbserver to image

Test gdbserver

पोर्ट फॉरवर्डिंग

अब से आप Kali मशीन के अंदर डिबगिंग और हैकिंग कर सकते हैं। हालांकि, हम अनुकरण मशीन को अपनी होस्ट मशीन (Windows या Mac) पर पोर्ट फॉरवर्ड करके एक कदम और आगे बढ़ सकते हैं।

हमारे नेटवर्क का निरीक्षण करें

पहले ifconfig का उपयोग करके नेटवर्क की जाँच करें। ifconfig

परिणाम हमें बताता है कि 2 इंटरफ़ेस हैं: eth0 और tap1_0। हम जो जानते हैं, उससे eth0 इंटरफ़ेस होस्ट से साझा नेटवर्क का है और tap1_0 अनुकरण फर्मवेयर मशीन का इंटरफ़ेस है।

आसान समझ के लिए, eth0 का नेटवर्क सार्वजनिक नेटवर्क की तरह है जहाँ हम होस्ट मशीन से Kali मशीन तक पहुँच सकते हैं। tap1_0 निजी नेटवर्क की तरह है जहाँ हम केवल Kali मशीन से ही पहुँच सकते हैं। हमें eth0 से कनेक्शन को tap1_0 इंटरफ़ेस पर 192.168.1.1:80 पोर्ट पर फॉरवर्ड करने की आवश्यकता है।

पोर्ट फॉरवर्डिंग की अनुमति दें

इसमें हमारी मदद करने वाले कई उपकरण हैं। हालांकि, iptables सबसे अच्छा काम करता है, यदि आप निश्चित रूप से कॉन्फ़िगर करना जानते हैं।

हमें पहले पोर्ट फॉरवर्डिंग की अनुमति देनी होगी। यह कमांड चलाएं:

root@kitploit:~
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

यह केवल एक सत्र के लिए लागू होता है। यदि आप इसे स्थायी रूप से लागू करना चाहते हैं, तो /etc/sysctl.conf की सामग्री को संशोधित करें।

root@kitploit:~
net.ipv4.ip_forward=1 # Find this line, uncomment it.

समाप्त होने पर फ़ाइल को सहेजें और बंद करें।

फिर इस फ़ाइल में सेटिंग्स लागू करें। निम्नलिखित कमांड चलाएं:

root@kitploit:~
sudo sysctl -p
sudo sysctl --system

iptables के साथ पोर्ट फॉरवर्डिंग

सामान्यतः, हम कुछ iptables कमांड चला सकते हैं। लेकिन यह बहुत थकाऊ होगा 😵‍💫। हम एक उपकरण iptables-persistent स्थापित कर सकते हैं। यह आपको एक कॉन्फिग फ़ाइल लिखने, फ़ाइल में लोड करने या चेन को फ़ाइल में निकालने की अनुमति देता है। सब कुछ जल्दी से किया जा सकता है।

root@kitploit:~
apt install iptables-persistent

यहाँ हम जिस कॉन्फिग फ़ाइल को संशोधित करना चाहते हैं वह /etc/iptables/rules.v4 है। हम फ़ाइल की सामग्री को नीचे दी गई सामग्री में बदलते हैं।

root@kitploit:~
*filter
:INPUT ACCEPT [37:22880]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [35:2330]
# Forward HTTP Port
-A FORWARD -i eth0 -o tap1_0 -p tcp --dport 80 -d 192.168.1.1 -j ACCEPT
-A FORWARD -i tap1_0 -o eth0 -p tcp --sport 80 -s 192.168.1.1 -j ACCEPT
# Forward Debugger port
-A FORWARD -i eth0 -o tap1_0 -p tcp --dport 31337 -d 192.168.1.1 -j ACCEPT
-A FORWARD -i tap1_0 -o eth0 -p tcp --sport 31337 -s 192.168.1.1 -j ACCEPT

COMMIT
# Completed on Wed Aug  7 09:32:11 2024
# Generated by iptables-save v1.8.10 (nf_tables) on Wed Aug  7 09:32:11 2024
*nat
:PREROUTING ACCEPT [60:5405]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [1096:50947]
-A PREROUTING -i eth0 -p tcp -j DNAT --to-destination 192.168.1.1
-A POSTROUTING -o tap1_0 -p tcp -d 192.168.1.1 -j MASQUERADE

ध्यान दें: सभी पोर्ट की अनुमति देने से सुरक्षा समस्याएं उत्पन्न होती हैं। अनुशंसा की जाती है कि सभी पोर्ट को DROP करें और फिर केवल अपनी पसंद के कुछ को FORWARD करें।

iptables चेन को सहेजें और नवीनीकृत करें।

root@kitploit:~
service netfilter-persistent reload

अब आप होस्ट के बाहर से इसे एक्सेस कर सकते हैं। Access outside host

कमजोरियाँ

शोषण करने के लिए कई एंडपॉइंट हैं। उनमें से 2 cfg_manager बाइनरी के अंदर हैं। मैं केवल 1 का प्रदर्शन करता हूं, दूसरा मैं आपको स्वयं समझने देता हूं।

बाइनरी को अपने पसंदीदा डीकंपाइलर में डालें, सभी system कमांड की जाँच करें, आप यह देख सकते हैं। कमांड /etc/lanconfig.sh नामक एक फ़ाइल चलाता है।

System command runs a file

अन्य स्थानों की जाँच करना जो इस फ़ाइल का उपयोग कर सकते हैं, मैंने एक ऐसा स्थान पाया जहाँ हम फ़ाइल लिख सकते हैं।

File write

इसके कार्य की व्याख्या:

  • फ़ंक्शन /etc/lanconfig.sh खोलता है
  • यह एक फ़ंक्शन mxmlElementGetAttr को कॉल करता है जो मेरे अनुसार किसी ऑब्जेक्ट से एक विशेषता ढूंढता है, यह सीधे या अप्रत्यक्ष रूप से HTTP अनुरोध से हो सकता है, यह XML हो सकता है।
  • यह mxmlElementGetAttr से प्राप्त विशेषताओं से एक स्ट्रिंग बनाने के लिए sprintf का उपयोग करता है।
  • फिर यह फ़ाइल में लिखने के लिए fputs का उपयोग करता है।

तुरंत, मैंने वेब फ़ोल्डर boaroot में IP, netmask से संबंधित किसी भी चीज़ की खोज की और यह पाया। boa वेबसर्वर के लिए दस्तावेज़ीकरण अत्यंत सीमित है, मैं केवल अनुमान लगा सकता हूं कि यह POST पैरामीटर lan_ip1 को IP पैरामीटर में एक XML में डालता है जो बाइनरी से कॉल किया जाता है।

Bug entrypoint

इंटरफ़ेस पर, हम वह अनुरोध पा सकते हैं जो बग को ट्रिगर करता है। यह सेटिंग्स > नेटवर्क पर है।

Network Setting location Network Setting UI

जब हम Save दबाते हैं तो Burpsuite के साथ अनुरोध को इंटरसेप्ट करें।

Burp intercept and hack

पेलोड 192.168.1.1;utelnetd -p 8090 -l /bin/sh; एक रिवर्स शेल है। हम इसे कनेक्ट कर सकते हैं।

alt text

बोनस

समान, FAT से बेहतर हो सकता है, अभी तक प्रयास नहीं किया है -> FirmAE.

Binary Ninja की कीमत केवल 74$ है यदि आपके पास छात्र स्थिति है। लाइसेंस किसी के साथ साझा किया जा सकता है।

CVE से संबंधित अन्य बग:

CVE

यह भी RCE की ओर ले जा सकता है, मैं इसे आपको स्वयं करने के लिए छोड़ूंगा। उस स्थान data_4c0160 पर मेमोरी कहीं इंजेक्ट की जा सकती है 🫡।

CVE2

Thank you

संदर्भ

  • https://bbs.kanxue.com/thread-278413.htm
  • https://secnigma.wordpress.com/2022/01/18/a-beginners-guide-into-router-hacking-and-firmware-emulation/
  • https://www.ringzerolabs.com/2018/03/the-wonderful-world-of-mips.html
  • https://sheran.sg/blog/cross-compile-gdb-for-mips/
  • https://boschko.ca/qemu-emulating-firmware/
  • https://wiki.bi0s.in/hardware/firmware/firmware-re/
  • https://www.digitalocean.com/community/tutorials/how-to-forward-ports-through-a-linux-gateway-with-iptables
  • https://www.youtube.com/watch?v=7W5YC8kenZE
टूल डाउनलोड करें