lunes, 19 de mayo de 2008

Navegación por código

Alien [blackhat4all@gmail.com]

Independientemente del navegador que utilicemos para acceder a la red, la mayoría de los usuarios vemos el contenido en esta representado de una forma más o menos similar: imágenes, textos, sonidos, etc. Sin embargo, estamos ignorando en muchos casos gran parte de la información que tras la página web se encuentra: El código fuente.

Para alguien con ciertos conocimientos sobre programación web, ver el código fuente de la página puede resultar extremadamente ventajoso, ya que desde el mismo se podrá acceder a vínculos y demás cosas alojadas en el servidor a las que normalmente no debería tener acceso.

Me explico:

Todos sabemos los problemas que en nuestro país existen para obtener de forma normal una computadora y más aún una conexión legal al menos a intranet, es quizás esta la razón por la cual tantas personas tienen como meta, llegar a ser webmaster o administradores de red. Teniendo un cargo como este, se puede gozar de, además de una conexión privilegiada, un ordenador.

Siendo así, muchos de los que están al frente de las redes deciden guardar sus datos más valiosos en las mismas máquinas que constantemente están siendo accedidas por los usuarios, lo que puede repercutir en un gravísimo problema de seguridad y sin llegar a mencionar nombres o direcciones, muchos sabemos de casos y CASOS.

No obstante, el problema en si no radica en que se pongan cosas personales o datos comprometedores en a carpeta de un servidor, ya que para esto existen mecanismos de seguridad que impiden a los usuarios poder acceder a determinados lugares. El mayor problema está en que quien lo haga no tenga en cuenta esto y deje desprotegida la carpeta.

Tool

Para el buen entendimiento del artículo es necesario que todos estemos a la par. Para este tipo de cosas no se requieren Software complejos o algo así, solo será suficiente con un navegador que permita ver el código de la página (Firefox, Opera…). En Firefox (el que yo utilizo) basta con hacer clic derecho sobre la página una vez que esta esté abierta e ir hasta la opción “ver código fuente de la página”. Una vez hecho esto se abrirá una ventana aparte que mostrará la programación de la página que estemos analizando. Otra opción pudiera ser salvar la página y luego abrirla con un editor de textos convencional. De ambas formas podremos ver el contenido de la página.

Manos a la obra:

Como dije anteriormente, un código puede decir más que mil palabras, así que… Para ilustrar el ejemplo utilizaré una página a la que al menos más de la mitad de los lectores podrán acceder: www.sld.cu

Cuando hacemos este trabajo lo que se busca en si es algo que normalmente no aparezca en la página. Una de las formas que más fácil se oculta contenido de una web al usuario es poniéndola como comentario, así que empezaremos buscando cualquier cosa que comience por “<!--”. Nos servirán también los vínculos, direcciones de archivos dentro del servidor y demás.

Si hacemos un escaneo de www.sld.cu, a simple vista parece una página normal, sin muchas complicaciones o cosas por el estilo y de hecho, al mirar el código tampoco parece tener nada en especial u oculto, sin embargo, con un poquito de meticulosidad podremos notar al menos una diferencia con respecto a lo que se muestra. En la parte inferior de la página aparece algo como:
<!--
var a_vars = Array();
var pagename='';

var phpmyvisitesSite = 5;
var phpmyvisitesURL = "http://estadisticas.sld.cu/phpmyvisites.php";
//-->
</script>
<script language="javascript" src="http://estadisticas.sld.cu/phpmyvisites.js" type="text/javascript"></script>
<object><noscript><p>phpMyVisites : estadísticas y medida de audiencia de sitios en Internet (licencia GPL)
<img src="http://estadisticas.sld.cu/phpmyvisites.php" alt="Statistics" style="border:0" />
</p></noscript></object></a>
<!-- /phpmyvisites -->
<script type="text/javascript" src="http://estadisticas.sld.cu/plugins/clickheat/libs/js/clickheat.js"> </script> <noscript> <a href="http://www.labsmedia.com/index.html">Marketing tools</a> </noscript> <script type="text/javascript"><!--
clickHeatSite = 5;clickHeatGroup = 'Página Principal';clickHeatServer = 'http://estadisticas.sld.cu/plugins/clickheat/libs/clickpmv.php';initClickHeat(); //-->


A simple vista parece ser que en algún momento este código que hoy es presentado como comentario formó parte alguna vez de la página de Infomed y por x razones fue eliminado ya sea de forma temporal o definitiva.

