Mostrando entradas con la etiqueta Lasso. Mostrar todas las entradas
Mostrando entradas con la etiqueta Lasso. Mostrar todas las entradas

sábado, abril 21, 2012

Hacking de aplicaciones Lasso (IV de IV)

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

Como se ha podido ver en la parte anterior de esta serie, con el modificador -findall es posible manipular el recordset de igual manera que si fuera una consulta SQL. Dentro de la referencia de comandos de Lasso Script es posible localizar más modificadores con incidencia en el recordset que se va a mostrar en el layout. En esta cuarta parte vamos a ver uno muy curioso.

Modificador Random

Uno de los problemas clásicos en la explotación de ataques SQL Injection es conseguir mostrar muchos resultados en una página en la que sólo se muestra un registro del recordset. Eso es justo lo que habíamos conseguido en el último ejemplo con -findall, es decir, pese a que el recordset devuelve todos los registros, sólo se muestran los datos de una persona.

Se podría jugar con los tokens y hacer filtros para descubrir la manera de recorrer el recordset completamente, pero hay un modificador que devuelve un registro distinto en cada petición, con una lógica aleatoria: El modificador -random.

Figura 18: El modificador -random

Cambiando los resultados

Probando el modificador, es posible irse a páginas web, como la de Mac Talent, una web para catalogar a los profesionales Mac con talento y gestionar trabajo para ellos, y añadir el modificador -random a cualquier ficha que aparezca. 

Figura 19: Sacando datos aleatorios de un layout

En cada petición los resultados son distintos, y en este caso puede verse claramente como el mundo del Black SEO se ha dado ya un paseo por esta web para dejar algún regalito en forma de anuncio de autopatrocinio.

Figura 20: Sacando más datos aleatorios de un layout

Extrayendo los datos de los usuarios

En el caso de la web en la que analizamos el proceso de login, es posible hacer una cosa bastante curiosa que puede ser repetida en sitios en los que se haga una mala gestión de la sesión de usuario. El asunto es que una vez conectado al sistema, al proceder al pago de la factura, se puede poner el modificador -random y cambiar de usuario de manera sencilla.

Figura 21: Usando random para sacar todos los datos de un layout

Este proceso, repetido tantas veces cómo se quiera, podría permitir, no sólo cambiar de cuenta en cada petición, sino que se pudiera extraer, en un layout que muestra un único registro, la información de todo el recorset (si se solicita un número suficiente de veces).

Figura 22: Sacando más datos con random

Saludos Malignos!

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

domingo, abril 15, 2012

Hacking de aplicaciones Lasso (III de IV)

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

Llegado ya a la tercera parte del artículo, vamos a proceder a analizar las URLs para poder ver cómo se pueden manipular los resultados de las consultas que se acaban ejecutando en una base de datos conectada a través de Lasso.

Respuesta con y sin errores

Lo primero que hay que explicar es que en las peticiones de muchas aplicaciones vamos a poder encontrar los modificadores -Response y alguno similar a -AnyError, tal y como se puede ver en al Figura 11.

Figura 11: URL con Respose y AnyError

Como podéis suponer, estos parámetros identifican cuales son las páginas web a las que se debe navegar en caso de que la consulta que se lance al servidor de bases de datos devuelva unos resultados esperados o unos resultados con error.

El número de modificadores de error es grande, ya que para tener un control de los mismos más granulado existen modificadores como:
-NoresultsError
-ResponseSecurityError
-ResponseAnyError
-ResponseRequiredFieldMissingError
Todos ellos para conseguir que la página de resultados se dispare por el mensaje de error adecuado. En cualquier caso, si queremos lograr ver el layout que se usa cuando no da error y los datos mostrados en él, es necesario conseguir que que la lógica de la consulta a la base de datos consiga devolver valores esperados, y eso es lo que nos proponemos a hacer en esta parte del artículo.

Un proceso de login como ejemplo

Para explicar el proceso, vamos a ver un sistema de login en una aplicación web creada con Lasso. En ella se puede ver que el proceso comienza con la petición de una dirección de correo electrónico, para posteriormente solicitar un clave de acceso.

