Iloo

https://iloo.wordpress.com

Archivos por Etiqueta: test

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…

Anuncios

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.

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

Ya hecho el análisis de la parte del diseño vayamos con el tema de desarrollo, más propiamente la parte de seguridad.
Inicialmente haciendo un análisis con wapiti obtenemos el siguiente informe:

1. La barra de color rojo indica que hay 2 vulnerabilidades de inyección sql ciega (blind SQL)

Recomendación: las entradas de información que el usuario introduce en la aplicación no deben ser directamente colocadas en sentencias SQL, antes tienen que ser filtradas para evitar ejecuciones malignas en la sentencia SQL.

2. La barra de color naranja indica que existen 7 vulnerabilidades de consumo de recursos, el atacante puede forzar al servidor a consumir muchos recursos y potencialmente provocar un fallo del servidor (Asymmetric resource consumption).

Recomendación: configurar adecuadamente el servidor para evitar el consumo de memoria o la caída del sistema.

Bien ahora vayamos a explotar vulnerabilidades de manera manual:

3. En el siguiente enlace podemos observar otra vulnerabilidad (SQL injection):

http://www.fps.gov.bo/marco_institucional/detalles.php?area=mision%27%20AND%20%271%27=%271

Recomendación: ver punto 1.

4. Revisando un poco el sitio nos encontramos con el siguiente enlace:

http://www.fps.gov.bo/funciones/gestor_descarga.php?dir=sis_gestion_ambiental&file=MANUAL%20DE%20GESTION%20AMBIENTAL.pdf

Es aquí donde hay un error crítico (al parecer el desarrollador no puso mucha dedicación en depurar los errores) el error es un Source Code Disclosure (mi vulnerabilidad favorita).

El error consiste principalmente en que el archivo gestor_descarga.php permite descargar cualquier archivo (incluyendo archivos del sistema).

Ahora lo que sigue es primero descargar el mismo archivo o el archivo index.php, esto para poder ver el archivo de configuración para el acceso a la base de datos, cuyo nombre es  dbconn.php

También se puede descargar el archivo passwd:

Recomendación: reescribir el archivo para no permitir descargar archivos que no se encuentren en un determinado directorio o tener un enlace directo al archivo que se quiere descargar, obviando por consiguiente el archivo encargado de las descargas..

5. Conexión remota a la base de datos, si bien esto puede ser muy útil para el administrador puede ser un punto crítico como en este caso, ya teniendo los datos de usuario y contraseña del servidor mysql podemos conectarnos con este:

Y realizar algunas consultas:

Recomendación: Realizar un mejor portal ya que este puede ser un punto de acceso al servidor (como en este caso) o restringir el acceso remoto a mysql, Un punto que esta fuera de la seguridad es el de la base de datos personalmente no soy un experto pero siempre se recomienda tener un campo de indexación (generalmente llamado id de tipo entero) para realizar búsquedas, ordenamientos, ya que por ejemplo en este caso de la tabla usuario pasar un parámetro entero es mejor que pasar el nombre de usuario, también el uso de la codificación (utf-8) de la base de datos ya que aparecen unos caracteres extraños XD.

Para concluir no importa cuan seguro este el servidor (en este caso CentOS 5), que el administrador del servidor lo controle constantemente y que tan preparado este este, en este caso no contó con que una aplicación pudiera ser un punto fuerte de inseguridad para su servidor, por tanto se tiene que poner mucha dedicación y esfuerzo no solo en el desarrollo de la aplicación si no también en la parte de pruebas de seguridad, ya que compromete información muy valiosa.

Desarrollo: midiendo la velocidad de una web

GTmetrix es una aplicación que sirve principalmente para medir la velocidad de carga de una página web, el uso es sencillo, basta con poner la dirección de la página a ser analizada y GTmetrix se encarga de lo demás, los reportes son muy buenos, a parte de dar el tiempo de carga también ofrece sugerencias para mejorar la web analizada.

Enlace: aquí.

Un ejemplo del análisis: