
Plataforma de explotación y pruebas para CVE-2025-2945
Esta es mi investigación sobre CVE-2025-2945. Este repositorio incluye un entorno de prueba con PostgreSQL y pgAdmin vulnerable, y el exploit.
Enlaces útiles:
En el backend de pgAdmin, que está escrito en Python, hay dos endpoints que carecen de una sanitización adecuada. Los endpoints son:
/sqleditor/query_tool/download - parámetro query_commited/cloud/deploy - parámetro high_availabilityVeamos el código de sqleditor:
for key, value in data.items():
if key == 'query':
sql = value
if key == 'query_commited':
query_commited = (
eval(value) if isinstance(value, str) else value
)
Lo que vemos aquí es que el valor de query_commited se pasa directamente a la función eval(). Puedes consultar la documentación de eval.
También observa el código de pgacloud:
def _create_google_postgresql_instance(self, args):
credentials = self._get_credentials(self._scopes)
service = discovery.build('sqladmin', 'v1beta4',
credentials=credentials)
high_availability = \
'REGIONAL' if eval(args.high_availability) else 'ZONAL'
Mismo problema aquí.
Aún se requieren credenciales válidas y acceso a pgAdmin para alcanzar estos endpoints. Pero cualquier atacante que pueda acceder a ellos también puede pasar cualquier valor a eval. Esto equivale a ejecutar cualquier oneliner de Python.
La explotación es bastante directa. Consulta exploit/src/main.py. No olvides actualizar la configuración para obtener una shell inversa.
Para configurar el entorno, ejecuta esto:
cd stand
docker compose up -d
Y eso es todo. Ahora pgAdmin está accesible en http://localhost:8080. Las credenciales por defecto son:
[email protected]
admin
Siéntete libre de editar el archivo .env y stand/init-db/01-init.sql.
prod por I3r1h0n.