
Exploit proof-of-concept per RealPlayer che consente il download arbitrario di file e il directory traversal, portando all'esecuzione remota di codice tramite il metodo Import().
Real Player 'external::Import()' Download arbitrario di file, vulnerabilità di Directory Traversal portano all'esecuzione di codice in remoto
video demo: https://youtu.be/CONlijEgDLc
Real Player utilizza le funzionalità di Microsoft Internet Explorer ed espone proprietà e metodi attraverso un mezzo speciale che è specifico dell'applicazione:
L'oggetto 'external' espone diversi metodi e proprietà personalizzati.
Il metodo 'Import()' viene gestito in modo non sicuro per quanto riguarda il parametro 'Copy to My Music', che consente il download di tipi di file arbitrari; ciò potrebbe essere non sicuro poiché solo i tipi audio/immagine/video dovrebbero essere consentiti per il download sul disco dell'utente. Inoltre non sanitizza correttamente i percorsi dei file, consentendo di collocare file arbitrari in posizioni arbitrarie. Anche se viene visualizzato un errore perché non è in grado di rendere il file scaricato, il file rimane finché l'utente non chiude la finestra di dialogo. Inoltre, quando apre nuove finestre, Real Player cerca una vecchia libreria IE obsoleta (shdoclc.dll), che può essere abusata per eseguire codice automaticamente senza dover attendere il riavvio (vero quando il file viene posizionato nella cartella 'startup').
L'attaccante deve ospitare i file da copiare/scaricare in una condivisione SMB o WebDav. La directory 'appdata' deve essere posizionata nella radice della condivisione.
Inoltre, una condizione di DoS in 'external.PreloadURL()' aiuta a evitare che i file vengano eliminati da Real Player.
Il PoC inserirà 'shdoclc.dll' (contiene un semplice codice per eseguire 'cmd.exe' in 'DllMain()' a scopo dimostrativo) nella cartella 'windowsapps' dell'utente e 'write.exe' nella cartella 'startup', quindi funziona universalmente (qualsiasi versione di Windows dalla XP fino alla 11).
testato su RP ver. 16.00.282, 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309