Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
exim-rce-cve-2018-6789 — يوفر هذا المستودع بيئة تعليمية لفهم كيفية عمل استغلال RCE في Exim لثغرة CVE-2018-6789. | Kitploit
أدوات/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
تحليل الثغرات الأمنيةالاستغلالمصممي الأخطاءالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

يوفر هذا المستودع بيئة تعليمية لفهم كيفية عمل استغلال RCE في Exim لثغرة CVE-2018-6789.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

بيئة تعلّم Exim RCE (CVE-2018-6789)

الوصف

هذه مجموعة من الملفات والنصوص البرمجية والملاحظات... لإعداد بيئة للتحقيق في ثغرة Exim RCE (CVE-2018-6789). يمكن استخدامها لتنقيح أخطاء Exim، وكتابة الاستغلالات، وتتبّع استدعاءات دوال Exim، والتعرّف على نظام إدارة الذاكرة المخصص في Exim (storeblocks)، ومعرفة كيفية عمل استغلال حقيقي في العالم الواقعي، ...

يجب استخدامها لأغراض أكاديمية فقط!

المتطلبات

  • Vagrant مع libvirt/KVM (إضافة vagrant-libvirt)
  • Docker (فقط إذا قررت تشغيل Docker على مضيفك وليس داخل جهاز Vagrant الافتراضي)

الإعداد

نزّل الكود المصدري لـ Exim بتنفيذ الأمر التالي

$ git submodule update --init

الجهاز الافتراضي (VM)

يوجد ملف Vagrantfile في الدليل الجذر. يستخدم libvirt كمزوّد للافتراضية (virtualization provider). يتم سحب الصندوق (box) مباشرة من مرآة Fedora عبر box_url لأن تنزيلات Vagrant Cloud معطّلة حالياً (ترحيل HCP)؛ تنشر Fedora صناديق libvirt و VirtualBox فقط هناك (بدون VMware)، و box_url المباشر خاص بالمزوّد، لذا يستهدف هذا الإعداد libvirt فقط.

# -*- mode: ruby -*-
# vi: set ft=ruby :

memory = 8192 # in MiB
cpus = 4

Vagrant.configure("2") do |config|
  # Vagrant Cloud downloads are broken; pull the box from Fedora's mirror
  config.vm.box = "fedora-44-cloud-base"
  config.vm.box_url = "https://download.fedoraproject.org/pub/fedora/linux/releases/44/Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt-44-1.7.x86_64.vagrant.libvirt.box"

  config.vm.provider "libvirt" do |lv|
    lv.memory = memory
    lv.cpus = cpus
  end

  config.vm.provision "shell", inline: <<-SHELL
  	/vagrant/scripts/setup_vm.sh
  SHELL
end

يمكنك تغيير الإعداد كما تشاء، ولكن ضع في اعتبارك أنه على سبيل المثال يستخدم سكربت setup_vm.sh أداة dnf لتثبيت الحزم. إذا كنت تريد استخدام Ubuntu فيجب عليك استبدال أسطر dnf install بـ apt-get install وتعديل أسماء الحزم وفقاً لذلك. ومع ذلك، لا يوجد ضمان بأن يعمل الإعداد بشكل صحيح.

عندما تكون راضياً عن إعدادك، شغّل فقط:

$ vagrant up

لإعداد الجهاز، وبعد ذلك:

$ vagrant ssh

للاتصال به. إذا كنت لا تعرف كيفية استخدام Vagrant فاطّلع هنا: https://www.vagrantup.com/intro/getting-started/

حاوية Docker

يقوم Vagrant بربط الدليل الحالي (أي المستودع الذي استنسخته للتو) كدليل مشترك في /vagrant. لإنشاء وتشغيل صورة Docker الخاصة بـ Exim، أدخل الأوامر التالية داخل جهازك الافتراضي (vagrant ssh)

[vagrant@localhost ~]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh

ستستغرق المرة الأولى وقتاً أطول بكثير لأن Exim سيُبنى من المصدر. إذا عدّلت نصوص تنقيح الأخطاء أو ملفات أخرى سيتم نسخها إلى حاوية docker، يمكنك دائماً استخدام ./scripts/reset_docker.sh لإعادة بناء صورة Docker. وبالتأكيد يمكنك أيضاً اقتطاع الأسطر اللازمة من السكربت وتشغيلها كأوامر منفردة.

عند انتهاء كل شيء يجب أن ترى وحدة تحكم جذرية (root console):

Successfully tagged exim:latest
787f310ef922a1e519cf8bb47f1c4fed5f510da705e7ceefd48f160c980e969c
root@787f310ef922:/opt#

قد تبدو السلاسل الغريبة مختلفة على جهازك، لكنك الآن داخل حاوية Debian Docker تعمل داخل جهاز Fedora الافتراضي على جهازك المضيف.

استخدام الجهاز الافتراضي والحاوية

أولاً، يمكنك إنشاء جلستَي SSH عبر vagrant ssh في نافذتي طرفية. يمكن استخدام إحداهما لتشغيل الاستغلالات والتفاعل مع Exim عبر SMTP. والأخرى تُستخدم لبدء وتشغيل وتنقيح... Exim داخل حاوية Docker. ASLR معطّل في الجهاز الافتراضي حتى تتمكن من تعيين نقاط توقف (breakpoints) موثوقة لا تتغير أثناء جلسات التنقيح.

جلسة مثال:

الطرفية الأولى:

$ vagrant ssh
[vagrant@localhost vagrant]$

الطرفية الثانية:

$ vagrant ssh
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh
...
# now you are inside the Debian Docker container
root@99296cf63016:/opt# ./run_exim.sh
root@99296cf63016:/opt# ./attach_exim.sh

يخرج سكربت run_exim.sh ويستمر Exim في العمل في الخلفية. يجب أن يُرفق سكربت ./attach_exim.sh أداة gdb بعملية خفير (daemon) Exim الجارية ويعطيك مخرجات مثل هذه:

...
pwndbg: loaded 170 commands. Type pwndbg [filter] for a list.
pwndbg: created $rebase, $ida gdb functions (can be used with print/break)

Attaching to process 14
Reading symbols from /usr/exim/bin/exim-4.89_1-1-fc6d6586-XX-1...done.
...
0x00007ffff6b7f5e3 in __select_nocancel () at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
Breakpoint 1 at 0x5555555c03d2: file smtp_in.c, line 1762.
Breakpoint 2 at 0x5555555c051d: file smtp_in.c, line 1884.
Breakpoint 3 at 0x55555556a2c8: file base64.c, line 154.
Breakpoint 4 at 0x5555555c6aca: file smtp_in.c, line 3690.

Exim يعمل وينتظر الطلبات. نقاط التوقف المضبوطة تأتي من ملف debugging/breakpoints. يمكنك استخدام Ctrl+C لمقاطعة العملية وإعطاء التحكم إلى gdb. يمكنك أيضاً تشغيل أحد سكربتات الاستغلال المرفقة لاختبار ما إذا كان كل شيء يعمل كما هو متوقع:

الطرفية الأولى:

[vagrant@localhost ~]$ cd /vagrant/sploits/
[vagrant@localhost sploits]$ ./sploit_0.py
[+] Opening connection to localhost on port 25: Done

الطرفية الثانية:

تنزيل الأداة