
PoC para Responsive Filemanager < 9.12.0 que ignora as restrições de upload levando a RCE
PoC para Responsive Filemanager < 9.12.0 ignorar restrições de upload leva a RCE
Ao fazer upload de um novo arquivo, passamos pela função fix_filename: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L112
Nesta função temos a função strip_tags que procura colchetes e os remove: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/include/utils.php#L581
Então, podemos enviar um arquivo com nome como shell.php<.txt, que será renomeado para shell.php devido à função strip_tags.
Mas, há uma verificação adicional do tipo de arquivo pelo seu conteúdo: https://github.com/trippo/ResponsiveFilemanager/blob/9a7411f3eab3b7d8e2c78dcf40b4325bde2c548d/filemanager/upload.php#L101
Então, não podemos fazer upload do shell php clássico <?php system($_GET['c']);?>. Mas, podemos fazer um pequeno truque: a função get_extension_from_mime funciona com base nos primeiros caracteres do arquivo. Então, se iniciarmos nosso payload com vários caracteres 'a', ele pode ser detectado como tipo txt.
shell.php<.txt

