Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
exim-rce-cve-2018-6789 — Este repositório fornece um ambiente de aprendizado para entender como um exploit RCE do Exim para CVE-2018-6789 funciona. | Kitploit
Ferramentas/GitHubGitHub/martinclauss/exim-rce-cve-2018-6789
Análise de VulnerabilidadesExploraçãoDepuradoresAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHubmartinclauss/exim-rce-cve-2018-6789

exim-rce-cve-2018-6789

Este repositório fornece um ambiente de aprendizado para entender como um exploit RCE do Exim para CVE-2018-6789 funciona.

Ver Repositório
11717há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Ambiente de Aprendizagem Exim RCE (CVE-2018-6789)

Descrição

Este é um conjunto de ficheiros, scripts, notas, ... para configurar um ambiente para investigar o Exim RCE (CVE-2018-6789). Pode ser utilizado para depurar o Exim, escrever exploits, rastrear chamadas de funções do Exim, aprender sobre a gestão de memória personalizada do Exim (storeblocks), descobrir como funciona um exploit do mundo real, ...

Deve ser utilizado apenas para fins académicos!

Requisitos

  • Vagrant com libvirt/KVM (o plugin vagrant-libvirt)
  • Docker (apenas se decidir executar Docker no seu host e não dentro da VM Vagrant)

Configuração

Descarregue o código fonte do Exim executando

$ git submodule update --init

VM

Existe um Vagrantfile no diretório raiz. Utiliza libvirt como fornecedor de virtualização. A box é obtida diretamente do espelho do Fedora via box_url porque as transferências do Vagrant Cloud estão atualmente quebradas (migração HCP); o Fedora publica apenas boxes libvirt e VirtualBox lá (sem VMware), e um box_url direto é específico do fornecedor, portanto esta configuração visa apenas libvirt.

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

memory = 8192 # em MiB
cpus = 4

Vagrant.configure("2") do |config|
  # Transferências do Vagrant Cloud estão quebradas; puxar a box do espelho do 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

Pode alterar a configuração conforme desejar, mas tenha em mente que, por exemplo, o script setup_vm.sh usa dnf para instalar pacotes. Se quiser usar Ubuntu, deve substituir as linhas dnf install por apt-get install e ajustar os nomes dos pacotes em conformidade. No entanto, não há garantia de que a configuração funcione corretamente.

Quando estiver satisfeito com a sua configuração, basta executar:

$ vagrant up

para configurar a máquina e depois

$ vagrant ssh

para se conectar a ela. Se não souber como usar o Vagrant, veja aqui: https://www.vagrantup.com/intro/getting-started/

Contentor Docker

O Vagrant mapeia o diretório atual (ou seja, o repositório que acabou de clonar) como um diretório partilhado para /vagrant. Para criar e executar a imagem Docker para o Exim, insira os seguintes comandos dentro da sua VM (vagrant ssh)

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

A primeira vez demorará muito mais porque o Exim será compilado a partir do código fonte. Se modificar scripts de depuração ou outros ficheiros que serão copiados para o contentor docker, pode sempre usar ./scripts/reset_docker.sh para reconstruir a imagem Docker. Certamente, também pode extrair apenas as linhas necessárias do script e executá-las como comandos individuais.

Quando tudo estiver concluído, deverá ver uma consola root:

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

As strings estranhas podem parecer diferentes na sua máquina, mas agora está num contentor Debian Docker a executar dentro de uma VM Fedora na sua máquina host.

Utilização da VM e do contentor

Primeiro, pode criar duas sessões SSH com vagrant ssh em duas janelas de terminal. Uma pode ser usada para executar exploits e interagir com o Exim via SMTP. A outra é usada para iniciar, executar, depurar, ... o Exim dentro do contentor Docker. ASLR está desativado na VM, para que possa definir pontos de interrupção fiáveis que não mudem durante as sessões de depuração.

Exemplo de sessão:

Primeiro terminal:

$ vagrant ssh
[vagrant@localhost vagrant]$

Segundo terminal:

$ vagrant ssh
[vagrant@localhost vagrant]$ cd /vagrant
[vagrant@localhost vagrant]$ ./scripts/reset_docker.sh
...
# agora está dentro do contentor Debian Docker
root@99296cf63016:/opt# ./run_exim.sh
root@99296cf63016:/opt# ./attach_exim.sh

O script run_exim.sh termina e o Exim executa em segundo plano. O script ./attach_exim.sh deve anexar gdb ao processo do daemon Exim em execução e dar-lhe um resultado como este:

...
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.

O Exim está em execução e à espera de pedidos. Os pontos de interrupção que foram definidos vêm do ficheiro debugging/breakpoints. Pode usar Ctrl+C para interromper o processo e dar controlo ao gdb. Também pode executar um dos scripts de exploit fornecidos para testar se tudo está a funcionar como esperado:

Primeiro terminal:

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

Segundo terminal:

Baixar ferramenta