Cuando solo se piensa en disenio, pero no en seguridad

by starrillo 3. August 2008 17:13

http://sergiot2.com/diario/blogimages/2008/08Ago/03_Seguridad.jpg

Hay muchos periódicos peruanos que han cambiado su diseño para estar más a la onda Web 2.0, inicio el Comercio, luego peru21, y ahora último Correo (calientito).

Para estar a la altura de la Web 2.0, no sólo basta con agregar RSS a la una Web. Hay otros temas importantes como son estar protegidos contra ataques, en la actualidad cualquier usuario principiante de internet puede buscar y encontrar información de como atacar sitios Webs. El más conocido y ampliamente difundido es el SQL Injection, usaremos a correo para explicarlo mejor (ya que no ha mejorado su seguridad, y sigue dejando puertas libres como en su versión anterior):

Correo tiene un sistema de búsqueda de noticias, y para eso nos da una pequeña cajita de búsquedas:

http://sergiot2.com/diario/blogimages/2008/08Ago/03_correo-busqueda.jpg

Cualquier parte de la página de Web, que permita el ingreso de data por parte del usuario puede ser un punto de ataque, en la web todo debe estar bajo el principio: "Todo el ingreso es dañino, hasta que se compruebe lo contrario", es decir que no vale esperar a recibir un ataque para tomar medidas de seguridad.

Lo primero que puede hacer un atacante es verificar si están validando el input del usuario:

http://sergiot2.com/diario/blogimages/2008/08Ago/03_Sql-Injection.jpg

Y aquí que puede empezar todo, ya sabemos que no están validando la cadena de búsqueda y que permite que el usuario pueda modificar de alguna manera la consulta para enviar código malicioso a la base de datos.

Hasta aquí ya vemos dos principales principios que no se cumplen:

  • Validación del input del usuario
  • No mostrar al usuario más información de la necesario

Lo correcto sería validar el input, y además tomar la cadena como tal, sólo como cadena, la no validación del input a su vez lleva a dos posibles acciones del usuario:

  1. Ejecutar código malicioso contra la base datos.
  2. Obtener información "sensible".

¿Qué es información sensible?. Por ejemplo en la búsqueda de arriba puedo determinar varios datos importantes: La base de datos que esta usando CorreoPerú, es una base de datos MySql, por la url sabemos que es Php, y con netcraft sabemos que esta usando Apache sobre Linux, el famoso LAMP. Pero además de decirnos que esta usando una base de datos MySql, ya nos dio dos nombres de posibles columnas: nota_titular, y nota_llamada.

Y jugando podemos llegar a otra información sensible:

http://sergiot2.com/diario/blogimages/2008/08Ago/03_informacion.jpg

Bueno acá ya me dio el nombre de la base de datos, y de una posible tabla. Nuevamente, no mostrar al usuario más información de la que necesita.

Y ni se tomaron la paciencia de hacerlo de difícil, desde el cuadro fecha también se puede mandar Sql Injection, desde hace tiempo que existen las expresiones regulares (para validar del lado del cliente y del lado del servidor):

http://sergiot2.com/diario/blogimages/2008/08Ago/03_Sql-Injection2.jpg

Nueva me esta dando más información de lo que necesita saber el usuario. Lamentable no soy un experto en hacer este tipo de ataques, si no hubiera sacado información :D, justamente el no usar mensajes de error personalizados es aprovechado por los atacantes para obtener toda la información que necesiten antes de hacer un ataque.

¿Cuál es el daño común? Si te permiten enviar consultas con SQL Injection (y no validan), pueden reemplazar todos los links de las noticias y hacerlos que apunten a otro servidor (ataque XSS), y que podría hacer el ataque? pues podría poner publicidad en el sitio Web, o hasta introducir troyanos en la computadora del usuario. Imaginemos que hubieran podido actualizar todos los links de los títulos noticias, lo que pasaría es al ingresar a la portada del diario, todos los títulos linkeables de la noticia tendrán el código malicioso, y dependiendo de varios factores este puede afectar a nuestra computadora o no.

El otro daño común, y menos perjudicial para el usuario final, es el de los llamados hackers, que pueden hacer que una determina noticia o todas las noticias, contenga la Url de su blog...

