Iloo

https://iloo.wordpress.com

Archivos por Etiqueta: vulnerabilidad

Web Applications Security: www.expoteco.org (1)

Esta semana se realiza en la ciudad de Oruro el Expoteco 2010 y ya que todo mundo esta hablando de este evento, me di a la tarea de dar una revisión a su sitio, el cual es www.expoteco.org.

Al parecer el sitio tiene bastante contenido Ajax (el diseño deja mucho que desear, pero eso lo dejamos para otro post), no parece tener (por el momento) alguna vulnerabilidad que explotar, navegando por el sitio llegamos hasta un directorio donde se encuentra la aplicación dompdf que básicamente sirve para generar archivos PDF a partir de archivos HTML (el desarrollador JarJar Soft se olvido borrar algunos archivos), en la propia aplicación hay una sección de demo online, eureka! un enorme agujero de seguridad.

Dentro del portal existe un archivo llamado DataBase.php, me late que este archivo contiene datos de conexión a la base de datos ^^

En el demo online de dompdf escribo una función php que sirve para ver el contenido de los archivos y siguiendo el modo de uso de dompdf tengo las siguiente ordenes:

<?php
 require_once("../dompdf_config.inc.php");
 show_source("../../DataBase.php");
 $dompdf = new DOMPDF();
 $dompdf->load_html($html);
 $dompdf->render();
 $dompdf->stream("sample.pdf");
?>

Y ya tenemos los datos de acceso a la base de datos.

Ya solo queda imaginar lo que se puede hacer…

Anuncios

Web Applications Security: tip 1, XSS

Unas sugerencias o tip, al momento de realizar el desarrollo de aplicaciones web es importante cuidar de agujeros (bugs) de tipo XSS (Cross-site scripting) ya que son de los más comunes en el desarrollo, básicamente se explota parámetros enviados mediante el método get.

Para ser más claros un ejemplo tenemos la siguiente sección de validación de usuarios (caso real):

Si validamos los datos de entrada:

Tenemos la siguiente dirección generada:

http://www.dominio.com/movil/index.php?msn=Debe%20especificar%20un%20usuario%20y%20password

Que pasa si cambiamos la dirección a esto:

http://www.dominio.com/movil/index.php?msn=%3Ciframe%20src=’https://iloo.wordpress.com’%3E%3C/iframe%3E

Tenemos:

Ahora que pasaría si ponemos:

http://www.dominio.com/movil/index.php?msn=/etc/passwd

Como se puede observar este método es uno de los más sencillos para poder tener acceso a datos del servidor y por tanto es necesario filtrar los datos enviados por el método get.

Web Applications Security: www.presidencia.gob.bo (2)

Retomando la parte de administración.

Primero: En la sección de Gestionar Documentos.

Se observa un formulario para cargar archivos al servidor pero existe un error gravísimo, se puede cargar al servidor cualquier tipo de archivo (como veremos más adelante).

Recomendación: restringir la extensión y el tipo de archivo a subir al servidor.

Segundo: del punto anterior se puede cargar por ejemplo un shell php:

Recomendación: ver punto 1

Bueno ya teniendo el shell cargado se puede hacer prácticamente todo, cambiar nombres de directorios y archivos, subir y descargar archivos (se puede jugar una buena broma), también tener acceso a las bases de datos, etc, etc.

Lo dicho en el anterior post, el problema de la seguridad en el inicio de sesión se encuentra en la base de datos, así como no pude contactarme con el administrador, voy a arreglar yo mismo este problema, claro no es difícil, solo hay que borrar los registros nulos (espero que el administrador no haya colocado estos datos de manera consciente).

Ahora si iniciamos sesión de nuevo con los datos vacíos tenemos:

Por último y estoy seguro que la parte de inicio de sesión sigue siendo vulnerable a SQL Injection, con más tiempo voy a demostrar esta aseveración…

Web Applications Security: www.presidencia.gob.bo (1)

No se por donde empezar, tengo esto hace bastante tiempo y la verdad son tantas cosas que intentaré ordenar esto lo más que pueda.

En primer lugar quiero aclarar que mande un mensaje al correo del sitio, lamentablemente la dirección (correo@presidencia.gov.bo) no funciona así que no hay nada más que hacer.

Vamos con el Ministerio de la Presidencia del Estado Plurinacional de Bolivia.

