¿Es posible falsificar una solicitud de publicación?

10

Considere la siguiente URL http://mysite.com/form?date=x . Supongamos que si x tiene un formato incorrecto, se devuelve una página con <p>x is not a valid date</p> , donde el autor de la página ha olvidado escapar de la variable x . Supongamos que x se escapa correctamente en todas las demás ubicaciones.

Es posible crear un enlace malicioso que podría insertar Javascript arbitrario con acceso a las credenciales del usuario. ¿Qué pasa si el sitio requiere un POST en lugar de un GET? ¿Habría alguna forma de explotar este agujero de seguridad?

ACTUALIZACIÓN : se modificó la situación para que fuera más realista y se eliminaron las referencias irrelevantes al clickjacking

    
pregunta Casebash 13.10.2011 - 06:58
fuente

3 respuestas

10

Clickjacking es un ataque que engaña al usuario para hacer clic en algo que no conoce . Generalmente se hace cargando la página atacada en un iframe transparente. Este iframe se desplaza a la ubicación correcta y se mantiene debajo del puntero del mouse.

Una función que a menudo es atacada por Clickjacking es el botón me gusta de Facebook .

Mientras que el clickjacking funciona para POST, un simple ataque no permite que el atacante manipule la URL o los parámetros del formulario.

falsificación de solicitud entre sitios es el nombre del ataque que utiliza el sitio vulnerable como objetivo de un formulario en el sitio del atacante. Este formulario puede ser totalmente invisible y enviado a través de JavaScript automáticamente. Todos los navegadores comunes incluirán la cookie de sesión para el sitio de destino en la solicitud.

Los ataques de falsificación de solicitud entre sitios se evitan agregando un campo de formulario oculto con un valor aleatorio . A menos que haya otras vulnerabilidades, un ataque CSRF se realiza a ciegas, por lo que el atacante no puede leer ese valor oculto.

En su caso, incluso si el formulario está protegido con un token de prevención CSRF aleatorio, aún debe corregir el error de secuencias de comandos cruzadas porque puede haber otras vulnerabilidades. El atacante puede ser muy creativo al combinar vulnerabilidades menores para un exploit completo .

    
respondido por el Hendrik Brummermann 13.10.2011 - 08:54
fuente
8

No necesitas clickjacking. Francamente, no entiendo por qué preguntas por clickjacking; no parece relevante.

Esta es una vulnerabilidad XSS muy estándar, y una vez que un sitio tiene una vulnerabilidad XSS como esta, se pierde la seguridad del sitio. Si el sitio tiene una vulnerabilidad XSS, el clickjacking no es relevante (no hay razón para que los atacantes se molesten en hacer clickjacking).

Todavía es igual de vulnerable, si el sitio requiere que venga como un POST. Por ejemplo, el atacante puede construir un formulario y usar Javascript para enviarlo automáticamente.

Probablemente lo mejor sea hacer un poco de lectura de fondo sobre XSS (secuencias de comandos entre sitios).

    
respondido por el D.W. 13.10.2011 - 09:09
fuente
4
<form method=POST action=http://vulnerablesite.com/>
  <input type=hidden name=q value=evil-content>
</form>

<script>document.forms[0].submit()</script>

recargará la página al contenido de una POST entre sitios que incluye parámetros POST arbitrarios sin ninguna interacción del usuario; el atacante solo debe poder hacer que el usuario cargue una página que controle.

Preguntó si "es posible crear un enlace malicioso que podría insertar Javascript arbitrario". Sí, en el ejemplo que presentó, el formulario se vería así:

<form method=POST action=http://mysite.com/form>
  <input type=hidden name=date value="&lt;script&gt;alert(1)&lt;script&gt;">
</form>
<script>document.forms[0].submit()</script>

La creación de dicha página web y la dirección de los usuarios a este enlace malicioso enviaría <script>alert(1)</script> como valor de parámetro date . Si no se escapó correctamente (como mencionó en la pregunta), acaba de explotar la forma más sencilla de XSS .

    
respondido por el Mike Samuel 13.10.2011 - 23:21
fuente

Lea otras preguntas en las etiquetas