BlogCyber Weapons Lab

Cómo: utilizar SUDO_KILLER para identificar y abusar de las configuraciones incorrectas de Sudo

Sudo es una necesidad en la mayoría de los sistemas Linux, la mayoría de los cuales probablemente se estén utilizando como servidores web. Si bien el principio de privilegio mínimo se aplica típicamente, las configuraciones incorrectas de sudo pueden conducir fácilmente a una escalada de privilegios si no se media adecuadamente. Lo que nos lleva a SUDO_KILLER, una herramienta utilizada para identificar configuraciones incorrectas de sudo que pueden ayudar en la escalada de privilegios.

El error de configuración más evidente es ejecutar una versión desactualizada de sudo, especialmente una que tiene vulnerabilidades conocidas. Simplemente no hay excusa para ello y, a menudo, el mejor curso de acción desde un punto de vista defensivo es mantener todo actualizado.

Otros problemas surgen al poder ejecutar sudo sin una contraseña; todo lo que se necesita es un comando para obtener root en una situación como esa. A veces, incluso saber si otro usuario ha utilizado sudo puede resultar ventajoso para un atacante. Otras cosas relacionadas con sudo, como habilitar el bit SUID, pueden tener consecuencias bastante desagradables si no se toman precauciones.

Para demostrar SUDO_KILLER, usaremos Metasploitable 2 como objetivo y Kali Linux como nuestra máquina local.

Paso 1: Configuración inicial

Lo primero que debemos hacer es descargar SUDO_KILLER desde GitHub. Podemos hacer esto clonando en el repositorio:

~# git clone https://github.com/TH3xACE/SUDO_KILLER

Cloning into 'SUDO_KILLER'...
remote: Enumerating objects: 59, done.
remote: Counting objects: 100% (59/59), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 414 (delta 34), reused 4 (delta 1), pack-reused 355
Receiving objects: 100% (414/414), 164.29 KiB | 1.51 MiB/s, done.
Resolving deltas: 100% (251/251), done.

Ahora debería haber un nuevo directorio clonado desde GitHub. Cámbielo usando el CD comando, y lista el contenido con ls para verificar que todo está ahí:

~/SUDO_KILLER# ls

Backup_old.sh  bins.txt  cve.sudo2.txt  cve.sudo.manual.txt  cve_updatev2.sh  Dockerfile  exploits  notes  Old_version.sh  README.md  SUDO_KILLERv1.3.3.sh

El script SUDO_KILLER ya es ejecutable, por lo que podemos usar la barra de puntos para ejecutarlo. Tack en el -h flag para ver el menú de ayuda y el ejemplo de uso:

~/SUDO_KILLER# ./SUDO_KILLERv1.3.3.sh -h

./SUDO_KILLERv1.3.3.sh: option requires an argument -- h

 Example: ./sudo_killer.sh -c -r report.txt -e /tmp/

OPTIONS:
-k  Enter keyword
-e  Enter export location
-s  Supply user password for sudo checks (NOT SECURE)
-c  Include sudo CVE
-r  Enter report name
-h  Displays this help text

Running with no options = limited scans/no output file
 #########################################################

Parece bastante sencillo, pero ¿qué pasa si queremos ejecutarlo en un objetivo que está configurado de tal manera que no tenemos acceso a Internet? No podemos simplemente clonar el repositorio si no podemos alcanzarlo en primer lugar.

Algunas de las características de esta herramienta requieren otros elementos en el directorio que clonamos, por lo que podemos transferirlos al objetivo uno por uno, o podemos crear un archivo y luego transferirlo de una vez.

Pero primero, para demostrarlo, asegurémonos de tener una sesión en el objetivo con un shell completamente interactivo, para que podamos usar SUDO_KILLER en todo su potencial.

Paso 2: transferir a destino

Antes de transferir SUDO_KILLER a nuestro objetivo, debemos ejecutar el script de actualización para que podamos tener una lista actualizada de CVE para comparar. Al hacerlo, llegará a Internet, por lo que debemos hacerlo en nuestra máquina local. Primero, en nuestro repositorio de GitHub clonado, haga que el script de actualización sea ejecutable:

~/SUDO_KILLER# chmod +x cve_updatev2.sh

Luego, podemos ejecutarlo y creará una lista actualizada de CVE:

~/SUDO_KILLER# ./cve_updatev2.sh

