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

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

by jh117jh 2024. 11. 5.
728x90

1. CVE-2023-4300이란?

  CVE-2023-4300은 WordPress용 "Import XML and RSS Feeds" 플러그인의 심각한 취약점으로, 특히 2.1.4 이전 버전에 영향을 미친다.

 

  이 취약점으로 인해 공격자는 업로드된 파일 확장자의 부적절한 필터링을 악용할 수 있으며, 이 결함으로 인해 공격자는 악성 PHP 파일을 서버에 업로드하여 원격 코드 실행(RCE)을 일으킬 수 있다. 이는 관리자 권한이 있는 공격자가 영향을 받는 서버에서 임의의 명령을 실행하여 잠재적으로 WordPress 사이트를 장악하거나 심각하게 손상시킬 수 있음을 의미한다.

https://nvd.nist.gov/vuln/detail/CVE-2023-4300

 

NVD - CVE-2023-4300

CVE-2023-4300 Detail Modified This vulnerability has been modified since it was last analyzed by the NVD. It is awaiting reanalysis which may result in further changes to the information provided. Description The Import XML and RSS Feeds WordPress plugin b

nvd.nist.gov

 

2. 환경 구축

필자는 XAMPP 3.3.0, PHP 7.4.29, Wordpress 6.6.2에서 진행했다.

Wordpress 설치 후, WordPress 사이트에서 Import XML and RSS Feeds 플러그인을 2.1.3 버전으로 설치한다.

해당 버전은 구 버전으로 따로 zip파일을 다운 후 \xampp\htdocs\wordpress\wp-content\plugins 경로에 넣어준다.

그다음, Wordpress에 접속해 해당 플러그인을 활성화하면 설정에서 Import Feed를 확인할 수 있다.

 

 

3. 분석

취약점은 해당 코드에서 일어난다.

moove_save_import_template함수에서는 extension파라미터를 sanitize_text_field함수로 필터링 할 뿐 확장자에 대한 필터링은 존재하지 않는다.

sanitize_text_field란?

사용자의 입력이나 데이터베이스에서 문자열을 정리하는 함수로

  • 잘못된 UTF-8을 확인한다.
  • 단일 < 문자를 엔터티로 변환한다.
  • 모든 태그를 제거한다.
  • 줄 바꿈, 탭 및 추가 공백을 제거한다.
  • 퍼센트로 인코딩된 문자를 제거한다.

이를 통해 특수 문자나 태그, Unicode 등을 방지하여 XSS를 방어할 수 있지만 별도의 확장자에 대한 제한이 없어 php파일을 업로드할 수 있다.

 

4. POC

4.1 XML, RSS파일 업로드

처음 파일을 체크할때는 xml, rss파일만 허용되기 때문에 xml파일을 만들어 체크한다.

에러 메세지 발생

xml 파일을 체크했으면 import할 부분을 선택 후

 

 

post type과 title을 지정하고 취약점이 일어난 부분인 save 기능을 이용하기 위해 SAVE AS TEMPLATE버튼을 누른 후 패킷을 Burp suite로 잡는다.

 

그 후, 해당 패킷을 보면 extension파라미터가 xml이라 되어있는 걸 확인할 수 있는데 이를 php로, file 파라미터를 웹쉘로 변경해 주고 업로드한다.

 

 

4.2 웹쉘 실행

 

올린 template을 선택 하면 해당 파일 경로를 얻을 수 있다.

 

 

해당 경로로 접속 후 명령어를 입력해 보면 RCE 취약점이 일어난 것을 확인할 수 있다.

 

728x90