Post

[CVE-2023-4596] 취약점 분석 보고서

CVE-2023-4596 Forminator Forms 플러그인에서 이미지 확장자 검증에 대한 RCE 취약점

1. CVE-2023-4596이란?

CVE ID: CVE-2023-4596
CVSS 심각도 점수: 9.8
영향을 받는 버전: ≤ 1.24.6

Forminator Forms 플러그인은 1.24.6 이하 버전에서 upload_post_image() 함수에서 파일이 서버에 업로드된 후 발생하는 파일 유형 검증으로 인해 임의의 파일 업로드에 취약하다. 이를 통해 인증되지 않은 공격자가 영향을 받는 사이트의 서버에 임의의 파일을 업로드하여 원격 코드 실행이 가능해질 수 있다.

CVE-2023-4596

2. 환경구축

XAMPP 3.3.0, Wordpress 6.6.2, Forminator Forms 1.24.6

이 취약점은 관리자가 만든 Forminator Form의 이미지 업로드 기능에서 일어나므로

우선 관리자 페이지에 접속해 Form을 만들어준다. 해당 Form은 다양한 기능을 지원한다. 이미지 업로드는 기본 기능으로 있으니 따로 기능을 추가하지 않아도 된다.

image.png

해당 Form을 작성하고 short code를 이용해 글에 추가해주면 된다.

image.png

해당 글 작성 후, 블로그를 확인해보면

image.png

post 기능이 있는 Form이 작성된 걸 확인할 수 있다.

3. 분석

image.png

1.24.6 버전과 1.25.0 버전을 비교해보면

1
2
	// Create the  file on the server.
			file_put_contents( $file, $file_data );

서버에 포스팅하는 기능이 파일 타입 체크하는 기능 밖에 있었던걸 확인 할 수 있다.

그러면 타입 체크와는 무관하게 파일이 서버에 업로드 되므로 해당 업로드 경로를 통해 rce를 발생 시킬 수 있다.

4. POC

image.png

이미지를 업로드 후, 패킷을 잡아 확장자와 웹쉘을 업로드 해준다.

그 후, 업로드를 진행하면 해당 파일의 확장자에 대한 error 메시지가 출력된다.

하지만, 1.24.6 버전은 타입 체크전에 서버에 파일을 올려 버리므로 error메시지와 상관없이 업로드가 진행된다.

해당 파일의 업로드 경로로 이동하면

image.png

webshell.php가 있는 걸 확인 할 수 있다.

image.png

This post is licensed under CC BY 4.0 by the author.