Figura 12: Proceso de Log in con Lasso

En la URL no se aprecian los layouts de error y respuesta, ya que esta dirección es la ubicación en la que estamos y a ella hemos llegado desde un enlace, por lo que el programador no ha contemplado ningún error. Sin embargo, en todos los enlaces que tienen que contar con una sesión autenticada de usuario sí que podría producirse un error - cuando el usuario no estuviera autenticado -.

Si analizamos el código fuente de la página, podemos ver cómo el enlace a revisar las propiedades de la cuenta del usuario tiene los modificadores citados anteriormente -Response y uno para el tratamiento de errores. En este caso -NoResultsError.

Figura 13: Enlace con Response y NoResultsError

Al invocar la URL manualmente en el navegador obtendremos, como es de esperar, la página indicada en NoResultsError, es decir, un mensaje de que necesitamos logarnos.

Figura 14: Página de error

¿Cómo manipular la consulta y meter datos?

Si tenéis experiencia con el hacking de aplicaciones web con SQL Injection, seguro que ya estáis pensando en meter un ' or '1'='1 para hacer que devuelva algún resultado la consulta y se dispare el layout de response con los datos del primer registro obtenido desde la base de datos. Y eso mismo es lo que vamos a hacer, sólo que sin poner una comilla.

El framework de Lasso permite poner modificadores en las URLs que inciden directamente en la lógica de la aplicación, lo que es muy malo para la seguridad. Si analizamos la URL de llamada anterior es fácil ver como se usan  los modificadores -token para meter parámetros a la aplicación y -doscript para forzar el uso de algún procedimiento almacenado.

Si vamos a la referencia de Lasso y buscamos los modificadores que se pueden usar en la URL, obtendremos un maravilloso mundo de posibilidades ante nosotros.

Figura 15: Referencia de comandos en Lasso

Uno de esos maravillosos modificadores es 'or '1'='1... digo.. -findall, que permite obtener todos los resultados del layout/table asociado, con lo cual se simplifica totalmente el proceso de extracción de datos.

Figura 16: Información sobre findall

En este ejemplo, quitando los modificadores -doscript y -token, y añadiendo -findall a la consulta, se puede ver cómo vemos el layout de -Response con datos obtenidos desde la base de datos conectada.

Figura 17: Respuesta con -findall

Con esto vemos cómo es posible saltar algunas de las restricciones que se configuran en muchas de las aplicaciones Lasso, pero aún quedan muchas cosas por contar, que veremos en las próximas partes.

Saludos Malignos!

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

jueves, abril 12, 2012

Hacking de aplicaciones Lasso (II de IV)

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

En la primera parte vimos cómo descubrir bases de datos, tablas/layouts, y zonas de administración en sitios corriendo con Lasso. En la sección de hoy toca hacer un poco de thrahsing y mirar qué cosas aparecen por ahí que puedan ser de utilidad para preparar el ataque posterior.

Usuarios y Passwords

En las bases de datos conectadas puede suceder que sea necesario establecer un proceso de autenticación antes de acceder al layout o la tabla. Es por eso que dentro de los parámetros que pueden aparecer en la URL pueden estar los fácilmente reconocibles username y password.

Figura 7: Parámetros username y password en URL

En muchos casos serán usuarios que darán acceso a bases de datos públicas, pero no viene mal crear una lista con todos ellos para posteriormente poder intentar una conexión a la zona de administración, a una de las bases de datos internas del servidor o a cualquier otra base de datos descubierta por los métodos descritos en la primera parte del artículo.

Por POST

En muchos sitios los parámetros de las aplicaciones lasso descritos hasta el momento, es decir, database, layout, table, username o password no aparecen en la URL, pero están en campos hidden del código fuente de la página web. Eso es porque se permite el paso de los mismos por POST, así que siempre merece la pena revisar el código fuente de cualquier fichero .lasso para descubrir todos y cada uno de los parámetros de la llamada.

Figura 8: Parámetros de llamadas a aplicaciones Lasso por POST en campos hidden

