Español flagInglés flag

Tiempo estimado de lectura 4:20 min. rellotge
Los peligros del CGI: ¿Qué es y qué riesgos conlleva?

Antes de la Internet popular y masiva, las páginas eran sencillos archivos de texto plano, con alguna que otra imagen, pero terriblemente austeras en comparación con las actuales maravillas de diseño y funcionalidad que podemos visitar a diario.

Poco a poco, la necesidad de destacar sobre las demás, y la inclusión de funciones más que informativas, a base de formularios de búsqueda, foros, y todo lo que requiera cierta interactividad con el usuario, hizo necesario un sistema de intercambio de información, cuyo estándar es llamado CGI.

CGI es una forma de procesar datos en una página. CGI Scripts (Common Gateway Interface), es una pasarela (hace de mediador) de información, común (puede ser usada desde cualquier navegador) entre el servidor web y el navegador. Hace que el servidor (web) y el cliente (el navegador que usamos para poder ver las páginas) intercambien información a un nivel superior. Es código ejecutable remotamente en el servidor y así conseguimos no sólo recibir, sino intercambiar datos específicos (ya no somos meros espectadores de texto e imágenes).

Estudiemos los términos para situarnos:

Common: Asegura que puede ser usado por muchos lenguajes distintos e interactuar con diferentes sistemas. No ata de ninguna manera a una única forma de hacer lo que se quiera, lo que implica que es una filosofía, no ligada a un lenguaje concreto ni a un sistema determinado. Esto es extremadamente importante para Internet, donde cada protocolo debe ser estándar para que todos los fabricantes o programadores realicen sus productos según unos criterios comunes.

Gateway: Sugiere de alguna manera que la fuerza de los CGI no está en lo que hace por sí mismo, sino en el potencial que ofrece a la hora de acceder a otros recursos (como bases de datos). Esto se suele traducir también por “pasarela”, como forma de expresar que es una “vía” para conseguir la interactividad.

Interface: Significa que CGI proporciona una forma definida de acceder a lo que él mismo ofrece, que se pueden escribir programas que lo usen y exploten sus posibilidades. Los más representativos son Perl, C, C++ y Java.

En realidad, CGI es un estándar para hacer de intermediario entre, información del usuario, el servidor que la procesa, y la información que vuelve procesada hacia el usuario. (por ejemplo, cuando rellenamos un formulario). El CGI es parte del protocolo de navegación HTTP.
 
El problema de esta interactividad, es que si se consigue comprender el funcionamiento específico de una página, quizás se pueda conseguir que el sistema operativo que aloja el servidor web, se comporte como nosotros queramos. Por ejemplo, imaginemos que existe un formulario en una página que, una vez rellenado con los datos necesarios, son enviados al correo del webmaster. Un hacker lo suficientemente hábil y malvado, podría estudiar el código de ese formulario, y una vez analizado y comprendido perfectamente su funcionamiento, podría aprovecharse de algún error en su programación. Por ejemplo, podría modificar la dirección de correo a la que son enviados los datos del formulario, usar una propia, y, además añadir al envío el fichero de contraseñas del servidor. Parece complicado, pero hasta hace bien poco, era una de las técnicas más usadas para aprovecharse de CGIs mal programados.

Lo “mejor” de este tipo de ataques es que no necesitan de complicados exploits, y son muy difíciles de detectar. No hace falta escanear puertos, ni comprobar comandos imposibles, sólo es necesario estudiar un poco la página y todos los elementos que permiten al visitante interactuar con la propia web, ya sea mediante formularios o búsquedas, que pueden suponer una puerta a los datos ocultos.

El funcionamiento de algunos formularios, se revela también en la estructura de la URL, que no es más que un tipo de petición especial que se envía al servidor. Muchos ataques vienen por URL malformadas, destinadas a confundir al servidor (extremadamente largas, caracteres raros…). Esto puede ser considerado también ataques del tipo CGI, basados en URL.

Por ejemplo, cuando un cliente pide una página HTML, el servidor le devuelve la página pedida (o un mensaje de error). El navegador interpreta el código HTML enviado para formatear y mostrar el fichero. Así, tecleando la URL (Uniform Request Locator) http://www.portalmundos.com/index.html el cliente se conecta al servidor www.portalmundos.com y pide la página index.html, todo esto usando el conocido protocolo HTTP. Si la página existe, el servidor manda el archivo pedido, y si no, el bien conocido error “404 Page not found”.

Esta simple “transacción” no permite interactividad con el usuario, y todo esfuerzo por personalizar la página es imposible. Pero la introducción de URL con parámetros específicos, sí que supone una forma de interactividad, y por tanto de CGI. Así, una URL como www.portalmundos.com/articulos.html?a=1&b=2 se construye de una forma diferente con parámetros y variables que permiten “personificar la página”, construida sobre una estructura. Por ejemplo, páginas que actualicen sus noticias todos los días, introducen esas noticias en una base de datos. La página noticias.html (en una dirección del tipo noticias.html?n=10) no es más que un “contenedor”, una estructura, preparada para albergar el cuerpo de la noticia que indica la variable “n” (número diez en este caso) en su interior. Un ataque por URL malformada sería, por ejemplo, introducir en el navegador noticia.html?n=XXXXXX y estudiar el comportamiento de la página.

Para aplicar con éxito estos ataques es necesario tener profundos conocimientos del protocolo HTTP, máximo responsable en este caso. Existen herramientas en Internet destinadas a “espiar” las comunicaciones con este protocolo entre nuestro navegador y el servidor al que accedemos. Esto no es ilegal ni “extraño”. HTTP es un protocolo que se transmite de forma abierta y viene perfectamente especificado en un documento público especial llamado RFC (Request For Comments). Lo consultan los diseñadores de servidores y clientes web, para poder mantener un estándar de comunicación homogénea, que no excluya a los distintos sistemas existentes. Por tanto, el conocimiento y las posibilidades están ahí, sólo hay que ser lo suficientemente curioso.

1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Valora el reportaje)
Cargando ... Cargando ...



...por Sergio de los Santos ...por Sergio de los Santos


Otros Reportajes:

Otros Reportajes Desarrollo de aplicaciones para la web mediante PHP: Más fácil imposible »
Otros Reportajes Un cortafuegos no da la felicidad: Su función en la cadena de seguridad »






Publicidad


2 comentarios en Los peligros del CGI: ¿Qué es y qué riesgos conlleva?

  1. Con el CGI hay un antes y un después en el diseño y en funcionalidades de las páginas web. Con la llegada del CGI Internet empezó a tener un aspecto más decente.

  2. Utilizar CGI lleva implicar una serie de riesgos pero se gana en funciones y diseño. Hay que protegerse al máximo de los riesgos del CGI.

Publicidad




PortalMundos Factory, S.L. | 2000 - 2008 | Hosting Profesional por isyourhost.com isyourhost.com