
저장형 교차 사이트 스크립팅(XSS) 취약점이 Issabel PBX 버전 4.0.0-6에 존재합니다. 이를 통해 인증된 공격자가 시스템 → 사용자 → 그룹 아래에 있는 그룹 및 설명 입력 필드를 통해 임의의 JavaScript 또는 HTML 코드를 주입할 수 있습니다.
| 필드 | 상세 |
|---|
| CVE 식별자 | CVE-2023-37191 |
| 제품 | Issabel PBX (issabel-pbx) |
| 영향받는 버전 | 4.0.0-6 |
| 취약점 유형 | 저장된 크로스 사이트 스크립팅 (XSS) |
| 심각도 | 중간 |
| 발견일 | 2023년 7월 7일 |
| 발견자 | Sahil Ojha |
| 공급업체 홈페이지 | https://www.issabel.org/ |
| 소스 코드 | https://github.com/IssabelFoundation/issabelPBX |
| 테스트 환경 | Windows |
Issabel PBX 4.0.0-6 에는 저장된 크로스 사이트 스크립팅 (XSS) 취약점이 존재합니다. 이 애플리케이션은 사용자 입력을 데이터베이스에 저장하고 나중에 브라우저에서 렌더링하기 전에 적절히 이스케이프 또는 인코딩하지 않습니다. 이로 인해 인증된 공격자가 시스템 → 사용자 → 그룹( System → Users → Groups) 에 있는 그룹(Group) 및 설명(Description) 입력 필드를 통해 임의의 JavaScript 또는 HTML 코드를 주입할 수 있습니다.
악성 페이로드가 저장되면 서버에 영구적으로 남습니다. 관리자를 포함한 모든 사용자가 해당 페이지를 방문할 때마다 주입된 스크립트가 브라우저 세션 내에서 자동으로 실행됩니다. 이는 반사형 XSS와 달리 저장형(영구적) XSS의 특징이며, 페이로드가 모든 방문자에게 영향을 미치기 때문에 그 영향이 더 광범위하고 위험합니다.
시스템 → 사용자 → 그룹 모듈그룹(Group) (이름 필드) 및 설명(Description) (텍스트 필드)이 취약점을 성공적으로 악용하면 공격자가 다음과 같은 작업을 수행할 수 있습니다:
페이로드가 서버에 저장되기 때문에 피해 페이지를 방문하는 모든 사용자가 영향을 받으며, 반사형 XSS 공격에 비해 피해가 확대됩니다.
1단계: 관리자 자격 증명을 사용하여 Issabel PBX 웹 인터페이스에 로그인합니다.
2단계: 시스템 → 사용자 → 그룹(System → Users → Groups) 으로 이동합니다. 그룹(Group) 및/또는 설명(Description) 입력 필드에 다음 XSS 페이로드를 입력합니다:
"><script>alert(1)</script>
필드는 아래 스크린샷과 유사하게 보여야 합니다:

3단계: 저장(Save) 을 클릭합니다. 페이로드가 이제 애플리케이션 데이터베이스에 영구적으로 저장됩니다.
4단계: 시스템 → 사용자 → 그룹(System → Users → Groups) 페이지로 다시 이동하거나 (또는 다른 사용자가 방문하도록 합니다). 주입된 스크립트가 브라우저에서 자동으로 실행됩니다. 아래 그림과 같습니다:

이 취약점을 완화하기 위해 Issabel PBX 개발 팀은 다음 수정 사항을 적용해야 합니다:
입력 유효성 검사: 모든 사용자 입력을 서버 측에서 엄격하게 검증합니다. HTML 서식이 필요하지 않은 필드에서 HTML 특수 문자(<, >, ", ', &)가 포함된 값을 거부하거나 삭제합니다.
출력 인코딩: 저장된 데이터를 브라우저에 렌더링할 때 컨텍스트 인식 출력 인코딩(예: HTML 엔티티 인코딩)을 적용하여 주입된 마크업을 무력화합니다. Issabel PBX는 PHP 기반이므로 사용자 정의 필터링 대신 PHP 내장 htmlspecialchars() 또는 htmlentities() 함수를 사용하십시오.
콘텐츠 보안 정책 (CSP): 스크립트가 실행될 수 있는 소스를 제한하는 엄격한 Content Security Policy HTTP 헤더를 구현합니다. 적절히 구성된 CSP는 입력 삭제가 우회되더라도 주입된 스크립트가 실행되는 것을 방지할 수 있습니다.
정기적인 보안 감사: 정기적인 코드 검토 및 침투 테스트를 수행하여 애플리케이션 전체에서 주입 취약점을 식별하고 수정합니다.
이 정보는 교육 및 연구 목적으로만 제공됩니다. 저자는 이 정보의 오용에 대해 책임을 지지 않습니다. 소유하지 않은 시스템의 취약점을 테스트하기 전에 항상 적절한 서면 승인을 받으십시오.