
PoC per Responsive Filemanager < 9.12.0: bypass delle restrizioni di upload che porta a RCE
PoC per Responsive Filemanager < 9.12.0: bypass delle restrizioni di upload che porta a RCE
Quando si carica un nuovo file si passa attraverso la funzione fix_filename: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L112
In questa funzione c'è la funzione strip_tags che cerca le parentesi e le rimuove: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/include/utils.php#L581
Quindi, possiamo inviare un file con nome shell.php<.txt, che verrà rinominato in shell.php grazie alla funzione strip_tags.
Ma c'è un ulteriore controllo del tipo di file in base al suo contenuto: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L101
Quindi, non possiamo caricare la classica shell php <?php system($_GET['c']);?>. Ma possiamo fare un piccolo trucco: la funzione get_extension_from_mime funziona basandosi sui primi caratteri del file. Quindi, se iniziamo il nostro payload con diversi caratteri 'a', può essere rilevato come tipo txt.
shell.php<.txt

