
Exploit di esecuzione remota di codice autenticato per il plugin WordPress WP All Import <= 3.6.7 (CVE-2022-1565). Carica file arbitrari tramite una convalida insicura del tipo di file in wp_all_import_get_gz.php.
Ngày: 05 tháng 11 năm 2023
Tác giả khai thác: Việt HÙng (https://github.com/phanthibichtram12)
Trang chủ của nhà cung cấp: https://www.wpallimport.com/
Link phần mềm: https://wordpress.org/plugins/wp-all-import/advanced/ (kéo xuống chọn phiên bản)
Phiên bản: <= 3.6.7 (đã thử nghiệm: 3.6.7)
Đã thử nghiệm trên: WordPress 6.1 (không phụ thuộc vào hệ điều hành vì việc khai thác này KHÔNG cung cấp tải trọng)
CVE: CVE-2022-1565
Il plugin WP All Import è vulnerabile a un caricamento arbitrario di file a causa di una mancata validazione del tipo di file tramite il file wp_all_import_get_gz.php nelle versioni fino alla 3.6.7 inclusa. Ciò consente a un utente malintenzionato autenticato, con privilegi di amministratore o superiori, di caricare file arbitrari sul server del sito interessato, il che può portare all'esecuzione di codice da remoto.
payload_file_name con il nome di questo file (es. "shell.php")zip_file_to_upload con il PERCORSO di questo file (es. "/root/shell.zip")target_url con l'URL di base del target (NON terminare la stringa con una barra /)admin_user con il nome utente dell'account amministratoreadmin_pass con la password dell'account amministratoreget_wpnonce_edit_settings() all'interno della classe PluginSetting.
Questo wpnonce ci permette di modificare le impostazioni del plugin (vedi passo 4)get_wpnonce_upload_file() all'interno della classe PluginSetting.
Questo wpnonce ci permette di caricare il filecheck_if_secure_mode_is_enabled() all'interno della classe PluginSettingpayload_url).
Il metodo chiamato per attivare e disattivare la Modalità Sicura è set_plugin_secure_mode(set_to_enabled:bool, wpnonce:str)upload_file(wpnonce_upload_file: str){"jsonrpc":2.0","error":{"code":102,"message": Vui lòng xác minh rằng tệp bạn tải lên là tệp ZIP hợp lệ."},"is_valid":false,"id" :"nhận dạng"}
Come puoi vedere, segnala un errore con codice 102, ma secondo i test che ho effettuato, il caricamento è stato completato.switch_back_to_secure_mode()activate_payload()Secondo il PoC di questa vulnerabilità fornito da WPSCAN, possiamo recuperare i file caricati accedendo alla "pagina delle importazioni gestite". Non so perché, ma dopo aver caricato qualsiasi file, non riuscivo a vedere il file caricato in quella pagina (forse è necessaria la versione Pro?). Ho dovuto trovare una soluzione alternativa e l'ho fatto sfruttando questa opzione.
Pagina WPSCAN: https://wpscan.com/vulnerability/578093db-a025-4148-8c4b-ec2df31743f7
Durante i test, ho notato che stavo caricando un file XML non valido e per questo non veniva visualizzato nella "pagina delle importazioni gestite"
In ogni caso, questo metodo di disabilitazione della modalità sicura è un po' più "invisibile" perché il contenuto caricato non viene mostrato nella pagina di amministrazione. Se vuoi vedere il file caricato nella pagina di amministrazione, sono necessari più passaggi.
Affinché lo sfruttamento funzioni, considera quanto segue:
target_url e le credenziali dell'amministratoreverify_ssl_certificate su Falseprint_response(http_response) per ulteriori indagini