
अपने D-Link डिवाइस को पैच करें जो CVE-2024-3272 से प्रभावित है
क्या आप उन 92,000+ लोगों1 में से हैं जो CVE-2024-3272 से प्रभावित D-Link NAS से फँसे हुए हैं, और कोई पैच नज़र नहीं आ रहा?
यह टूल स्वयं एक्सप्लॉइट का उपयोग करके कमजोर डिवाइस को पैच करता है।
1: मूल खुलासा संदर्भों में देखें
Dinkleberry एक कमांड निष्पादित करेगा जो कमजोर nas_sharing.cgi फ़ाइल को पैच किए गए संस्करण से बदल देगा - system() कॉल को NOP से ओवरराइट कर देगा।
/usr/local/modules फ़ोल्डर (जहाँ फ़ाइल रहती है) केवल पढ़ने योग्य है, इसलिए इसके बजाय /usr/local/config में एक प्रतिलिपि बनाई जाती है, और /var/www/cgi-bin में सिमलिंक को सुरक्षित संस्करण पर अपडेट किया जाता है।
मैंने केवल system कॉल को NOP करना चुना है ताकि कमांड सामान्य रूप से प्रतिक्रिया दे, बस वास्तव में कुछ भी निष्पादित न करे।
[!NOTE] बूट पर फ़ाइलसिस्टम फ्लैश से पुनः लोड होता है। यह पैच लगाने से केवल तब तक काम करेगा जब तक आप डिवाइस को रीबूट नहीं करते। यदि आप अधिक स्थायी सुधार चाहते हैं, तो आपको फ़र्मवेयर को फिर से फ्लैश करना होगा - शायद Debian के साथ।
aliask:~/git/dinkleberry$ python3 ./src/main.py -h 10:01:02
usage: dinkleberry [-h] [--telnet] [--kill-telnet] [--test] [--verbose] target
positional arguments:
target Target NAS to patch
options:
-h, --help show this help message and exit
--telnet Start telnet server
--kill-telnet Stop telnet server
--test Test if device is vulnerable
--verbose, -v Set this to print debug messages
यदि कोई वैकल्पिक फ़्लैग लागू नहीं किया गया है, तो स्क्रिप्ट पैचिंग करती है।
यदि आप बस डिवाइस पर इधर-उधर देखना चाहते हैं, तो --telnet कमांड का उपयोग करें, जो पोर्ट 23 पर एक टेलनेट सत्र शुरू करता है।
यह बहुत ही असुरक्षित है, लेकिन आपका डिवाइस पहले से ही बहुत ही असुरक्षित है, तो सुविधाजनक शेल लेना बेहतर है।
[!CAUTION] इस उपकरण का उपयोग अपने जोखिम पर करें। यह वास्तविक डिवाइस सॉफ़्टवेयर को संशोधित कर रहा है।
मैं इसके लिए ज़िम्मेदार नहीं हूँ:
- आपके डिवाइस का काम करना बंद करना
- NAS पर संग्रहीत डेटा खोना
- आग लगना
- वह TA जो खुशी-खुशी आपके डिवाइस का शोषण कर रहा था, वह नाराज़ होना
nas_sharing.cgi और libsmbif.so बाइनरीज़ के विश्लेषण के दौरान, यह जल्दी ही स्पष्ट हो गया कि इस डिवाइस का सॉफ़्टवेयर अत्यधिक कमजोर है। इतना कमजोर कि इसे फिर से लिखना ही एकमात्र रखरखाव योग्य समाधान है।
अकेले nas_sharing.cgi में system() के लगभग 80 कॉल हैं - इनमें से कई में उपयोगकर्ता इनपुट के लिए एक मार्ग है। मैंने पैच करने के लिए और छेद खोजने के लिए उन सभी का विश्लेषण करने की जहमत नहीं उठाई, लेकिन यहाँ एक S-स्तरीय उदाहरण है:
/* Why use system() instead of libc fopen/fwrite?
What if you want to write a long string or your filename is long?
Painfully obvious command injection playground 🤦 */
void append_to_file(const char* string, const char* file) {
char s_cmd[1024];
sprintf(s_cmd, "echo %s >> %s", string, file);
system(s_cmd);
return;
}
इन सभी पागलपन भरे system कॉल के अलावा, यहाँ बफर ओवरफ़्लो इतने अधिक हैं कि आप उन पर एक छड़ी से प्रहार नहीं कर सकते - और मैं बहुत सारी छड़ियों से प्रहार कर सकता हूँ।
यह CVE CISA की KEV सूची पर है - यदि आपके पास इंटरनेट पर इनमें से कोई एक चीज़ है, तो इसे ऑफ़लाइन ले जाएँ। अभी।
शायद D-Link की सलाह लें और EOL डिवाइस को बदल दें। लेकिन मैं निश्चित रूप से D-Link उत्पाद नहीं खरीदूंगा।