
Issabel pbxapi의 CVE-2026-89026을 악용하기 위해 하드코딩된 HS256 JWT를 위조하는 Python PoC로, originate 엔드포인트를 통해 인증되지 않은 원격 OS 명령 실행을 가능하게 합니다.
Issabel pbxapi 하드코딩된 JWT RCE POC
Issabel Framework pbxapi — 인증되지 않은 JWT 위조(하드코딩된 HS256 키) 후 Application=System과 함께 GET /pbxapi/manager/originate를 호출하여 Asterisk 사용자 권한으로 OS 명령을 실행합니다. 커밋 b97dbaf에서 패치되었습니다(/etc/issabel.conf에서 키를 로드). Shadowserver는 2026-09-09부터 악용을 확인했습니다.
허가된 테스트 전용입니다. 소유하지 않았거나 테스트 권한이 없는 시스템에 대해 실행하지 마십시오.
요구 사항: Python 3, 표준 라이브러리만 사용.
python3 cve-2026-89026-issabel-pbxapi-jwt-rce.py -u https://TARGET --test --insecure
python3 cve-2026-89026-issabel-pbxapi-jwt-rce.py -u https://TARGET --read /etc/passwd --insecure
python3 cve-2026-89026-issabel-pbxapi-jwt-rce.py -u https://TARGET --cmd id --insecure
python3 cve-2026-89026-issabel-pbxapi-jwt-rce.py -u TARGET --test
| 플래그 | 기능 |
|---|
-u / --url | Issabel 기본 URL (필수). http:// 또는 https://. 스킴이 없는 호스트명은 HTTPS를 먼저 시도한 후 HTTP를 시도합니다. http→https 리다이렉트는 POST를 유지합니다. 잘못된 TLS 인증서는 verify 없이 재시도됩니다. --insecure는 처음부터 verify를 건너뜁니다(Issabel은 종종 자체 서명 인증서를 사용합니다) |
--test | /pbxapi를 핑거프린팅하고 위조된 admin JWT가 수락되는지 증명합니다. originate 없음 / 명령 없음 |
--read PATH | System을 통해 cp PATH를 웹 루트로 실행한 후 파일을 GET합니다(이것이 /etc/passwd를 보는 방법입니다) |
--cmd CMD | GET /pbxapi/manager/originate?application=System&data=CMD. AMI는 stdout을 반환하지 않습니다 — 파일을 보려면 --read를 사용하십시오 |
--channel | Channel originate (기본값 Local/s@default) |
--insecure | TLS verify 건너뛰기 |
--timeout | HTTP 타임아웃 초 (기본값 30) |
--test 엔드포인트: Authorization 없이 GET /pbxapi/ (403 예상), 그런 다음 Authorization: Bearer <forged JWT>와 함께 동일한 URL. controllers / manager를 나열하는 200 JSON(또는 인증 후 AMI 연결 JSON)은 VULNERABLE입니다. originate를 호출하지 않습니다.
인증: 공격자에게는 없습니다. API는 Bearer JWT 인증이 있다고 생각합니다. 패치 전 pbxapi/index.php는 JWT_KEY를 모든 설치에 컴파일된 문자열로 설정합니다. PoC는 해당 키로 {iat, exp, data.name=admin}에 HS256 서명합니다. 패치 후 키는 /etc/issabel.conf의 base64_decode(pbxapijwtsecret)이며 기본 토큰은 거부됩니다(NOT_VULNERABLE).
Stdout: PBXAPI, VULNERABLE, NOT_VULNERABLE, NOT_FOUND, HANDLER, HTTP.

CVE: CVE-2026-89026. Credit: Shadowserver Foundation / VulnCheck. Patch: b97dbaf.