Shell PHP de wwwolf
J'ai fréquemment rencontré des problèmes en utilisant d'autres shells web :
- Ils utilisent des fonctionnalités récentes de la syntaxe PHP incompatibles avec l'ancienne version de PHP
présente sur certaines cibles.
- Ils font de mauvaises hypothèses sur l'URL distante, cassant l'injection de code PHP ou les
paramètres GET (non) attendus par le serveur.
- Ils n'affichent souvent que le contenu de la sortie standard, en laissant de côté stderr.
- Ils gèrent mal les caractères spéciaux dans l'affichage de la sortie (tels que
<).
- Ils ne permettent pas le téléversement de fichiers, ou proposent une méthode non prise en charge/bloquée par les
réglages de la cible.
- Ils nécessitent une modification manuelle selon que la cible exécute
un système de type UNIX ou Windows.
Voici ma tentative pour résoudre ces problèmes. Contrairement à certaines autres solutions,
celle-ci ne vise même pas de loin à devenir un « framework d'exploitation post-compromission complet ».
Son seul objectif est de fournir un moyen stable et fiable de mettre un pied dans la porte sur la cible
en adhérant autant que possible au principe KISS et en restant suffisamment générique pour vous laisser
construire ce que vous voulez à partir de là, sans vous gêner.

Le shell PHP de WhiteWinterWolf :
- L'accès peut être protégé par mot de passe.
- Il est compatible avec les systèmes de type UNIX et Windows sans modification.
- Il tente de vider le tampon de sortie PHP (c'est-à-dire de supprimer tout code « parasite » déjà
produit par l'application attaquée) et de forcer la fin de l'exécution du code PHP afin de fournir
un comportement propre et stable.
- Le formulaire est envoyé en tant que requête POST en conservant exactement la même URL (y compris
exactement les mêmes paramètres GET, rien n'est ajouté ni supprimé) que celle utilisée pour y accéder
au départ. Aucune hypothèse n'est faite, ce qui le rend adapté aux techniques d'injection de code
tordues. De plus, le serveur distant peut ne pas journaliser les données POST, et donc ne pas
journaliser les commandes réellement exécutées sur la cible.
- Des valeurs par défaut judicieuses sont appliquées :
- Le répertoire de travail courant est défini sur le répertoire de travail courant réel.
Cela présente l'avantage supplémentaire de vous indiquer facilement le type de système distant
(
/var/www/html vs C:\Inetpub\wwwroot).
- L'hôte source de récupération est défini sur votre adresse IP telle que vue depuis le serveur ciblé.
- Vous pouvez librement définir le répertoire de travail et la valeur est conservée entre les commandes.
Un message d'avertissement spécifique est affiché au cas où le paramètre
open_basedir de PHP
pourrait limiter votre capacité à vous déplacer dans le serveur.
- Il existe deux manières différentes de téléverser des fichiers sur vos cibles :
- Un formulaire de téléversement classique si les réglages PHP distants le permettent.
- Récupérer le fichier depuis un hôte et une URL donnés (généralement un hôte contrôlé par
l'attaquant). Cette fonctionnalité implémente une fonctionnalité de récupération HTTP très basique
permettant de contourner la limitation du réglage
url_allow_fopen de PHP. Elle ne gère pas les
choses sophistiquées comme les redirections HTTP ou l'authentification, mais peut gérer SSL/TLS
en préfixant le nom d'hôte en conséquence (tls://203.0.113.37).
- Un lien
Clear cmd permet de vider et de placer le focus sur le champ de saisie de commande
en un seul clic. Je trouve cela pratique pour exécuter rapidement quelques commandes arbitraires
sur le serveur, mais cette fonctionnalité repose sur JavaScript. Si vous voulez éviter JavaScript,
vous pouvez supprimer cette ligne unique, cela n'affectera pas le reste du shell web qui n'utilise
JavaScript nulle part ailleurs.
Ce script applique les réglages du formulaire dans l'ordre donné :
- Répertoire de travail courant.
- Fichiers à téléverser.
- Commande à exécuter.
Cela permet de téléverser un fichier dans un répertoire donné et de l'exécuter immédiatement en
une seule requête HTTP.
Plus d'informations sont disponibles sur la page principale du projet.
Ce script est fourni uniquement à des fins de recherche et d'évaluation en sécurité.
Ne l'utilisez pas pour quelque chose d'illégal !