Tomando solo este fragmento podemos ver que bajo el dominio sld.cu existió o existe aún una página que brinda acceso a las estadísticas de Infomed, o al menos así se hace llamar: (http://estadisticas.sld.cu).

¿Ventajas?

Esto nos permite no solo acceder a sitios que normalmente no vemos en la red, sino que con un poco más de curiosidad nos permite hacer un mapa virtual de un servidor. Tomemos por ejemplo este fragmento:
http://estadisticas.sld.cu/plugins/clickheat/libs/js/clickheat.js
Como en efecto, estamos en presencia de una ruta. Mediante esto ya sabemos que dentro de este servidor existe una subcarpeta llamada plugins, y otra de nombre clikheat y una más denominada libs y otra…

A estas direcciones se puede o no tener acceso, pero bueno, ya eso está en dependencia de los permisos que tenga asignada cada carpeta, pero indudablemente tendremos la posibilidad de crear una estructura de directorios similar a la de un servidor determinado, y más…

Si, más, porque esto no para aquí. Por lo general a la hora de confeccionar una página se designa una carpeta que almacenará las imágenes y otra los archivos web. Con varias veces que hagamos este escaneo y en varios lugares, podremos ir conformando una imagen del servidor en nuestra PC, desde allí será más fácil analizarlo posteriormente para encontrar puntos vulnerables en caso que eso sea lo que se quiere hacer.

More...

Ya hemos visto como obtener nombres de archivos y la estructura de directorios de un servidor, supongo que no habrá problemas para determinar los nombres y ubicaciones de las imágenes y no pienso detenerme mucho en este punto, ya que con un simple clic derecho sobre la misma y pedir sus propiedades ya logra esto. Así que ahora me enfocaré en como obtener los nombres y contenido de los archivos que no son llamados por la página.

Cuando se adiestren en esto de ver códigos de páginas web, se darán cuenta que desde un archivo html o htm se suele hacer llamados a otros archivos, esto ocurre por ejemplo al cargar una imagen, al tratar de ejecutar un script que se encuentra almacenado en un archivo aparte (*.js). También podemos ver estas llamadas cuando se apunta a un vínculo… Sin embargo, a veces en un servidor se alojan muchos más archivos que no son requeridos por la página web y por lo tanto no aparece referencia a ellos en ningún lugar.

Por lo general son el tipo de archivos que se utiliza cuando la página está en construcción y en el que se escriben notas, o se plantea parte del código de una web, o… en fin, es simplemente un archivo que sobra.

Obtener este tipo de archivo es más difícil ya que nosotros no somos adivinos para escribir en la barra de direcciones la ruta y nombre de archivo de forma exacta, así como no son permitidas cosas como www.sld.cu/*.*. Para lograr capturar uno de estos archivos se requiere un poco más de suerte ya que lograrlo depende del nivel de seguridad que tenga asignado el servidor a la carpeta en cuestión.

Nota: Si sabemos que es lo que buscamos exactamente, los artículos de ediciones pasadas que enseñar como buscar servirán de mucho.

Veamos por ejemplo una página de baja seguridad y en la que no hay nada comprometedor por suerte.
Perteneciente a Infomed, en la página que brinda posibilidades para revisar el estado de cuentas (http://accesotelefonico.sld.cu/pages/login_ppp.php) si hacemos clic derecho sobre la misma y nos dirigimos hasta Información de la Página, podremos ver algunas de las direcciones a la que la misma apunta.

Aunque no es nada seguro, podríamos tratar de ver que pasa si nos paramos sobre http://accesotelefonico.sld.cu/pages y... BINGO!!

Al hacer esto se muestran los archivos que están dentro de la carpeta y la vista es muy similar a la que se obtiene de un FTP. En este caso el archivo utility.txt (por ejemplo) no es llamado por ningún archivo y si hacemos clic sobre el veremos el texto que contiene.

De esta misma forma se puede entrar a otros lugares en la web que aún quedan sin proteger. Esto brinda una inseguridad muy grande y sobre todo un punto muy vulnerable para cualquier servidor. A modo de ejemplo he seleccionado páginas que no contienen información de tipo secreta, confidencial o por el estilo, pero si hay otras muchas en la red que…

Hasta aquí pienso que haya quedado bastante claro las ventajas que nos brinda la navegación por código. Esta es una importante herramienta que puede servir a muchos para llegar a lugares que jamás imaginaron y de paso aprenden otros como darle mayor seguridad a sus servidores.



Artículos relacionados


No hay comentarios: