El banco de mi cliente realizó un cumplimiento de PCI en su servidor Apache / PHP e informó sobre algunas vulnerabilidades de XSS que a mi parecer (aparentemente no expertos) parecen ser falsos positivos.
Ejemplo: proporcionan lo siguiente como evidencia
GET {IP ADDRESS}/"><script>alert(document.domain)</script>.html
Esto genera un error 404, la respuesta es el mensaje estándar de CPanel 404, incluido esto:
<div class="info-heading">
{IP ADDRESS}/"><script>alert(document.domain)</script>.html (port 80)
</div>
Esto me parece seguro según la regla OWASP # 1: Escape HTML antes de insertar datos no confiables en el contenido del elemento HTML.
Editar: como se señaló en los comentarios, esto ya está usando entidades html, lo que parece extraño, pero eso es lo que proporcionaron. La versión no escapada también parece segura:
{IP ADDRESS}/"><script>;alert(document.domain)</script>.htm
Que produce esta salida:
<div class="info-heading">
{IP ADDRESS}/%22%3E%3Cscript%3E;alert(document.domain)%3C/script%3E.htm (port 80)
</div>
Otro ejemplo más turbio es este ejemplo:
https://{IP ADDRESS}/category/%27%3bfunc(document.cookie)%3b%27
La aplicación coloca los componentes de la url en variables de javascript, pero siempre como valores citados.
Esto está en la salida, y se cita como evidencia de XSS:
var gCategoryID="';func(document.cookie);'"
De acuerdo con la regla de prevención Nº 3 de OWASP XSS: el único lugar seguro para poner datos no confiables en este código es dentro de un "valor de datos" citado, que creo que es lo que estamos haciendo.
Entonces, ¿son estas vulnerabilidades reales que necesito arreglar? ¿O parece que simplemente los están llamando vulnerabilidades porque los caracteres aparecen en la salida?
No tengo claro cómo podrían usarse para permitir un ataque XSS real.