sábado, 27 de enero de 2018

Aprovecharse de Software desactualizado e inseguro para acceder a sistemas ajenos

Uno de los consejos que se suele dar siempre a los usuarios es el de actualizar todo su software para evitar posibles agujeros de seguridad. Pero claro, muchas veces dices esto y te toman por paranoico...hasta que lo demuestras. Hoy os vengo a hacer esa prueba que suelo hacer. Es una prueba bastante sencilla y que suele gustar a la gente.


Primero os voy a comentar el escenario que he planteado para que entendáis más o menos quiénes forman parte de este "show" y qué es lo que vamos a hacer.

Escenario 

Dispondremos de un equipo con un sistema operativo Microsoft Windows 7 con el software vulnerable, BadBlue Enterprise Edition 2.7 y otro equipo en Kali Linux. El equipo en Kali Linux será el atacante y el equipo en Windows 7 será la víctima.




La IP del atacante será 192.168.1.41/24 y la de la víctima 192.168.1.32/24, por lo que estarán los dos equipos en la misma red LAN. En la máquina víctima hay montado un Wordpress y se usa el software BadBlue, que es vulnerable y es el software que se va a usar para esta prueba de concepto.
Desarrollo del ataque
Para realizar correctamente el ataque se debe iniciar el software que estará escuchando por el puerto 80 en la máquina víctima. 
Se iniciará en el localhost y nos permitiría añadir archivos o buscar ficheros que tuviésemos en nuestro servidor.  

Dentro de la fase de fingerprinting, haremos un escaneo a los puertos del equipo 192.168.1.32 para tratar de sacar el software que hay tras cada puerto. Tras realizar el Banner Grabbing observamos que, entre todos sus puertos abiertos, está el puerto 80, del servicio http que corresponde con BadBlue.
Si buscamos esta versión que hemos obtenido con nmap encontraremos que existe un CVE asociado a esta versión y, además 1 módulo de Metasploit y con un CVSS de 7.5. 


Dentro de Metasploit, si buscamos cualquier exploit que contenga la palabra badblue, nos mostrará dos resultados, uno para realizar un ataque de Buffer Overflow y otro de PassThru, siendo esta última la que trataremos explotar y de conseguir acceso sin necesidad de iniciar sesión en la máquina víctima.
Usamos este exploit y en las opciones ya tendremos definidas la opción RPORT y SSL, sólo nos quedará agregar la máquina remota que será la víctima.
A continuación veremos si se ha introducido correctamente el filtro RHOST. Ahora seleccionaremos el payload que vamos a utilizar para explotar la vulnerabilidad existente en BadBlue.
 El payload a utilizar será el que corresponde a Windows [ya que la máquina víctima es un Windows] y le diremos que nos abra una puerta a su equipo mediante una sesión meterpreter. Como ya tenemos todas las opciones rellenas en el payload que vamos a utilizar, no tendremos que especificar nada más y podremos seguir adelante con el ataque. 
Solamente tendremos que escribir exploit y nos montará un escenario y posteriormente nos abrirá una sesión meterpreter y con el comando sysinfo veremos información relativa a la víctima para comprobar que realmente estamos dentro de su equipo. 
Una vez dentro de su ordenador, ya podemos hacer de todo, como iniciar un keylogger y capturar, por ejemplo, sus credenciales de Facebook, ya tendríamos su usuario y contraseña que podríamos probar en otros servicios. 


 Si intentamos elevar privilegios veremos que Kali nos dice que ya somos unos usuarios con permisos, es decir, el usuario al que hemos accedido pertenece al grupo de Administradores de Windows.
Esto facilita el trabajo, pues solamente tenemos que escribir getsystem y seremos SYSTEM en el equipo víctima. Esto nos posibilita poder descargar o subir cualquier archivo sin problemas de permisos. 
Si se cotillea por el sistema, nos percatamos de que se usa un XAMPP [X=sistema operativo X, A=Apache, M=MySQL, P=PHP, P=ProFTP]. Aquí se hace más interesante nuestro ataque dado que somos SYSTEM y tenemos permiso para hacer lo que queramos. 
Es realmente curioso el caso de XAMPP, ya que en .../xampp crea y guarda un documento que se llama passwords.txt donde se almacenan en texto claro los usuarios y contraseñas del administrador de la base de datos MySQL, de Filezilla,etc. Un atacante que tuviese acceso a este archivo, podría acceder al sistema sin mayores problemas si en el archivo /etc/mysql/my.cnf el bind-address está con la dirección 0.0.0.0 o algo por el estilo. 
Si se permitiese, mediante el bind-address=0.0.0.0, la conexión remota de la base de datos, como ya sabemos las credenciales del usuario root y muy posiblemente se haya dado permisos al usuario root con GRANT ALL PRIVILEGES ON *.* TO root@’%’ ; podamos modificar todo lo que queramos en la base de datos, desde eliminar usuarios hasta borrar toda una Base de datos. Podemos imaginar los daños que podría ocasionar esto en organizaciones como Amazon o un Hospital. 
Además, como podemos observar, dispone de la carpeta wordpress con su .htaccess y, entre otras cosas, el xmlrpc.php, fuente de tantos problemas de DoS o DDoS.

EL XML-RPC es el que permite los pingback y los trackbacks, es decir, el encargado de emitir una notificación al autor de una web cuando se ha subido un post en el caso de Wordpress. El problema es que en sistemas webs como Wordpress es posible hacer DoS o DDoS a base de F5, sobre todo si no se tienen sistemas de supercaching para mejorar el rendimiento de nuestra web y reducir la probabilidad de sufrir una denegación de servicio.

Pero esto se puede evitar de varias formas:

  1. Renombrar el fichero xmlrpc.php. Esto se tendría que hacer con cada actualización de Wordpress ya que con cada actualización nos pondrá el xmlrpc original.
  2. Se podría añadir add_filter('xmlrpc_enable','__return_false'); en el archivo wp-config.php después de la línea en la que aparece escrito (ABSPATH . 'wp-settings.php');
  3. Añadir a functions.php el siguiente código 
add_filter( ‘xmlrpc_methods’, function( $methods ) { 
unset( $methods['pingback.ping'] );
return $methods;
} );
Son 3 soluciones bastantes sencillas para aplicar en nuestro Wordpress, aunque como se puede observar, hemos entrado en un bucle infinito, ya que conocemos las credenciales del usuario root y el bind-address permite la configuración remota, por lo que podremos entrar a la base de datos, modifciarla o borar una base de dato cualquiera. Además tenemos acceso a la máquina víctima. En definitiva, un gran problema de seguridad que, si sois administradores de sistemas, deberéis tener muy en cuenta.
¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...