p0wny​@​shell, un shell PHP simple, mais (trop) efficace

Ça fait quelques mois que je reçois de temps à autre des messages (email, MP sur Twitter,...) de personnes ayant retrouvé p0wny​@​shell sur leur serveur et qui me demandent, souvent à moitié paniquées, comment s'en débarrasser. Étant donné que je n'ai pas encore parlé de ce logiciel sur ce blog, je vais saisir cette occasion pour vous le présenter et vous donner quelques conseils.

Qu'est-ce que p0wny​@​shell ? À quoi ça sert ?

Pour commencer, qu'est-ce que p0wny​@​shell ? Eh bien il s'agit d'un shell PHP. C'est un programme, écrit avec le langage PHP (ce choix n'est pas anodin), qui permet d'exécuter des commandes sur un serveur distant, un peu comme si on accédait à sa console via SSH. Mais contrairement à une connexion SSH, p0wny​@​shell n'offre absolument aucune sécurité. Il est donc vivement déconseillé de l'utiliser sur son serveur !

Mais alors à quoi ça peut bien servir si c'est pas sécurisé et qu'on ne doit pas l'utiliser ? Eh bien pour résumer, un shell PHP comme p0wny​@​shell, ça sert à « pirater » des serveurs. Voilà, j'ai lâché le mot qui fait peur, mais rangez vos fourches et laissez-moi le temps de vous expliquer tout ça. 😅️

Capture d'écran de p0wny​@​shell dans un navigateur web

Pourquoi avoir développé ça ? Qui l'utilise ?

J'ai développé p0wny​@​shell lorsque l'on m'a demandé d'effectuer un audit de sécurité sur le site d'un client. Lors de mon pentest (test d'intrusion en bon français), j'avais détecté une faille d'upload sur l'application. Pour faire simple, le site me laissait uploader des fichiers qu'il aurait dû normalement m'interdire d'envoyer (en l'occurrence il s'agissait ici de scripts PHP). J'avais donc besoin d'un script PHP à envoyer sur le serveur afin de poursuivre mes investigations, et tant qu'à faire, autant que ce script me facilite la suite des opérations... c'est pourquoi j'ai écrit un shell PHP.

Alors je sais bien qu'il existait déjà des tonnes de shell PHP disponibles sur les zinternets, mais je n'en ai trouvé aucun qui ne me convienne. Soit ils étaient moches (les goûts, les couleurs, tout ça...), soit ils étaient trop avancés et composés de plusieurs fichiers (pour exploiter une faille d'upload, c'est plus pratique de tout avoir en un seul fichier).

Quoi qu'il en soit, cet outil est avant tout destiné aux chercheurs en sécurité informatique. Mais comme tout outil, il peut être détourné de son usage premier pour faire de mauvaises choses, et donc oui, il est aussi utilisé par des petits piratins pour commettre des délits.

On pourrait en quelque sorte le comparer à un couteau... C'est bien pratique pour couper son steak... mais entre les mains de personnes ayant de mauvaises intentions, ça peut devenir une arme.

Pourquoi avoir diffusé ce logiciel ?

On pourrait penser que c'est irresponsable de diffuser ce genre de logiciel, mais au final je ne le pense pas : il existe déjà des tas de shell PHP disponibles, et ceux qui ont décidé de faire des bêtises ne m'ont pas attendu pour le faire. J'ai donc avant tout rendu p0wny​@​shell public parce que j'espérais qu'il puisse éventuellement aider d'autres personnes à réaliser des audits.

J'ai d'ailleurs pu lire quelques articles le mentionnant, comme celui-ci, qui mentionne l'utilisation de p0wny​@​shell lors d'un concours de pentesting, ou celui-là, expliquant comment l'utiliser pour pouvoir exécuter des commandes sur un hébergement mutualisé (même si encore une fois, je ne recommande pas de l'utiliser de cette manière : il n'y a aucune sécurité, c'est dangereux ! 😤️).