Me parece que en la versión anterior pude jugar un poco más con el SQL Injection, y llegue a ejecutar algunos querys, pero ya no le dedique tiempo a buscar el nombre de la tabla o columnas, para hacer el famoso update masivo...

Y nada, imagino que después de esta nota, ya no veremos mensajes del tipo: "No te voy a decir que mi base de datos se llama: db_XXX, ni tampoco que mi tabla se llama XXX, mucho menos que si quieres insertar código maliciosos mis columnas son: titular, fecha, etc"

Por cierto, si quieren aprender de seguridad y ataques, visiten el blog del gran Alex.

Saludos,

Tags: ,

Informática

Comments

8/5/2008 5:45:56 AM #

josé koji

Pues al lunes 4 de agosto del 2008 a las 15:32 el diario ****** parece haber validado los input, en su formulario de búsqueda, así que me quede con las ganas de hacer un injection en un sistema en producción que no sea el mio xD.
Ahhh!, y otro tema que varias web al parecer no toman en cuenta es la compatibilidad con otros navegadores que no sean el IE y con otros SO que no sea uno de la familia windows, por ejemplo en las paginas del banco de credito y el scotiabank (uy chu, no era para dar nombres ^^), algunas ventanas informativas no muestran los resultados esperados en firefox.

josé koji Peru

8/5/2008 5:54:31 AM #

sergiotarrillo

Así es, parece que ya esta corregido el tema Laughing. Esto de hacerlo público, es más efectivo para tomar las medidas de seguridad en one...

Acabo de visitar las Webs de los bancos mencionados desde firefox 3 sobre Windows, y no encontrado mayor problema...

Saludos,

sergiotarrillo Peru

8/7/2008 3:05:33 AM #

josé koji

solo para no quedar como mal hablado xD, desde ubuntu con ff3 las siguientes paginas NO se desempeñan correctamente... creo
http://www.viabcp.com/inversiones/cotizaciones/

www.scotiabank.com.pe/.../bp_s_cuentamovil.shtml (el combo no desencadena ningun resultado)

acá tmb, http://www.telefonica.com.pe/selecciondepersonal/ , pero al menos acá si te dice que solo funciona con IE.

josé koji Peru

8/7/2008 6:00:38 AM #

sergiotarrillo

En cuanto al combo de Scotia, desde Ff3 sobre windows si provoca resultados. En cuanto a los de telefina se pasaron.... como te van recomendar Internet Explorer 5.5, hay que pasarles el link de la campaña: www.savethedevelopers.org

Y la del BCP de cotizaciones, parece un error de programación, en IE y Safari se ve bien, pero firefox veo esto:

<% Response.Expires = 0 %> <% ' Variables Globales gUsr = Session("gUsr") gTUsr = Session("gTUsr") ' Constantes Globales gUploadPath = "C:\InetPub\wwwroot\CBV\imgExt" kTIME = 420000 %>

Y en el código fuente se ve esto:

<% Response.Expires = 0 %>
<%
' Variables Globales
gUsr = Session("gUsr")
gTUsr = Session("gTUsr")

' Constantes Globales
gUploadPath = "C:\InetPub\wwwroot\CBV\imgExt"

kTIME = 420000
%>
<html>

<head>
<title>Banco de Credito - División Mercado de Capitales</title>
</head>

<frameset framespacing="0" border="false" frameborder="0" rows="120,*">
<frame name="superior" src="Title.asp" scrolling="no" noresize target="intermedio" marginwidth="0" marginheight="0">
<frame name="intermedio" src="SubMain.asp" scrolling="no" noresize marginwidth="0" marginheight="0">
<noframes>
<body>
<p>Esta página usa marcos, pero su explorador no los admite.</p>
</body>
</noframes>
</frameset>
</html>


Es muy extranio o están generando mal el html, o el archivo antes era un asp y ahora lo cambiaron solo a html...

Y nada a seguir promoviendo la campaña: www.savethedevelopers.org

Saludos,

sergiotarrillo Peru

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading



Mundial Sudáfrica 2010

Acerca del autor

Sergio Tarrillo Sergio Tarrillo.
Egresado de la Universidad Nacional de Trujillo, y quizás un día un ingeniero. Muy enamorado de su esposa, con quien vive contento de ver crecer a su hijo.

Calendar

<<  July 2010  >>
MoTuWeThFrSaSu
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS