¿Cómo usar la vulnerabilidad XSS para leer el archivo en el servidor?

1

¿Puedo usar una vulnerabilidad XSS para leer archivos en el servidor inyectando código PHP en la página? Ej .: Use document.write para inyectar el código PHP que lee el archivo.

    
pregunta DarkC0de 14.07.2016 - 08:19
fuente

4 respuestas

4

No. XSS hace posible ejecutar Javascript en un navegador de otro usuario. Esto hace posible realizar una solicitud en nombre de ese usuario. Dado que el código solo se ejecuta en el navegador, no puede utilizar el código PHP.

Si tiene XSS y desea ejecutar un código en el servidor, lo mejor sería robar las cookies de un administrador que haya iniciado sesión usando XSS y usar la interfaz de administración para obtener más acceso al servidor. El robo de cookies con XSS no funciona si la cookie está marcada como httponly, porque entonces no puede leer la cookie con Javascript.

    
respondido por el Sjoerd 14.07.2016 - 08:49
fuente
3

Hay una variante de XSS, a veces llamada "Secuencias de comandos entre sitios del servidor". Es mucho menos común que XSS del lado del cliente. De hecho, solo lo he visto una vez en un sitio web en vivo.

Ocurre cuando el servidor procesa documentos HTML. Esto puede suceder cuando el servidor produce un PDF (por ejemplo, una factura imprimible) y HTML forma parte de la cadena. Si el atacante puede inyectar etiquetas en este HTML, puede hacer referencia a los recursos locales en el servidor. En el ejemplo que vi, solo era posible incluir imágenes, pero las variantes pueden permitir la inclusión de otros tipos de archivos.

Algunas personas pueden argumentar que esto no es XSS. Es un ejemplo de CWE-610: Referencia controlada externamente a un recurso en otra esfera . Otros ejemplos serían Entidades externas XML y referencias externas de documentos de Word o SVG. Creo que "Server-side XSS" es un nombre razonable, pero estoy abierto a otras sugerencias.

    
respondido por el paj28 14.07.2016 - 09:34
fuente
2

Estás mezclando los scripts que se ejecutan en el servidor y los scripts que se ejecutan en el cliente.

Cuando haces XSS, inyectas el script en el cliente. Por lo general, es JavaScript, pero podría ser VBScript o algún otro lenguaje de scripting de cliente.

No puedes usar document.write para escribir PHP. Esa función es JavaScript, y por lo tanto se ejecuta en el cliente. Escribe en el documento que está utilizando el cliente (por ejemplo, el navegador). Dado que PHP se ejecuta en el servidor, esto no funcionará.

Podría inyectar código PHP si existe una vulnerabilidad en el código del lado del servidor que le permite ejecutar código. P.ej. si tienes algo como esto

eval($_GET['param']);

podría usarlo para ejecutar código PHP arbitrario y robar archivos del servidor. Tal vulnerabilidad es mucho más grave que una vulnerabilidad normal de XSS, pero también es mucho menos común.

    
respondido por el Anders 14.07.2016 - 09:01
fuente
1

Imaginemos que hay una cuenta de administrador en una aplicación web especialmente diseñada y que la cuenta tiene derechos para obtener ciertos archivos del servidor (por ejemplo, si el administrador solicita /getfile.php?filename.txt, el archivo getfile.php devuelve el contenido de "nombre de archivo .TXT"). Luego, podría inyectar ajax-request en el lado del cliente del administrador y solicitar archivos con eso.

    
respondido por el ajajjasjidu 14.07.2016 - 10:03
fuente

Lea otras preguntas en las etiquetas