--2019-08-01 12:43:17--  https://www.cvedetails.com/vulnerability-list.php?vendor_id=118
Resolving www.cvedetails.com (www.cvedetails.com)... 104.18.54.201, 104.18.55.201, 2606:4700:30::6812:37c9, ...
Connecting to www.cvedetails.com (www.cvedetails.com)|104.18.54.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘cve_list.html’

cve_list.html                                             [ <=>                                                                                                                   ]  53.55K  --.-KB/s    in 0.1s

2020-01-01 12:43:18 (526 KB/s) - ‘cve_list.html’ saved [54831]

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 47089    0 47089    0     0   114k      0 --:--:-- --:--:-- --:--:--  114k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 47089    0 47089    0     0   148k      0 --:--:-- --:--:-- --:--:--  148k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 79784    0 79784    0     0   202k      0 --:--:-- --:--:-- --:--:--  202k

...

A continuación, suba un nivel para que ya no estemos en el directorio SUDO_KILLER:

~/SUDO_KILLER# cd ..

Ahora podemos usar alquitrán para comprimir el directorio en un solo archivo:

~# tar -zcvf sudo_killer.tar.gz SUDO_KILLER/

La sintaxis es tar y sus banderas, seguido del nombre deseado del archivo (que termina en .tar.gz), seguido del nombre del directorio a comprimir.

Luego podemos entregar el archivo usando el servidor HTTP de Python:

~# python -m SimpleHTTPServer

Serving HTTP on 0.0.0.0 port 8000 ...

De vuelta en el destino, cambie a un directorio adecuado para trabajar desde:

target@metasploitable:/$ cd /var/tmp/

Y usa el wget utilidad para recuperar el archivo que se sirve en nuestra máquina local:

target@metasploitable:/var/tmp$ wget http://10.10.0.1:8000/sudo_killer.tar.gz

--14:52:35--  http://10.10.0.1:8000/sudo_killer.tar.gz
           => `sudo_killer.tar.gz'
Connecting to 10.10.0.1:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 273,301 (267K) [application/gzip]

100%[=========================================================================================================================================================================>] 273,301       --.--K/s

14:52:35 (2.35 MB/s) - `sudo_killer.tar.gz' saved [273301/273301]

Ahora que el archivo se transfirió, podemos usar tar nuevamente para descomprimir el archivo:

target@metasploitable:/var/tmp$ tar -xvf sudo_killer.tar.gz

Deberíamos poder cambiar al directorio descomprimido ahora:

target@metasploitable:/var/tmp$ cd SUDO_KILLER/

Y enumere todos los archivos:

target@metasploitable:/var/tmp/SUDO_KILLER$ ls

Backup_old.sh  bins.txt  cve.sudo2.txt  cve.sudo.manual.txt  cve_updatev2.sh  Dockerfile  exploits  notes  Old_version.sh  README.md  SUDO_KILLERv1.3.3.sh

Usar tar para crear un archivo y transferirlo a un host remoto es una manera fácil de mover múltiples archivos o directorios entre máquinas.

Paso 3: uso básico

Ahora que todos estamos configurados en el objetivo, podemos usar SUDO_KILLER para identificar posibles errores de configuración de sudo. Podemos ejecutar el script sin ninguna opción para un resumen básico del entorno y su configuración relacionada con sudo:

target@metasploitable:/var/tmp/SUDO_KILLER$ ./SUDO_KILLERv1.3.3.sh

   _____ _    _ _____   ____    _  _______ _      _      ______ _____
  / ____| |  | |  __  / __   | |/ /_   _| |    | |    |  ____|  __ 
 | (___ | |  | | |  | | |  | | | ' /  | | | |    | |    | |__  | |__) |
  ___ | |  | | |  | | |  | | |  <   | | | |    | |    |  __| |  _  /
  ____) | |__| | |__| | |__| | | .  _| |_| |____| |____| |____| |  
 |_____/ ____/|_____/ ____/  |_|______|______|______|______|_|  _

 @TH3_ACE - BLAIS David
 Contribute and collaborate to the KILLER project @ https://github.com/TH3xACE

[+] Intro
Scan started at:
Wed Jan 1 14:55:25 EDT 2020

Current user: target

============ Initial check - Quick ==================

[+] Sudo version:
Sudo version 1.6.9p10

