
PoC para Responsive Filemanager < 9.12.0 que evita las restricciones de subida y conduce a RCE
PoC para Responsive Filemanager < 9.12.0: evasión de las restricciones de subida que conduce a RCE
Al subir un archivo nuevo pasamos por la función fix_filename: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L112
En esta función tenemos la función strip_tags, que busca corchetes y los elimina: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/include/utils.php#L581
Entonces, podemos enviar un archivo con un nombre como shell.php<.txt, que será renombrado a shell.php debido a la función strip_tags.
Pero hay una comprobación adicional del tipo de archivo por su contenido: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L101
Por lo tanto, no podemos subir una shell PHP clásica <?php system($_GET['c']);?>. Pero podemos hacer un pequeño truco: la función get_extension_from_mime funciona basándose en los primeros caracteres del archivo. Entonces, si comenzamos nuestro payload con varios caracteres 'a', puede ser detectado como tipo txt.
shell.php<.txt