J'ai également reçu quelques contributions intéressantes sur Github, comme la gestion de l'historique, de l'autocomplétion ainsi que l'upload et le téléchargement de fichiers (oui, la version que j'avais publiée à l'origine était vraiment ultra basique).

J'ai donc quelques retours d'utilisation, mais évidemment, ceux qui en parlent sont ceux qui l'utilisent dans un cadre légal, c'est beaucoup plus dur de juger de son utilisation à des fins moins avouables...

J'ai retrouvé p0wny​@​shell sur mon serveur... que faire ?

Comme je le disais dans l'introduction, je reçois de temps à autre des messages me demandant comment « désinstaller » p0wny​@​shell de son serveur. Eh bien c'est très simple : il tient en un seul fichier, il suffit donc de le supprimer... Mais évidemment, ça n'est pas tout à fait aussi simple, sinon je prendrais pas la peine d'en parler 😉️. Si vous retrouvez p0wny​@​shell (ou n'importe quel autre shell PHP) sur votre serveur, se contenter de le supprimer ne résoudra rien : il n'est pas arrivé ici tout seul.

Pour commencer, après avoir supprimé le shell, je vous recommanderais de restaurer l'ensemble des fichiers de votre site depuis une sauvegarde antérieure à la « contamination », car on ne sait pas ce que le pirate a pu modifier (il est probable qu'il ne se soit pas simplement contenté d'uploader le shell).

Ensuite, changez tous les mots de passe auxquels le pirate a pu avoir accès, notamment celui de votre base de données puisqu'il se trouvait à coup sûr dans un fichier de configuration... Changez également les mots de passe des utilisateurs, car l'intrus a très probablement téléchargé le contenu de la base de données en passant.

Enfin, pour que le problème ne puisse plus se reproduire, cherchez et colmatez la faille.

Si vous utilisez un CMS (Wordpress en tête), mettez-le à jour, ainsi que tous les plugins et les thèmes que vous avez installés (et bien sûr, maintenez le tout à jour). D'ailleurs en parlant de plugins et de thèmes... installez-en le moins possible, et évitez d'installer n'importe quoi. Même si la plupart du temps, les plugins que vous trouverez ne sont pas malveillants (ils n'ont pas été créés pour vous nuire volontairement), beaucoup sont codés avec les pieds un lendemain de cuite et contiennent de nombreuses failles qui sont autant de points d'entrée pour des personnes malveillantes.

Si vous avez développé vous-même votre site, renseignez-vous sur les différentes failles de sécurité, et cherchez-les dans votre propre code. Les plus courantes sont les failles Cross-Site Scripting (XSS), injection SQL et upload, mais il en existe d'autres.

Si vous êtes une entreprise, faites réaliser un audit de sécurité pour trouver les failles ; c'est important, surtout si votre business repose sur votre site internet !

Il est temps de conclure

Quand j'ai publié p0wny​@​shell sur Github, je ne pensais pas qu'il serait utilisé par plus de deux ou trois personnes (car je le rappelle, il était vraiment très limité). Mais j'ai eu la bonne surprise de voir le nombre de stars augmenter et de recevoir des contributions très pertinentes.

Mais comme il fallait s'y attendre, certains l'utilisent pour faire de vilaines choses, et il n'y a malheureusement aucun moyen de l'empêcher. Si toutefois vous souhaitez utiliser p0wny​@​shell pour pirater des serveurs, je vous rappelle juste au cas où, qu'en France, l'accès et le maintien frauduleux dans un système de traitement automatisé de données est puni de 2 ans d'emprisonnement et de 30 000 € d'amende... réfléchissez-y à deux fois avant de faire des bêtises ! 🙄️

Au final p0wny​@​shell n'est qu'un outil. Il n'est ni bon ni mauvais en soi, tout dépend de ce que l'on en fait. J'espère en tout cas qu'il pourra vous être utile, et que les quelques conseils que je vous ai donnés dans cet article pourront vous aider. 😉️