Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
exim-rce-cve-2018-6789 — Ce dépôt fournit un environnement d'apprentissage pour comprendre comment fonctionne un exploit RCE Exim pour CVE-2018-6789. | Kitploit
Outils/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
Analyse des VulnérabilitésExploitationDébogueursApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

Ce dépôt fournit un environnement d'apprentissage pour comprendre comment fonctionne un exploit RCE Exim pour CVE-2018-6789.

Voir le dépôt
11717il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Environnement d'apprentissage pour Exim RCE (CVE-2018-6789)

Description

Ceci est un ensemble de fichiers, scripts, notes, ... permettant de mettre en place un environnement pour étudier l'Exim RCE (CVE-2018-6789). Il peut être utilisé pour déboguer Exim, écrire des exploits, tracer les appels de fonction d'Exim, découvrir la gestion mémoire personnalisée d'Exim (storeblocks), comprendre le fonctionnement d'un exploit réel, ...

Il ne doit être utilisé qu'à des fins académiques !

Prérequis

  • Vagrant avec libvirt/KVM (le plugin vagrant-libvirt)
  • Docker (uniquement si vous décidez d'exécuter Docker sur votre hôte et non dans la VM Vagrant)

Installation

Téléchargez le code source d'Exim en exécutant

$ git submodule update --init

VM

Un Vagrantfile se trouve dans le répertoire racine. Il utilise libvirt comme fournisseur de virtualisation. La box est tirée directement du miroir de Fedora via box_url car les téléchargements depuis Vagrant Cloud sont actuellement cassés (migration HCP) ; Fedora ne publie que des boxes libvirt et VirtualBox là-bas (pas de VMware), et un box_url direct est spécifique au fournisseur, donc cette configuration cible uniquement libvirt.

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

memory = 8192 # en MiB
cpus = 4

Vagrant.configure("2") do |config|
  # Les téléchargements depuis Vagrant Cloud sont cassés ; tirer la box du miroir Fedora
  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

Vous pouvez modifier la configuration comme vous le souhaitez, mais gardez à l'esprit que, par exemple, le script setup_vm.sh utilise dnf pour installer les paquets. Si vous voulez utiliser Ubuntu, vous devez remplacer les lignes dnf install par apt-get install et ajuster les noms de paquets en conséquence. Cependant, rien ne garantit que l'installation fonctionnera correctement.

Lorsque vous êtes satisfait de votre configuration, exécutez simplement :

$ vagrant up

pour configurer la machine, puis

$ vagrant ssh

pour vous y connecter. Si vous ne savez pas comment utiliser Vagrant, jetez un œil ici : https://www.vagrantup.com/intro/getting-started/

Conteneur Docker

Vagrant mappe le répertoire courant (c'est-à-dire le dépôt que vous venez de cloner) en tant que répertoire partagé vers /vagrant. Pour créer et exécuter l'image Docker pour Exim, entrez les commandes suivantes dans votre VM (vagrant ssh)

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

La première fois prendra beaucoup plus de temps car Exim sera compilé à partir des sources. Si vous modifiez des scripts de débogage ou d'autres fichiers qui seront copiés dans le conteneur Docker, vous pouvez toujours utiliser ./scripts/reset_docker.sh pour reconstruire l'image Docker. Bien sûr, vous pouvez aussi simplement extraire les lignes nécessaires du script et les exécuter comme des commandes individuelles.

Quand tout est terminé, vous devriez voir une console root :

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

Les chaînes bizarres peuvent être différentes sur votre machine, mais vous êtes maintenant dans un conteneur Docker Debian fonctionnant dans une VM Fedora sur votre machine hôte.

Utilisation de la VM et du conteneur

Tout d'abord, vous pouvez créer deux sessions SSH avec vagrant ssh dans deux fenêtres de terminal. L'une peut être utilisée pour exécuter des exploits et interagir avec Exim via SMTP. L'autre est utilisée pour démarrer, exécuter, déboguer, ... Exim dans le conteneur Docker. L'ASLR est désactivé dans la VM afin que vous puissiez définir des points d'arrêt fiables qui ne changent pas pendant les sessions de débogage.

Exemple de session :

Premier terminal :

$ vagrant ssh
[vagrant@localhost vagrant]$

Deuxième terminal :

$ vagrant ssh
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh
...
# maintenant vous êtes à l'intérieur du conteneur Docker Debian
root@99296cf63016:/opt# ./run_exim.sh
root@99296cf63016:/opt# ./attach_exim.sh

Le script run_exim.sh se termine et Exim s'exécute en arrière-plan. Le script ./attach_exim.sh devrait attacher gdb au processus du démon Exim en cours et vous donner un résultat comme celui-ci :

...
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 est en cours d'exécution et attend les requêtes. Les points d'arrêt définis proviennent du fichier debugging/breakpoints. Vous pouvez utiliser Ctrl+C pour interrompre le processus et donner le contrôle à gdb. Vous pouvez également exécuter l'un des scripts d'exploit fournis pour tester si tout fonctionne comme prévu :

Premier terminal :

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

Deuxième terminal :

Télécharger l’outil