본문 바로가기
One-day 취약점 분석

[CVE-2023-4596] One-day 취약점 분석

by jh117jh 2024. 12. 7.
728x90

1. CVE-2023-4596이란?

CVE ID: CVE-2023-4596

CVSS 심각도 점수: 9.8

영향을 받는 버전: ≤ 1.24.6

 

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

 

https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/forminator/forminator-1246-unauthenticated-arbitrary-file-upload

 

Forminator <= 1.24.6 - Unauthenticated Arbitrary File Upload

Did you know Wordfence Intelligence provides free personal and commercial API access to our comprehensive WordPress vulnerability database, along with a free webhook integration to stay on top of the latest vulnerabilities added and updated in the database

www.wordfence.com

 

2. 환경구축

 

XAMPP 3.3.0, Wordpress 6.6.2, Forminator Forms 1.24.6

 

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

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

 

 

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

 

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

 

 

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

 

3. 분석

 

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

 

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

 

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

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

 

4. POC

 

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

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

 

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

 

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

 

 

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

 

728x90