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
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 취약점이 일어난 것을 확인할 수 있다.
'One-day 취약점 분석' 카테고리의 다른 글
[CVE-2023-4596] One-day 취약점 분석 (0) | 2024.12.07 |
---|---|
[CVE-2024-8236] One-day 취약점 분석 (0) | 2024.12.03 |
[CVE-2024-38687] One-day 취약점 분석 (0) | 2024.11.23 |
[CVE-2023-3460] One-day 취약점 분석 (0) | 2024.11.14 |
[CVE-2023-4521] One-day 취약점 분석 (0) | 2024.11.08 |