이번 분석에서는 이전 패치에서 어떤 부분이 미흡했고, 어떻게 우회가 가능한지 살펴보겠습니다.
Vulnerability Detail
Analysis
먼저, 이전에 발생한 CVE-2024-45507 취약점의 패치기록을 살펴보고, 해당 패치를 어떻게 우회할 수 있는지를 살펴보겠습니다.
이전 취약점의 패치 분석
이전에 발생한 CVE-2024-45507 취약점은 외부에 존재하는 악의적인 XML 파일을 공격자가 전달할 수 있고, 이렇게 전달된 XML 파일이 뷰(View)로 로드되어, 해당 뷰에 정의된 Groovy 스크립트가 실행 됨으로써 RCE 취약점을 일으킬 수 있는 취약점입니다.
해당 취약점을 분석하는 과정에서 Exploit을 수행하기 위해 PHP Wrapper 중 php://filter 스트림을 이용 했는데, 이를 활용한 LFI2RCE(Local File Inclusion to Remote Code Execution) 기법에 대해 자세히 알아보겠습니다.
PHP Wrapper 란?
PHP에서는 다양한 데이터 소스(파일, HTTP 요청, FTP 서버, 압축 파일 등)에 대한 일관된 접근 방식을 제공하기 위해 Stream Wrapper 라는 개념을 도입했습니다. 이 스트림 래퍼는 데이터 소스에 접근하기 위한 URL 스타일의 표기법을 사용하며, 프로토콜과 유사한 방식으로 리소스를 식별하고 처리합니다.
Wrapper 종류
Wrapper는 기본적으로 여러 가지 스트림 래퍼를 제공합니다. 해당 래퍼들을 보면 모두 URL 스타일 표기법을 사용하는 것을 볼 수 있으며, 각각의 래퍼는 특정 프로토콜을 나타내는 접두사와 그 뒤에 오는 리소스 경로로 구성되어 있습니다.