miércoles, 30 de mayo de 2012

Reto 3: Encontrar un XSS

Para superar este reto hay que encontrar uns XSS en esta página

Para encontrar el XSS es necesario utilizar un conversor, como por ejemplo el del blog.

El php que recibe los datos del usuario realiza estos pasos para filtrar los datos y asegurarlos:

$nombre = urldecode($nombre);
$nombre = str_replace('script','',$nombre);
$nombre = str_replace('<','',$nombre);
$nombre = str_replace('>','',$nombre);
$nombre = htmlspecialchars($nombre);
$nombre = addslashes($nombre);

En principio parece que se filtra bien la entrada del usuario y que no existe peligro de una vulnerabilidad XSS.
La clave para encontrar el XSS es utilizar la codificacion hexadecimal ya que es interpretada correctamente por los navegadores.
Si codificamos \alert(1)\ obtendremos %3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E
Si introducimos esto en el formulario y pulsamos en el enlace obtendremos un html con el codigo alert(1)/,
Como podemos decucir del html nos están eliminando los caracteres < , > y script,
Para conseguir saltarnos esto lo que podemos hacer es codificar dos veces \alert(1)\ lo que nos daría %25%33%43%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%45%25%36%31%25%36%43%25%36%35%25%37%32%25%37%34%25%32%38%25%33%31%25%32%39%25%33%43%25%32%46%25%37%33%25%36%33%25%37%32%25%36%39%25%37%30%25%37%34%25%33%45
Si introducimos esto último conseguimos ejecutar nuestro pequeño script.

miércoles, 2 de mayo de 2012

Google App Engine

Google App Engine es un servicio de alojamiento web que proporciona Google "de forma gratuita", y que permite ejecutar aplicaciones sobre los servidores de Google. Nos permite crear y ejecutar aplicaciones web sobre un dominio de la forma http://dominio.appspot.com/.

Según la documentación "todas las aplicaciones pueden utilizar hasta 500 MB de almacenamiento y suficiente CPU y ancho de banda como para permitir un servicio eficaz de alrededor de cinco millones de visitas a la página al mes, sin coste alguno" .Yo no lo utilizaría para algún proyecto serio, pues no me gusta que Google tenga tanto poder sobre mi, pero la verdad es que para crear pequeñas aplicaciones o como entorno de pruebas está genial.

Se pueden crear aplicaciones sobre Java, Python 2.5 o Python 2.7, y yo por supuesto siempre recomendaré Python. El típico hola mundo en Python sería así:

#!/usr/bin/env python
import webapp2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        self.response.out.write('Hello world!')

app = webapp2.WSGIApplication([('/', MainHandler)],debug=True)

Utilizando el servicio me he creado un pequeño codificador/decodificador en Python.
 
Para añadirla a algún sitio web basta con este código html:

<iframe src="http://conversor-py.appspot.com/" frameborder="0" scrolling="no" height="185" width="269"></iframe>

Y si queréis echarle un vistazo al código fuente lo tenéis aquí: código fuente