[+] SUDO possible without a password!
usage: sudo -h | -K | -k | -L | -l | -V | -v
usage: sudo [-bEHPS] [-p prompt] [-u username|#uid] [VAR=value]
            {-i | -s | <command>}
usage: sudo -e [-S] [-p prompt] [-u username|#uid] file ...

[-] Accounts that have recently used sudo:
/home/msfadmin/.sudo_as_admin_successful

============ Checking for Common Misconfiguration ==================

[+] Sudo without password for other user, was found:

[-] You can impersonate users, by running the cmd: sudo -u [USER] /path/bin
============ Checking for File owner hijacking ==================

============ Checking for File permission hijacking ==================

============ Checking for Missing scripts from sudoers ==================

sudo: Only one of the -e, -h, i, -k, -K, -l, -s, -v or -V options may be used
[+] The script/s found in sudoers can be found at: /tmp/sh_list.txt
[-] Checking whether there are any missing scripts defined in sudoers but that no longer exists on system:

============ Checking for Excessive directory right where the scripts from sudoers reside ==================

[+] The script/s found in sudoers can be found at: /tmp/sh_list.txt
============ Checking for Writable scripts from sudoers ==================

============ Checking whether vulnerable to Credential Harvesting ==================

target
============ Checking for Dangerous environment variables ==================

============ Checking for Dangerous bin from sudoers ==================

[+] Common dangerous bins:
[-] dangerous bins (https://gtfobins.github.io/#+sudo):

  [*##################### SCAN_COMPLETED ##########################*]

Comienza con un bonito banner, información sobre el autor y nos dice el usuario actual con el que se está ejecutando el script.

A continuación, nos da la versión de sudo que está instalada, que puede ser útil para encontrar exploits, especialmente en versiones anteriores. Luego, la herramienta nos dice si es posible sudo sin una contraseña, y enumera todas las cuentas del sistema que hayan usado recientemente sudo con éxito.

Luego verifica algunas configuraciones erróneas comunes, varios permisos de archivos y variables de entorno peligrosas y binarios. También podemos utilizar el -C marca para verificar automáticamente las vulnerabilidades relacionadas con la versión de sudo que se encontró:

target@metasploitable:/var/tmp/SUDO_KILLER$ ./SUDO_KILLERv1.3.3.sh -c

   _____ _    _ _____   ____    _  _______ _      _      ______ _____
  / ____| |  | |  __  / __   | |/ /_   _| |    | |    |  ____|  __ 
 | (___ | |  | | |  | | |  | | | ' /  | | | |    | |    | |__  | |__) |
  ___ | |  | | |  | | |  | | |  <   | | | |    | |    |  __| |  _  /
  ____) | |__| | |__| | |__| | | .  _| |_| |____| |____| |____| |  
 |_____/ ____/|_____/ ____/  |_|______|______|______|______|_|  _

 @TH3_ACE - BLAIS David
 Contribute and collaborate to the KILLER project @ https://github.com/TH3xACE

[+] Intro
Scan started at:
Wed Jan 1 15:08:44 EDT 2020

Current user: target

============ Initial check - Quick ==================

[+] Sudo version:
Sudo version 1.6.9p10

[+] SUDO possible without a password!
usage: sudo -h | -K | -k | -L | -l | -V | -v
usage: sudo [-bEHPS] [-p prompt] [-u username|#uid] [VAR=value]
            {-i | -s | <command>}
usage: sudo -e [-S] [-p prompt] [-u username|#uid] file ...

[-] Accounts that have recently used sudo:
/home/msfadmin/.sudo_as_admin_successful

============ Checking for disclosed vulnerabilities related to version used (CVE) ==================

[+] Sudo version vulnerable to the following CVEs:
 CVE-2011-0008 + http://www.mandriva.com/security/advisories?name=MDVSA-2011:018 https://exchange.xforce.ibmcloud.com/vulnerabilities/64965 http://lists.fedoraproject.org/pipermail/package-announce/2011-January/053263.html http://lists.fedoraproject.org/pipermail/package-announce/2011-January/053341.html http://www.vupen.com/english/advisories/2011/0195 https://bugzilla.redhat.com/show_bug.cgi?id=668843 http://www.vupen.com/english/advisories/2011/0199
 CVE-2010-1646 + https://bugzilla.redhat.com/show_bug.cgi?id=598154 http://www.vupen.com/english/advisories/2010/1478 http://www.vupen.com/english/advisories/2010/1518 http://www.vupen.com/english/advisories/2011/0212 http://www.vupen.com/english/advisories/2010/1519 http://www.sudo.ws/sudo/alerts/secure_path.html http://www.vupen.com/english/advisories/2010/1452 http://www.sudo.ws/repos/sudo/rev/a09c6812eaec http://www.sudo.ws/repos/sudo/rev/3057fde43cf0 http://www.securityfocus.com/bid/40538 http://www.securitytracker.com/id?1024101 http://www.securityfocus.com/archive/1/514489/100/0/threaded http://www.redhat.com/support/errata/RHSA-2010-0475.html http://www.mandriva.com/security/advisories?name=MDVSA-2010:118 http://www.debian.org/security/2010/dsa-2062 http://wiki.rpath.com/Advisories:rPSA-2010-0075 http://lists.opensuse.org/opensuse-security-announce/2011-01/msg00006.html http://security.gentoo.org/glsa/glsa-201009-03.xml http://lists.fedoraproject.org/pipermail/package-announce/2010-June/043026.html http://lists.fedoraproject.org/pipermail/package-announce/2010-June/042838.html http://lists.fedoraproject.org/pipermail/package-announce/2010-June/043012.html
============ Checking for Common Misconfiguration ==================

[+] Sudo without password for other user, was found:

[-] You can impersonate users, by running the cmd: sudo -u [USER] /path/bin
============ Checking for File owner hijacking ==================

============ Checking for File permission hijacking ==================

============ Checking for Missing scripts from sudoers ==================

sudo: Only one of the -e, -h, i, -k, -K, -l, -s, -v or -V options may be used
[+] The script/s found in sudoers can be found at: /tmp/sh_list.txt
[-] Checking whether there are any missing scripts defined in sudoers but that no longer exists on system:

============ Checking for Excessive directory right where the scripts from sudoers reside ==================

[+] The script/s found in sudoers can be found at: /tmp/sh_list.txt
============ Checking for Writable scripts from sudoers ==================

============ Checking whether vulnerable to Credential Harvesting ==================

target
============ Checking for Dangerous environment variables ==================

============ Checking for Dangerous bin from sudoers ==================

[+] Common dangerous bins:
[-] dangerous bins (https://gtfobins.github.io/#+sudo):

  [*##################### SCAN_COMPLETED ##########################*]

Eso nos da algunos números CVE y enlaces de soporte. El resultado es un poco complicado, pero la herramienta aún se está desarrollando activamente, por lo que puede cambiar en el futuro. Por ahora, sin embargo, funciona.

SUDO_KILLER también tiene una función útil para guardar los resultados en un archivo. Utilizar el -r bandera seguida del nombre deseado del informe para hacerlo:

target@metasploitable:/var/tmp/SUDO_KILLER$ ./SUDO_KILLERv1.3.3.sh -c -r results.txt

   _____ _    _ _____   ____    _  _______ _      _      ______ _____
  / ____| |  | |  __  / __   | |/ /_   _| |    | |    |  ____|  __ 
 | (___ | |  | | |  | | |  | | | ' /  | | | |    | |    | |__  | |__) |
  ___ | |  | | |  | | |  | | |  <   | | | |    | |    |  __| |  _  /
  ____) | |__| | |__| | |__| | | .  _| |_| |____| |____| |____| |  
 |_____/ ____/|_____/ ____/  |_|______|______|______|______|_|  _

 @TH3_ACE - BLAIS David
 Contribute and collaborate to the KILLER project @ https://github.com/TH3xACE

[+] Intro
Scan started at:
Wed Jan 1 15:10:42 EDT 2020

Current user: target

[+] Report name:  results.txt-20-01-01

============ Initial check - Quick ==================

...

Es posible que SUDO_KILLER no tenga muchas opciones, pero es una excelente manera de identificar cualquier problema potencial con sudo que podría conducir a una escalada de privilegios.

Terminando

Hoy, aprendimos cómo usar SUDO_KILLER, una herramienta que puede identificar posibles errores de configuración de sudo que podrían usarse en la escalada de privilegios. Primero, descargamos la herramienta de GitHub y realizamos un uso básico. A continuación, vimos cómo transferirlo a un objetivo en situaciones en las que el acceso a Internet no está disponible. Finalmente, ejecutamos la herramienta en el objetivo y vimos algunos problemas potenciales con sudo que podrían ser abusados. SUDO_KILLER es una pequeña herramienta ingeniosa que puede ayudar a los piratas informáticos a obtener la raíz a través de los errores de configuración de sudo.

Imagen de portada de radu lucian / FreeImages

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar