Pregunta

Actualmente estoy tratando de pasar el cumplimiento de PCI para uno de los sitios de mi cliente, pero la compañía de pruebas son se podría poner una vulnerabilidad que no entiendo!

El (sitio eliminado) detalles de la compañía de pruebas son los siguientes:

El problema aquí es un cross-site la vulnerabilidad de scripting que es comúnmente asociado con el comercio electrónico aplicaciones. Una de las pruebas anexa un guión inofensivo en un GET solicitud en el final de la su sitio url. Se marca como cross-site la vulnerabilidad de secuencias de comandos porque este mismo guión que se ha introducido por el usuario (nuestro escáner) fue devuelto por el unsanitized servidor en la cabecera. En este caso, el guión fue devuelto en la cabecera por lo que nuestro escáner señaló la vulnerabilidad.

Aquí está la prueba me encontré de mi terminal para duplicar este:

GET /? OsCsid =% 22% 3E% 3Ciframe% 20src = foo% 3E% 3C / iframe% 3E HTTP / 1.0 host: (eliminado)

HTTP/1.1 302 Found
Connection: close
Date: Tue, 11 Jan 2011 23:33:19 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://www.(removed).co.uk/index.aspx?osCsid="><iframe src=foo></iframe>
Set-Cookie: ASP.NET_SessionId=bc3wq445qgovuk45ox5qdh55; path=/; HttpOnly
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 203

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
</body></html>

La solución a este problema consiste en la entrada del usuario esterilice en estos tipos de solicitudes, por lo que seguro que los personajes podría desencadenar scripts ejecutables son no se devuelve en el encabezado o página.

En primer lugar, no puedo conseguir el resultado que el probador hizo, solamente siempre devuelve una cabecera 200 que no incluye la ubicación, ni va a devolver la página movido objeto. En segundo lugar, no estoy seguro de cómo (en IIS 6) para detener lo va a devolver un encabezado con la cadena de consulta en ella! Por último, ¿por qué código en la materia cabecera, sin duda navegadores sería en realidad no ejecutar código de la cabecera HTTP?

¿Fue útil?

Solución 2

Resultó que tengo una Response.redirect de las páginas que se accede por https, que no necesitan ser seguros y esto fue devolviendo el lugar como parte de la redirección. El cambio de este a:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", Request.Url.AbsoluteUri.Replace("https:", "http:"));
Response.End();

Se ha solucionado el problema

Otros consejos

Solicitud: GET /?osCsid=%22%3E%3Ciframe%20src=foo%3E%3C/iframe%3E HTTP/1.0 Host:(removed)

El <iframe src=foo></iframe> es la cuestión aquí.

texto de respuesta:

 <html><head><title>Object moved</title></head><body>
 <h2>Object moved to <a href="http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>">here</a>.</h2>
 </body></html>

El enlace de respuesta es:

  http://www.(removed).co.uk/index.aspx?osCsid=&quot;>&lt;iframe src=foo>&lt;/iframe>

¿Qué contiene el contenido de la cadena de la solicitud.

Básicamente, alguien puede enviar a otra persona un enlace donde su osCsid contiene texto que permite que la página se represente de una manera diferente. Es necesario asegurarse de que los filtros de entrada o osCsid desinfecta contra las cosas que podrían ser así. Por ejemplo, podría proporcionar una cadena que me permite cargar en cualquier javascript que quiero, o hacer que la página hacen totalmente diferente.


Como nota al margen, se trata de pasar su navegador a tal página que no existe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top