La banca del mio cliente ha eseguito una conformità PCI sul proprio server Apache / PHP e ha segnalato alcune vulnerabilità XSS che ai miei occhi (certamente non esperti) sembrano essere falsi positivi.
Esempio: forniscono quanto segue come prova
GET {IP ADDRESS}/"><script>alert(document.domain)</script>.html
Questo genera un errore 404 la risposta è il messaggio standard CPanel 404, incluso questo:
<div class="info-heading">
{IP ADDRESS}/"><script>alert(document.domain)</script>.html (port 80)
</div>
Questo mi sembra sicuro secondo la regola OWASP n. 1 - Escape HTML prima di inserire dati non fidati nel contenuto dell'elemento HTML.
Modifica: come indicato nei commenti, sta già utilizzando entità html che sembrano strane, ma è quello che hanno fornito. Anche la versione senza escape sembra sicura:
{IP ADDRESS}/"><script>;alert(document.domain)</script>.htm
Che produce questo output:
<div class="info-heading">
{IP ADDRESS}/%22%3E%3Cscript%3E;alert(document.domain)%3C/script%3E.htm (port 80)
</div>
Un altro un po 'più oscuro è questo esempio:
https://{IP ADDRESS}/category/%27%3bfunc(document.cookie)%3b%27
L'applicazione inserisce componenti dell'URL in variabili javascript, ma sempre come valori quotati.
Questo è nell'output e citato come prova di XSS:
var gCategoryID="';func(document.cookie);'"
In base alla regola di prevenzione OWASP XSS n. 3: l'unico posto sicuro in cui inserire dati non attendibili in questo codice è all'interno di un quotato "valore dati", che ritengo sia quello che stiamo facendo.
Quindi, sono queste vulnerabilità reali che devo correggere? O sembra che li stiano chiamando semplicemente vulnerabilità perché i caratteri appaiono nell'output?
Non sono chiaro su come questi potrebbero essere utilizzati per consentire un attacco XSS effettivo.