En cualquier caso, la mayoría de las aplicaciones permiten el envío por POST o por GET, así que si te es más cómodo se puede hacer una construcción de la llamada por GET a partir de esos parámetros.

En comentarios

Una de los cosas más curiosos es que hay bastantes aplicaciones que aparecen con los parámetros de las llamadas en comentarios. Es como si hubieran actualizado la versión del servidor Lasso y ya no hiciera falta autenticarse con un usuario o tal vez hubiera cambiado el modelo de seguridad y no fuera necesario usar más la autenticación. En cualquier caso, en varios sitios aparecen los parámetros de username y password en los comentarios de la aplicación, por lo que como buena costumbre de pentester, aparecerán en la fase de footprinting del análisis.

Figura 9: Usuarios y contraseñas en comentarios de la página 

Por supuesto, que estén comentados en la web no indican que no estén funcionando en otras bases de datos descubiertas.


Los envíos por e-mail, el campo host, el usuario y la password

Si se buscan aplicaciones Lasso con gestión de usuarios aparecen muchas, y los esquemas de autenticación y validación de cuentas, como veremos en las partes siguientes de este artículo, dejan bastante que desear en muchos casos.

Sin embargo, en el post de hoy, dedicado a la fase de footprinting, os hablaré de otra cosa. En varios sitios busqué la parte de la aplicación que se encargaba del sistema de recuperación de contraseñas por correo electrónico, para ver cómo funcionaba la lógica.

En varias de ellas me sorprendió ver cómo Lasso viene preparado para el envío de correos electrónicos, y existen componentes especialmente creados para hacer el envío de correo. Para ello existen todos los modificadores necesarios para hacer el envío de un mensaje de e-mail, como son host, from, cc, BCC, etcétera.

Figura 10: Configuración de cuentas de correo en parámetros de aplicaciones Lasso

Por supuesto, información muy jugosa que además, como os podeis imaginar, son el paraíso del spammer. En la figura 10, para más diversión se puede ver toda la información en los comentarios de un sitio.

Inyección de comandos

Supongo que llegado este punto muchos os estaréis preguntando - y más después de haberos fijado que en la Figura 9 aparece comentada una bonita consulta SQL - si estas aplicaciones son inyectables en los parámetros para conseguir que el layout "escupa" más datos de los pensados originalmente por el desarrollador.

Supongo que ya sabréis la respuesta, pero tendréis que esperar hasta la próxima parte del artículo.

Saludos Malignos!

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

lunes, abril 09, 2012

Hacking de aplicaciones Lasso (I de IV)

**************************************************************************************************
- Hacking de aplicaciones Lasso (I de IV)
- Hacking de aplicaciones Lasso (II de IV)
- Hacking de aplicaciones Lasso (III de IV)
- Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

Hace ya bastante tiempo me tocó pegarme en un pentesting con una aplicación web basada en las tecnologías Lasso. Como seguramente muchos de vosotros no conocía bien este entorno, pero al final acabé disfrutando y aprendiendo mucho de todo aquello.

El pasado fin de semana, en un rato en el que tenía ganas de enredar un poco, me acordé de ellos y fui a ver cuántas webs a día de hoy había con las tecnologías Lasso - algo que yo hacía totalmente en desuso - y me sorprendió ver la cantidad de webs abiertas en Internet que aún las están utilizando.

Figura 1: Más de 4 millones de webs con Lasso

Como tenía algo de tiempo, decidí probar cosas y escribir esta serie de posts sobre ellas, por si os viene bien en alguna auditoría web en la que te lo encuentres.

Lasso Web Server

La importancia de las tecnologías web de Lasso en el mundo de Internet es tal que ni el artículo de la Wikipedia está acabado, pero llama poderosamente la atención que a día de hoy todavía sigan apareciendo versiones. Como bien se cuenta en la historia, nacieron como un medio de conectar las bases de datos de FileMaker con el mundo de Internet, con lo que su entorno se hizo bastante popular entre el mundo de lo servidores web basados en Mac.

