Vulnerabilità XSS su script Apache PHP

Dec 09 2020

Ho due server CentOS8 che eseguono Apache con MOD_PHP. Abbiamo scoperto che l'aggiunta di una barra alla fine degli URL cambia l'uri di base all'interno degli script creando una vulnerabilità XSS.
Per esempiohttp://myserver.com/Login.php/ o http://myserver.com/Login.php/extra_stuff/fa sì che l'uri di base per i collegamenti e le immagini relativi sia errato. Se extra_stuff contiene javascript, puoi potenzialmente modificare il contenuto della pagina.

Come faccio a impedire ad Apache di trattare gli script PHP come una directory se hanno una barra finale e restituiscono un 404? Preferisco non dover modificare ogni singola pagina per aggiungere un tag.

Ciò che mi confonde è il motivo per cui la configurazione di Apache di seguito corrisponde a uno script PHP con una barra finale e caratteri estranei quando non esiste realmente e lo invia al gestore.

FilesMatch \.(php|phar)$>
    SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

Risposte

JackHandy42 Dec 10 2020 at 22:08

Come spiega @CBroe in un commento :

Non vedo come ciò creerebbe alcuna vulnerabilità, a meno che non si produca attivamente il percorso dell'URL della richiesta da qualche parte. Solo perché l'URL è http://myserver.com/Login.php/extra_stuff/e quello è implicitamente l'URL di base tutti gli URL relativi verranno risolti, non significa che qualsiasi codice JavaScript in esso verrà eseguito. Quando inserisci l'URL nel documento senza alcun trattamento e considerazione, questo può ovviamente essere un problema XSS.

AcceptPathInfo spiega il comportamento. Il codice del fornitore ha effettivamente avuto molti usi non disinfettati di $ _Server ["PHP_SELF"] che ho corretto.