• I think I found a bug/exploit in the ms-files

    We have spent many hours trying to change the mod_rewrite to handle /files/css/style.css?version=1.0.2 the goal being to force immediate updates to the CSS/javascript as the ttl/expire on them is set to days

    However, we could only change between it serving up mimetype = css?version=1.0.2 or a 404 when it looks for ‘style.css?’

    Upon reviewing the ms-files I found that it calls
    $mime = wp_check_filetype( $_SERVER[ 'REQUEST_URI' ] );
    and
    $mimetype = 'image/' . substr( $_SERVER[ 'REQUEST_URI' ], strrpos( $_SERVER[ 'REQUEST_URI' ], '.' ) + 1 );

    ‘REQUEST_URI’ is the request with query strings, before mod-rewrite renders it. This means that not only does mod_rewrite not impact what ms-files servers up, but also appends query strings to file types which flow through to mimetype. I believe the preferred data should come from the REDIRECT_URL or another server var to at least avoid the query string. Or to check the REQUEST_URI for ‘?’ and chop the query string off.

    if(isset($_SERVER[ 'REDIRECT_URL' ]) && !empty($_SERVER[ 'REDIRECT_URL' ]))
        $filerequested = $_SERVER[ 'REDIRECT_URL' ];
    else
        $filerequested = $_SERVER[ 'REQUEST_URI' ];
    ...
    $mime = wp_check_filetype( $filerequested );
    ...
    $mimetype = 'image/' . substr( $filerequested, strrpos( $filerequested, '.' ) + 1 );

    That way users can mod_rewrite what goes into ms-files, and also helps security as bots passing parameters such as ?command=touch+-235xxx+hackedfile would be dropped preventing exploits

  • The topic ‘ms-files and mod_rewrite’ is closed to new replies.