Skip to content

Vous obtenez un reverse shell mais il est instable. Comment l'améliorez-vous ?

Réponse courte

On lance un pseudo-terminal (généralement python -c 'import pty; pty.spawn("/bin/bash")'), on le met en arrière-plan avec Ctrl-Z, on exécute stty raw -echo côté local, on le remet au premier plan, puis on réinitialise TERM et le nombre de lignes/colonnes. On obtient un TTY complet avec contrôle des tâches, complétion par tabulation et éditeurs fonctionnels.

Un reverse shell brut issu de nc est un shell « rudimentaire » : pas de contrôle des tâches, pas de complétion par tabulation, pas de touches fléchées, et Ctrl-C tue la session entière au lieu de la commande en cours. Des outils comme su, ssh, sudo et les éditeurs de texte refusent de s'exécuter car aucun véritable terminal n'est attaché. Passer à un vrai TTY est presque obligatoire avant l'élévation de privilèges.

La procédure standard

La séquence la plus courante :

  1. Lancer un PTY sur la cible : python3 -c 'import pty; pty.spawn("/bin/bash")'. Cela alloue un pseudo-terminal pour que les programmes croient disposer d'un véritable terminal.
  2. Mettre le shell en arrière-plan avec Ctrl-Z.
  3. Corriger votre terminal local : stty raw -echo; fg. Le mode raw transmet les frappes directement (Ctrl-C atteint donc le processus distant et non votre nc), et désactiver l'écho évite les caractères doublés.
  4. Restaurer l'environnement : export TERM=xterm et définir la taille de la fenêtre avec stty rows <r> cols <c> pour que les éditeurs s'affichent correctement.

Vous obtenez ensuite la complétion par tabulation, l'historique des commandes, un Ctrl-C qui n'interrompt que la tâche au premier plan, et les outils plein écran.

Quand python est absent

Repliez-vous sur script -qc /bin/bash /dev/null, ou utilisez socat pour un PTY pleinement interactif en une seule étape si vous parvenez à déposer le binaire sur l'hôte. expect et certains environnements d'exécution (perl, ruby) peuvent aussi lancer un PTY.

Pourquoi c'est important

Sans TTY, vous ne pouvez pas faire su vers un autre utilisateur, exécuter sudo, ni utiliser les outils interactifs d'élévation de privilèges qui font tomber les machines. Cette amélioration est le pont entre « j'ai l'exécution de code » et « je peux réellement travailler ».

Ce que recherchent les recruteurs

Ils veulent l'incantation exacte — pty.spawn, Ctrl-Z, stty raw -echo, fg et la correction de TERM — ainsi que la raison d'être de chaque étape, et une solution de repli pour quand python est absent.

Questions de suivi probables

  • Pourquoi Ctrl-C tue-t-il tout votre shell avant que vous ne l'amélioriez ?
  • Que faites-vous si python n'est pas installé sur la cible ?

Sources

Certifications

Recevez 100 questions d'entretien en cybersécurité + réponses

Laissez votre e-mail et nous vous enverrons le pack PDF gratuit et le jeu de flashcards.

Pas de spam. Désabonnez-vous à tout moment.