La idea era dotar a las aplicaciones web de un conector que llevase las bases de datos FileMaker a la web, aunque a día de hoy se puede conectar con casi cualquier base de datos, y su tecnología se integró con muchas de las aplicaciones populares de diseñadores de páginas web, como Adobe GoLive o Dreamweaver.

La zona de administración

En casi todos los servidores en que está corriendo Lasso es fácil localizar la zona de administración, o bien "escondida" en el directorio lasso, el directorio admin, o lo mucho más común, en la aplicación ServerAdmin.LassoApp.

Figura 2: Panel de administración de Lasso 6 (2002) en /lasso

De esta forma, en cualquier sitio en que aparezca una aplicación web con extensión lasso, merece la pena intentar encontrar esta aplicación. En este ejemplo se puede ver que Apple utilizó estas tecnologías, y en el servidor dónde lo hizo es posible encontrar la zona de administración.

Figura 3: Pannel de administración de Lasso Server Admin en Apple.com

Según la documentación, ena algunas versiones hay un usuario por defecto llamado _lasso, pero no tiene una contraseña por defecto que yo haya encontrado, por lo que encontrando el lugar se puede hacer algún ataque de fuerza bruta o usando _lasso o algún usuario del sistema que os explicaré cómo encontrar.

Los errores 404 del framewok

Como buen framework, y al igual que pasa con JSP, TCL de WebDNA o ColdFusion, es él y no el servidor web el encargado de gestionar los errores que se produzcan con los ficheros de extensión .lasso. Así, es común encontrar que no están controlados y sacar algo de información de ellos.

Lo primero y más sencillo es sacar la fecha y hora del sistema,  que nos puede dar cosas curiosas, como la franja horaria en la que está o si está o no sincronizada con Internet, la dirección IP del cliente, que si existe un Proxy Reverso en la red nos puede dar el direccionamiento IP de la red Interna, y el sitio Lasso que genera el error - la base de datos o el conector - como se puede ver en el ejemplo inferior.

Figura 4: Error 404 típico de una aplicación Lasso

Estos errores también se pueden utilizar para sacar información de la estructura interna de las bases de datos pero antes hay que entender un poco más cómo funcionan estas tecnologías.

La base de datos, la tabla y el layout

Las aplicaciones lasso pueden ser simples scripts que hacen algo y no tienen ninguna conexión con una base de datos, pero lo más común es que sí que tengan esa conexión con una base de datos de la que extraen datos o visualización. Para ello, entre los parámetros de la llamada aparecen tres modificadores a tener en cuenta.
- Database: Es la conexión con la base de datos que almacena la información que se está consultando. Esta puede ser un fichero de datos, o el nombre de una conexión. Dependiendo de la versión de Lasso tendremos una cosa u otra. 
- Layout: Es una vista o una representación de los datos que se extraen. Para ello debe existir ese layout dentro de la base de datos. Si no hay un layout para mostrar los datos no se podrá ejecutar la aplicación. Una de las ideas que seguro que se pasa por vuestras cabezas es usar un layout de una base de datos en otra, pero no es posible. 
- Table: En algunas ocasiones no se utiliza un layout, y se tira directamente contra la tabla, por lo que aparecerá en la URL.
Haciendo uso de los mensajes de error, y manipulando los valores de database y layout, por ejemplo, se puede sacar información de lo contenido dentro de un servidor.

Figura 5: La base de datos lasso_a no existe

Como recomendaciones útiles, existen varias bases de datos de administración que debes conocer, como son lasso_admin, lasso_application, lasso_internal, lasso_global o lasso_site_1, pero también son comunes admin.fp3 o admin.fm5.

Figura 6: Existe la base de datos lasso_admin, pero no el layout users

En cuanto a layouts, el más común, sin duda alguna, es web, ya que aparece en muchas de las URLs que he visto indexadas en Google.

Saludos Malignos!


**************************************************************************************************
Hacking de aplicaciones Lasso (I de IV)
Hacking de aplicaciones Lasso (II de IV)
Hacking de aplicaciones Lasso (III de IV)
Hacking de aplicaciones Lasso (IV de IV)
**************************************************************************************************

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares