L’Art d’utiliser un WebShell !
A partir du moment où vous réussissez à placer un WebShell sur une machine cible, on peut dire que vous êtes bénis des dieux du Cybermonde. C’est beau, c’est pratique, ça passe sous les radars. Bref, c’est un WebShell !
Vous voulez savoir ce que c’est ? Comment on s’en sert ?
Allez, suivez le guide !
De quoi parle-t-on ?
Le webshell est un programme qui doit se upload sur la machine cible.
Plusieurs manières, soit grâce à une commande sur le site web qui permet d’upload du contenu.
Soit en utilisant une faille permettant l’upload de contenu.
Comme son nom l’indique, le webshell offre la possibilité d’obtenir un shell avec les droits de l’application l’ayant ouvert. Le plus souvent www-data.
Ils sont + ou – jolis en fonction.
Où en trouver ?
Pour ma part, je peux que vous conseiller de prendre les WebShell trouvables sur SecList
En fin de lignes, vous avez un backdoor_list. Celle-ci list tous les WebShell connus avec leur nom d’origine. Ceci permet de scanner un site et voir si un webshell serait déjà upload.
Si vous utilisez la distribution Kali, c’est par ici : /usr/share/webshells/
Pour le test qui va arriver, j’ai utilisé un webshell un peu spécial qui vient des Anonymous_Fox. Un groupe d’activistes à la retraite. Mais leur webshell est sympa et bien offusqué. Il n’est plus disponible et plus mis à jour. Une petite pépite à moi.
The TEST !
Pour ce test, je vais cibler la machine suivante : Root-Me du site TryHackMe
Cette machine a un page web de upload de contenu mal protégé. Allez, suivez le guide !
OWASP ZAP, la référence !
Le but n’est pas d’apprendre à utiliser ce logiciel. Juste faire de la découverte.
Après avoir effectué une recherche de nouvelles pages non référencées au début, on découvre un dossier icons. Pas intéressant.
Mais on trouve un dossier /Upload avec une page et un dossier /Panel !! On y go !
Je vous montre les pages panel et uploads :
On voit bien, qu’on a une possibilité d’upload et qu’on a le répertoire d’arrivé. On est d’accord, tout est parfait, on est sur une machine « easy ».
J’insère délicatement mon WebShell dans ton UpLoad
J’accélère en vous disant qu’insérer un .php est impossible. Je renomme mon webshell.php en .phtml
Et là sa passe.
Je passe le « je clique sur upload, je choisis mon plus beau webshell et je l’injecte délicatement« .
Et on découvre ensuite, notre webshell bien au chaud dans le dossier uploads.
Il est bien dur mon WebShell !
Bien évidemment, je clique sur le lien mis à disposition par moi même !
On peut voir plein de chose.
Déjà, c’est un environnement à lui tout seul.
En haut à gauche les infos sur la machine, l’utilisateur etc…
Comme dit, c’est un shell avant tout.
Je vais donc me balader dans le serveur avec les droits de www-data
Un petit tour sur Sec. Info pour voir d’un coup d’oeil plein de choses intéressantes :
Me voilà à la racine. je vais aller dans le /tmp car j’y ai tous les droits.
Vous pouvez voir en bas à droite, on peut très facilement Upload un fichier. Trop facile.
PEASS and love
Pour ceux qui ne connaissent pas, PEASS permet de faire un check-up rapide d’un environnement linux ou windows. Une fois uploadé, je l’exécute. Mais avant ça, je vais me mettre sur un vrai shell.
On va se faire un petit reverse shell facilement.
Je vais vous l’avouer, je voulais vous montrer le résultat avec la CVE-2021-4034 mais ça a été patché il y a peu. Mais ce n’est que parti remise !
Je te reverse tout ça
On va dans la catégorie Network.
C’est simple, une image vaut plus qu’une phrase :
Oubliez pas de netcat avant : nc -lvnp 31337
Finish Him !
On va finir rapide maintenant, le but étant la présentation d’un WebShell en situation. Facile certes, mais en situation.
On met PEASS en x : chmod +x PEASS.sh
Et on l’exécute ! Pan !
Le but ici n’étant pas de vous montrer la fin du CTF, mais je vous aurais bien fait avancer. Lisez bien le compte rendu de PEASS et vous aurez un début de réponse.
Conclusion
Un WebShell, quand on peut l’utiliser, c’est bien, c’est facile, c’est joli.
Ça fait pas le café mais si on s’en fait un, on peut le boire tranquillement.
Il en existe des milliers, on peut s’en créé un soi-même si on a les compétences requises, dans des langage variés.
Bref, j’ai utilisé un WebShell.