Cuya presentación se puede ver en el propio sitio:

El Ministerio de la Presidencia brinda apoyo a la gestión presidencial, mediante la promoción de un nuevo Estado Plurinacional Democrático Participativo, el fortalecimiento en la coordinación con los poderes del Estado, el establecimiento de la gestión pública intercultural, descentralizada, eficiente, transparente y con la participación activa de las organizaciones sociales y los pueblos indígenas originarios campesinos, así como los mecanismos de comunicación y difusión transparente de la Información Gubernamental.

Primero: probando algunos nombres un tanto comunes (info.php, info.php, informacion.php, etc) nos encontramos con el archivo más dañino de todos (el archivo de información):

Esto nos muestra datos importantes que pueden servir de mucho al momento de vulnerar la seguridad del servidor, módulos cargados, nombre del host, versión del servidor apache, etc.

Recomendación: borrar el archivo.

Navegando un poco más también existe el la Dirección de Prensa de Palacio de Gobierno y al ver por la ip (190.129.71.213) se encuentran en el mismo servidor y es aquí donde hay varios puntos débiles en cuanto a seguridad se refiere.

Segundo: uso de marcos (aunque no es una vulnerabilidad como tal).

Recomendación: dejen de usar marcos por favor, si bien esto ayuda bastante al desarrollador (o eso cree) es una molestia para el usuario, ya que no permite guardar correctamente el sitio ni navegar sobre el.

Tercero: ahora si al grano nuevamente probando (y con algo de suerte) se encuentra la dirección de administración (http://comunicacion.presidencia.gob.bo/administrador/) y lo que viene si que no tiene desperdicio.

Al hacer clic directamente al botón “Iniciar sesión” (con los datos en blanco) tenemos… (música misteriosa) el panel de administración!!!

Y que pasa si añadimos algunos datos al formulario de inicio de sesión:

O sea wtf!!!

Recomendación: para esto pueden haber varias razones, pero por lo que puedo suponer es que deben existir algunos datos vacíos en la base de datos entonces hay que borrar estos registros o no se está filtrando correctamente el ingreso de los datos, en este caso puede un error en la implementación del módulo del control del inicio de sesión.

Web Applications Security: www.fps.gov.bo (3)

Ya vamos con la última parte del análisis a este portal (podrían haber muchas partes más), ahora vayamos por el “administrador” de la página, generalmente esta parte se encuentra en:

  • /admin.
  • /adm.
  • /administrador.
  • /administrator.
  • wp-admin (XD).
  • O alguno parecido a los anteriores.

De esta manera nos encontramos con:

http://fps.gov.bo/admin/

Probando un poco descubrimos graves fallos de seguridad en el login (SQL injection), básicamente este, sigue el siguiente camino lógico:

si es_correcto(usuario) && es_correcto(contraseña) entonces ingresar();
si es_correcto(usuario) && no_es_correcto(contraseña) entonces mostrar “El password no es correcto”
si no_es_correcto(usuario) && es_correcto(contraseña) entonces mostrar “El nombre de usuario no existe”

Estos mensajes nos dan pautas para realizar pruebas efectivas de acceso a la sección de administración, si inicialmente ingresamos cualquier dato al campo de Login obtenemos:

Y si ahora ingresamos en el campo de Login lo siguiente:

cualquiera’ OR ‘1’=’1

Y dejamos en blanco o introducimos un dato cualquiera en el campo de la Contraseña, obtenemos:

Ahora lo siguiente simplemente es realizar inyección SQL para poder tener acceso al sección de administración del portal.

Un punto a parte de la prueba de seguridad, sobre el área de administración: no tiene registro de acceso para poder controlar quien cambia que, cosa muy importante, al parecer lo hicieron demasiado rápido tomando en cuenta lo anterior mencionado, el contar con restricciones o nivel de usuario también es muy importante cosa que aquí no existe.

Recomendación: limpiar los datos  (magic quotes) antes de realizar las consultas, eliminar los dos mensajes y usar simplemente uno, por ejemplo: “los datos ingresados no son correctos”. Contar con un registro (log) para visualizar las conexiones o ingresos sospechosos al área de administración.

Para aclaración se notifico a la institución, mediante correo electrónico (info@fps.gov.bo)  sobre estas vulnerabilidades en su portal.