Bueno como muchos de ustedes, y sobre todo si leen svcommunity

saben en la creacion de sitios web de contenido dinamico hay que tomar muchas precauciones de lo que recibimos de nuestros usuarios, una de las cosas que siempre me gusta hacer cuando desarrollo alguna aplicacioncita web es tratar lo más que se pueda de protegerla de los posibles trucos que los usuarios pueden intentar con nuestros sitios, y tambien de la misma manera cada vez que veo un sitio de alguna importancia de el salvador me gusta correrle algunos tests de la seguridad que puedan tener.
Pues el dia de ayer hice un poquito de pruebas y el sitio elegido como ya se imaginaron fue arrobadeoro.com elsalvador.
* Primero nos encontramos con un registro por medio de correo que cuenta con un sistema de captcha
[1] para el registro y validaciones de correo, validacion de formato de celular, y cosas asi por el estilo, muy buena primera impresion se han tomado la molestia de validar el registro más o menos.
* Luego la contraseña es enviada a el correo , vale la pena ver que no hay manera de cambiarla o cambiar datos personales en el sitio por cualquier error o que sabemos, lo unico que les interesa es tu voto y tu comodidad de cambiar la contraseña no les importa.
* Bueno se nos ha enviado un correo con un link de la siguiente manera:
http://www.arrobadeoro.com/2007/SV/votar.asp?user=Escriba%20su%20correo&pass=XXXXXXXXXX
y de esta manera nos envia a el login de el sitio y automaticamente en los input pone el texto que se envio en el link, queda la pregunta, podriamos hacer xss injection ? , validaron que lo que venia de el usuario no fuera cualquier cosa ?
Que pasaria si en lugar de ese link ponemos algo como:
http://www.arrobadeoro.com/2007/SV/votar.asp?user=Escriba%20su%20correo&pass=XXXXXXXXXX" size="26" maxlength="50"></td><tr><td>HOLAMUNDO<!--
Logramos cambiar el aspecto de la pagina ?, algo inofensivo porque esta información no se publico, pero
estan validando la información que el usuario les envia ?* Ok continuemos con el login pongamos por ejemplo en username un correo valido y en pass pongamos algo como
' OR 1=1; -- , que sucedio ? algo inesperado ?
Que pasaria si esta injeccion sql la cambiamos por algo asi como
' having 1=1 -- , notastes algo diferente ??
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'xxxxxxxx.password' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
/2007/includes/clsDbase.asp, line 314
Que podria suceder si estas inofensivas injecciones que ya nos revelaron cosas de la BD las cambiamos por algo un poco más hardcore, como un drop table ? , un shutdown ? o algo asi por el estilo ?
Ahi les queda ejemplos inofensivos y educativos, que en realidad esperamos que los usen solo como un ejemplo de como deben de ser cuidadosos con las cosas que desarrollen y siempre pensar un poco en la seguridad que esta involucrada, si empresas dedicadas a el desarrollo de este tipo de sistemas no toman la precaucion de ponerle un poco de filtro a los datos podemos imaginarnos que casi todos los demas sitios salvadoreños son asi ?
Disclaimer:Este codigo ha sido presentado en svcommunity con fines educativos y no se ha hecho ningun daño en las pruebas de muestra que han sido ejecutadas, queda bajo la responsabilidad de los usuarios el uso que hagan con esta información que si tratan de pasarse de listos les puede traer consecuencias
