Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
exim-rce-cve-2018-6789 — यह रिपॉजिटरी यह समझने के लिए एक सीखने का वातावरण प्रदान करती है कि CVE-2018-6789 के लिए Exim RCE एक्सप्लॉइट कैसे काम करता है। | Kitploit
उपकरण/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
भेद्यता विश्लेषणशोषणडीबगर्सलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

यह रिपॉजिटरी यह समझने के लिए एक सीखने का वातावरण प्रदान करती है कि CVE-2018-6789 के लिए Exim RCE एक्सप्लॉइट कैसे काम करता है।

रिपॉजिटरी देखें
117172 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Exim RCE (CVE-2018-6789) सीखने का वातावरण

विवरण

यह Exim RCE (CVE-2018-6789) की जाँच करने के लिए एक वातावरण तैयार करने हेतु फ़ाइलों, स्क्रिप्ट्स, नोट्स, ... का एक समूह है। इसका उपयोग Exim को डीबग करने, एक्सप्लॉइट लिखने, Exim फ़ंक्शन कॉल्स को ट्रेस करने, Exim के कस्टम मेमोरी प्रबंधन (storeblocks) के बारे में जानने, यह पता लगाने के लिए किया जा सकता है कि वास्तविक दुनिया का एक्सप्लॉइट कैसे काम करता है, ...

इसका उपयोग केवल शैक्षणिक उद्देश्यों के लिए किया जाना चाहिए!

आवश्यकताएँ

  • libvirt/KVM के साथ Vagrant (vagrant-libvirt प्लगइन)
  • Docker (केवल यदि आप Docker को अपने होस्ट पर चलाने का निर्णय लेते हैं, न कि Vagrant VM के अंदर)

सेटअप

Exim का सोर्स कोड डाउनलोड करने के लिए यह निष्पादित करें

$ git submodule update --init

VM

रूट निर्देशिका में एक Vagrantfile है। यह वर्चुअलाइज़ेशन प्रदाता के रूप में libvirt का उपयोग करता है। बॉक्स को box_url के माध्यम से सीधे Fedora के मिरर से खींचा जाता है क्योंकि 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 में मैप करता है। Exim के लिए Docker इमेज बनाने और चलाने के लिए निम्न कमांड अपने VM के अंदर (vagrant ssh) दर्ज करें

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

पहली बार इसमें अधिक समय लगेगा क्योंकि Exim को स्रोत से बनाया जाएगा। यदि आप डीबगिंग स्क्रिप्ट या अन्य फ़ाइलों को संशोधित करते हैं जिन्हें डॉकर कंटेनर में कॉपी किया जाएगा, तो आप Docker इमेज को फिर से बनाने के लिए हमेशा ./scripts/reset_docker.sh का उपयोग कर सकते हैं। निश्चित रूप से, आप स्क्रिप्ट से आवश्यक पंक्तियों को काटकर उन्हें अलग-अलग कमांड के रूप में भी चला सकते हैं।

जब सब कुछ हो जाए, तो आपको एक रूट कंसोल दिखाई देना चाहिए:

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

अजीब स्ट्रिंग्स आपकी मशीन पर अलग दिख सकती हैं, लेकिन अब आप अपने होस्ट मशीन पर Fedora VM में चल रहे Debian Docker कंटेनर में हैं।

VM और कंटेनर का उपयोग

सबसे पहले, आप दो टर्मिनल विंडो में vagrant ssh के साथ दो SSH सत्र बना सकते हैं। एक का उपयोग एक्सप्लॉइट चलाने और SMTP के माध्यम से Exim के साथ बातचीत करने के लिए किया जा सकता है। दूसरे का उपयोग Docker कंटेनर के भीतर Exim को शुरू करने, चलाने, डीबग करने, ... के लिए किया जाता है। VM में ASLR अक्षम है ताकि आप विश्वसनीय ब्रेकपॉइंट सेट कर सकें जो डीबगिंग सत्रों के दौरान नहीं बदलते हैं।

उदाहरण सत्र:

पहला टर्मिनल:

$ 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 स्क्रिप्ट को चल रहे Exim डेमॉन प्रोसेस में gdb संलग्न करना चाहिए और आपको इस तरह का आउटपुट देना चाहिए:

...
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 फ़ाइल से आते हैं। आप प्रोसेस को बाधित करने और gdb को नियंत्रण देने के लिए Ctrl+C का उपयोग कर सकते हैं। आप यह परीक्षण करने के लिए प्रदान की गई एक्सप्लॉइट स्क्रिप्ट में से एक भी चला सकते हैं कि सब कुछ अपेक्षा के अनुसार काम कर रहा है या नहीं:

पहला टर्मिनल:

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

दूसरा टर्मिनल:

टूल डाउनलोड करें