¿Es posible falsificar la solicitud posterior y omitir maxlength en el cuadro de entrada?

4

Tengo un cuadro de entrada con maxlength=12 , y ese cuadro de entrada es vulnerable a xss.

Pero debido a maxlength 12, no es posible construir ningún vector xss realmente válido. La entrada del usuario se almacena en el atributo value="user input" . Cuando el usuario intercepta la solicitud de publicación con burpproxy, puede cambiar los parámetros de publicación y provocar xss.

Ahora mi pregunta es que es posible realizar una solicitud de publicación desde otro sitio que omita el elemento maxlength. En mis intentos de explotar, me lleva a la página donde se encuentra el cuadro de entrada, y corta todo lo que está más allá del 12º carácter.

¿Se puede falsificar esa solicitud de publicación y omitirse la longitud máxima para explotar el problema xss?

Esta es la forma de búsqueda en la página con maxlength:

Este es mi intento de explotarlo desde mi página:

Cuando hago clic en el botón de explotar la página, simplemente me envía de vuelta a la página principal y la entrada se corta en el 12º carácter.

    
pregunta Daniel 18.06.2012 - 17:08
fuente

2 respuestas

4

Sí. Es posible. Maxlenght es un atributo html en el objeto DOM del navegador del cliente.

Maxlenght es significativo solo en el navegador del cliente, no es significativo en el lado del servidor a menos que usted codifique el lado del servidor para validar la longitud de entrada.

Si está utilizando un proxy de intercepción que no crea un objeto DOM, puede omitir fácilmente Maxlength o cualquier otro parámetro y javascripts también.

La omisión se puede realizar a través de un dominio / página web diferente con un atributo html diferente que no impone restricciones en la longitud de entrada para causar XSS.

Parece que el tipo de XSS que está intentando es un defecto XSS no persistente del lado del servidor - La entrada del usuario consiste en un código malicioso que se devuelve en la respuesta del servidor a la solicitud, no se almacena en la aplicación web, por lo que es específico para esa solicitud.

Creo que necesitas mejorar el javascript que estás utilizando para explotar XSS. onmouseover="alert(0)" no puede explotar XSS, es solo una acción local basada en DOM para el navegador del cliente, onmouseover no enviará la entrada al servidor para devolverla al cliente. Su javascript debe enviarse a http://www.site.rs/usersearch.php y el servidor debe devolverlo.

    
respondido por el Kapish M 18.06.2012 - 18:22
fuente
4

maxlength no es una protección, es más bien con fines de usabilidad (que de seguridad). Hay muchas formas de evitar este tipo de protección. La más fácil es crear otro sitio web con formulario, que se envíe a su ubicación.

Cada desinfección / limitación no debe usarse en el lado del cliente. Cada JavaScript o xHTML (como maxlength ) son malos por razones de seguridad. La mejor solución es tener la validación del lado del servidor.

    
respondido por el p____h 18.06.2012 - 18:23
fuente

Lea otras preguntas en las etiquetas