WSH 2.2.1 ========= =============================================================================== GRAY-WORLD.NET / WSH ==================== Le programme WSH est partie intégrante des projets Gray-World.net. Notre équipe présente sur le site http://gray-world.net les projets et publications sur lesquels nous travaillons. Ces projets et publications sont relatifs au contournement des systèmes de contrôle d'accès réseau (NACS bypassing) ainsi qu'à la sécurité des systèmes et réseaux. =============================================================================== WSH (Web Shell) - Shell distant UNIX/WIN sur un flux HTTP/HTTPS. FONCTIONNALITES --------------- + Support SSL (*); + Support historique de ligne de commande (**); + Emission/réception de fichiers; + Protection du script serveur par une clé secrète dans les messages HTTP; + Codage du flux de données par Xor; + Peut utiliser un serveur proxy HTTP (pour cacher l'ip du client ou passer au travers d'un firewall); (*) Le package Net::SSLeay est requis pour l'hôte client: Téléchargez le sur: http://search.cpan.org/author/SAMPO/Net_SSLeay.pm-1.22/ (**) - Les packages suivants sont requis sur l'hôte client: 1) readline-4.2a.tar.gz ou superieur sur http://www.gnu.org/directory/readline.html 2) ReadLine-Gnu-1.12.tar.gz ou superieur sur http://search.cpan.org/search?dist=Term-ReadLine-Gnu FONCTIONNEMENT -------------- +----------+ +------------+ | +-------------------+ | CLIENT |<-HTTP->| proxy http |<-HTTP->| SERVEUR WEB | | wsh-c.pl | |(optionnel) | | | /cgi-bin/wsh-s | +----------+ +------------+ | +-------------------+ | Firewall? wsh-c.pl offre un prompt shell, encapsule les commandes dans des requêtes HTTP POST et les envoie au script wsh-s localisé sur le serveur Web distant soit directement, soit via un serveur proxy HTTP; wsh-s extrait et exécute les commandes des requêtes HTTP POST et renvoie les sorties STDOUT et STDERR dans des messages de reponse HTTP. Par défaut, les deux script codent le flux avec l'opération Xor. INSTALLATION ------------ 1. Vérifiez le chemin vers Perl dans le fichier "config.pl"; 2. Exécutez "config.pl" : `./config.pl` OPTIONNEL ----------------------------------------------------------------- Vérifiez le fichier "wsh-c.conf", et si vous voulez utiliser un proxy HTTP; use_proxy 1 proxy_ip port --------------------------------------------------------------------------- 3. Pour les versions wsh-s.c et WshServlet.java, vérifiez le chemin vers le shell (*Nix ou Win32); 4a. Version Perl : + Vérifiez le chemin vers Perl et les permissions du fichier "wsh-c.pl" créé; + Positionnez wsh-s.pl dans le répertoire cgi-bin destination et vérifiez le chemin vers perl; 4b. Version C : + Positionnez wsh-s.c dans le répertoire cgi-bin et compilez-le (supprimez le source par la suite : * Sous *Nix : gcc -g2 -Wall -o wsh-s wsh-s.c * Sous Win32 (Visual C++) : cl /W3 wsh-s.c ws2_32.lib * Sous Win32 Cygwin : Positionnez la variable WIN32_RUN dans le code source et compilez le comme pour la version *Nix. 4c. Version servlet Java : + Positionnez la servlet compilée dans un répertoire autorisant l'exécution de servlets. A propos de SSL : a. Si vous utilisez un client SSL wsh-c.pl, vous pouvez configurer ce client pour qu'il vérifie le CN du certificat du serveur (Notez que ceci peut être détourné !): my $ssl_set_check=1; # (0 || 1) don't or check the webserver # ssl certificate with internal # ssl_crt_subject. my $ssl_crt_subject="/C=Fr/ST=Paris/L=Paris/O=XXX/OU=XXX/CN=XXX"; => Vous pouvez le faire en exécutant une fois le client wsh-c.pl et en récuperant le CN affiché par le message d'erreur. b. Nous n'avons pas testé le client wsh-c-SSL.pl sur un systême Win32. Si vous avez la possibilité d'installer Net:SSLeay sur Win32 et de tester le client, envoyez-nous un mail. USAGE ----- sh# client/wsh-c.pl targethost.com/cgi-bin/wsh-s.pl ..ou sh# client/wsh-c.pl targethost.com/cgi-bin/wsh-s ..si vous utilisez la version C wsh-s ou sh# client/wsh-c.pl targethost.com/servlet/WshServlet ..si vous utilisez la version servlet Java. est la clé par défaut, si vous ne la changez pas avec config.pl ou manuellement dans les fichiers wsh-c.conf et wsh-s.pl/wsh-s.c. Commandes WSH: exit comme son nom l'indique; history afficher l'historique des commandes; ! exécute la commande dans l'historique; wshget reçoit le fichier du serveur distant dans le répertoire local courant; wshput envoie le fichier du répertoire local courant au serveur distant; lect change de lecteur sous Win32 (ex: "lect d:"); LICENCE ------- WebShell est distribué sous les termes de la licence GNU - General Public Licence version 2.0 et est copyright (c) 2002,2003,2004 Alex Dyatlov et Simon Castro . Consultez le fichier COPYING pour plus de details. AUTEURS ------- Alex Dyatlov - Code principal de WSH. Simon Castro - Support WIN et SSL, version C wsh-s, version java WshServlet. La dernière version de WSH est disponible sur le site officiel gray-world.net: http://gray-world.net/ ou sur son miroir : http://www.entreelibre.com/gray-world.net/ Le forum de discussion WSH est disponible sur: http://gray-world.net/board/