Automatizando el escalado de privilegios en Linux

Todos sabemos la gran importancia que tiene la post-explotación en la labor del pentesting y una de las categorías más importantes dentro de la misma se hace llamar Privilege Escalation (escalado de privilegios). Ésta consiste en explotar una vulnerabilidad/bug de un determinado software para, como dice su propio nombre, elevar los privilegios dentro de dicho software. Normalmente ésto viene dado por una mala configuración, un error de diseño o, como ya he dicho, por un bug del software.

Ni que decir tiene, que este tipo de vulnerabilidad puede afectar a cualquier tipo de SO que tenga algunos componentes con algún tipo defecto o bug, ya sea por una mala configuración o una vulnerabilidad explotable. Por ejemplo: Mac, Linux, Windows...

En este caso, vamos a hablar sobre un script automatizado que se encarga de encontrar exploits para el kernel Linux que nosotros escojamos. Este script se llama Auto Local Privilege Escalation, un script desarrollado en bash y en python, al descargarlo de GitHub podemos elegir cualquiera de los dos scripts, ambos tienen la misma funcionalidad.

Automatic Local Privilege Escalation se encargará de buscar automáticamente en exploitDB los exploits para Linux más recientes para escalar privilegios para el kernel que nosotros hayamos escogido y, posteriormente, nos preguntará si queremos copiarlos en un directorio local para finalmente darnos la opción de si queremos compilar los programas escritos en C y para hacerlo automáticamente.

Su instalación y uso es muy sencillo:

┌─[alejandro@parrot]─[~/Desktop/Apps]
└──╼ $git clone https://github.com/ngalongc/AutoLocalPrivilegeEscalation 
Cloning into 'AutoLocalPrivilegeEscalation'...
remote: Counting objects: 46, done.
remote: Total 46 (delta 0), reused 0 (delta 0), pack-reused 46
Unpacking objects: 100% (46/46), done.
┌─[alejandro@parrot]─[~/Desktop/Apps]
└──╼ $cd AutoLocalPrivilegeEscalation/

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $ls
auto_priv_exploit.sh  auto_searchsploit.py  README.md

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $./auto_searchsploit.py -h
usage: auto_searchsploit.py [-h] kernel_version

Process some integers.
positional arguments:
  kernel_version  Kernel Version


optional arguments:
  -h, --help      show this help message and exit

En el ejemplo indicaremos que nos busque los exploits disponibles para la versión 2.6 del kernel:

┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $./auto_searchsploit.py 2.6
[*]Potential Exploit :
Linux Kernel 2.6.17.4 - 'proc' Privilege Esc | /linux/local/2013.c
Postfix 2.6-20080814 - (symlink) Privilege E | /linux/local/6337.sh
Linux Kernel 2.6.32 - 'pipe.c' Privilege Esc | /linux/local/10018.sh
Linux Kernel 2.6.18 <= 2.6.18-20 - Privilege | /linux/local/10613.c
Linux Kernel 2.6.17 - 'Sys_Tee' Privilege Es | /linux/local/29714.txt
Linux Kernel 2.6.x - Ptrace Privilege Escala | /linux/local/30604.c
Linux Kernel 2.6.x - 'pipe.c' Privilege Esca | /linux/local/33322.c

Aquí nos indicará en que carpeta se guardaran en caso de que queramos guardarlos localmente, posteriormente, si queremos compilar lo exploits escritos en C:

[*] File destination directory name: /home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6
[*] Do you want to download exploit file to directory described above? [y/n]y
('[+] All file downloaded in', '/home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6/')
[*] C script found
[*] Compile format: gcc C_SCRIPT -o C_SCRIPT.exe
[*] Do you want to compile the downloaded C script?(No Gurantee Success) [y/n]y
[+] Among 4 C file[s], successfully compiled 1 file[s]
[+] Compiled file placed inside /home/alejandro/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6/
┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation]
└──╼ $cd linux_2.6/
┌─[alejandro@parrot]─[~/Desktop/Apps/AutoLocalPrivilegeEscalation/linux_2.6]
└──╼ $ls
10018.sh  10613.c  2013.c  29714.txt  30604.c  30604.c.exe  33322.c  6337.sh

Comentarios