
le seul webshell PHP dont vous avez besoin.
Shell web PHP
Comme j'ai déconné et oublié de parler de l'utilisation, voici donc.
Pour que ce shell fonctionne, vous avez besoin de 2 choses : une victime qui permet l'upload de fichiers PHP (vous-même, dans un environnement éducatif) et un moyen d'envoyer des requêtes HTTP à ce webshell (le script client est le meilleur moyen à 100 % de communiquer avec ce shell).
Merci pour tout le soutien que la communauté nous a apporté, cela signifie beaucoup pour nous. Maintenant, voici ce qui sera ajouté à ce shell pour le rendre encore plus génial.
Rapport de détection VT actuel : 2/59 (version la plus récente)
Rapport de détection VT actuel (version obfusquée) : 1/59 //Ceci est une version raffinée du dropper allégé. La longueur totale du fichier est juste en dessous de 2 Ko. Slopshell assigne désormais correctement un useragent aléatoire avec une valeur d'useragent correcte, c'est-à-dire un véritable useragent comme Mozilla, Opera, Chrome, Chromium, etc.
Le problème avec cette détection est que je n'ai pas trouvé de contournement viable pour le mot-clé eval. S'il n'y avait pas d'appel à eval, ce script serait indétectable.
Ok, alors c'est parti les amis, j'avais une envie d'écrire quelque chose en PHP, donc voilà. Ce webshell a quelques fonctionnalités, et d'autres sont ajoutées chaque jour. Vous aurez besoin d'un serveur pgsql en cours d'exécution que vous contrôlez. La façon dont vous l'implémentez vous appartient.
Debian : apt install -y postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-dev && python -m pip install proxybroker --user
Systèmes RHEL : dnf -y -b install postgresql-server postgresql php php-pear python3-pip php-readline php-curl libsodium libsodium-devel && python -m pip install proxybroker --user
WIN : installez le msi PHP et assurez-vous d'avoir un serveur PostgreSQL actif auquel vous pouvez vous connecter et qui tourne quelque part.
Une fois que vous les avez correctement configurés et que vous pouvez confirmer qu'ils fonctionnent, une commande que je recommande est d'utiliser pg_ctl pour créer la DB de cette façon, ou au moins l'initialiser et la démarrer. Ensuite, toutes les requêtes DB fonctionneront correctement.
Vous devez vous rendre dans /lib/ et exécuter composer install pour installer les dépendances côté serveur nécessaires au fonctionnement du client. Le client s'exécute désormais beaucoup plus rapidement qu'avant.
Vous remarquerez peut-être qu'il s'agit d'une réorganisation d'une autre backdoor WordPress, et quand je retrouverai le dépôt, je m'assurerai de créditer la fonction d'exécution de commandes présente dans ces shells. Je n'aime pas plagier du code et je crois qu'il faut créditer là où le crédit est dû. Merci, cher monsieur, vous m'avez beaucoup aidé avec cela en rendant vos scripts disponibles au public.
Donc, en faisant quelques modifications, je me suis dit pourquoi ne pas ajouter un moyen pour le shell lui-même de se cacher d'un administrateur moins observateur. J'ai nettoyé les méthodes d'exécution du code, nettoyé tout le script. Il n'affichera plus une fausse page 500, car cela attire trop l'attention d'un administrateur observateur (d'après mon expérience en tant qu'administrateur d'une pile de développement PHP sur un serveur). Les messages d'erreur 500 attirent beaucoup l'attention, ce qui signifie que le shell a plus de chances d'être découvert. Une réponse 404, en revanche, est beaucoup moins susceptible d'attirer le regard de l'administrateur du serveur. Cela rend ce shell lui-même beaucoup plus difficile à détecter et à trouver, en plus du changement de nom de fichier. Trouver ce shell sera un cauchemar absolu. La personnalisation du User-Agent est encore à faire, ou une valeur de cookie unique devra être utilisée à la place de la valeur User-Agent, mais cela ne sera pas défini par moi et je laisserai les utilisateurs plus expérimentés personnaliser ce shell à leur guise. Encore une fois, si vous remarquez des problèmes ou des lacunes (la plupart ont été corrigées, et j'ai mis à jour ce shell vers PHP8 pour la plupart, je ne peux toujours pas ajouter d'indications de type pour des raisons de compatibilité ascendante), veuillez ouvrir un ticket et me faire savoir ce qui ne va pas, et je verrai ce que je peux faire pour le corriger. Merci, faites le bien, combattez le mal, amusez-vous.
Voici ce que j'ai pu proposer pour les routines d'évasion supplémentaires :
Au fur et à mesure que je progresse dans le langage PHP, tout ce projet évoluera aussi et les classes deviendront de vraies classes, avec des espaces de noms et tout. J'ai juste besoin de temps pour corriger le code selon les standards plus courants du développement PHP. J'ajouterai probablement un moyen de conditionner ce shell en tant que plugin WordPress, afin qu'il puisse également être utilisé dans WordPress (un vrai plugin). Le client crée maintenant de vrais plugins WordPress, qui accrochent la fonction init du site WordPress. Je n'ai pas testé cela complètement, donc s'il y a des problèmes, n'hésitez pas à ouvrir un nouveau ticket et à décrire le problème que vous rencontrez. L'activateur du plugin WordPress est laissé vide, car je cherche des moyens de faire de l'activateur une valeur unique sécurisée/chiffrée qui ne peut pas être reproduite. Soyez patient.
Lorsque vous appelez la fonction cqI, elle affiche des informations plus pertinentes plutôt que... vous savez, des ordures. Exemple :
Max file uploads: 20
Safemode: cannot set safemode.
File_Uploads: true
Upload Temp Dir: cannot set upload_tmp_dir
Maximum File upload size: 2M
Include Path: .:/usr/share/php8:/usr/share/php/PEAR:/var/www/somesite/html/public/.scache/
---------------- SLOP DEFINES ---------------------
slopMTLS: true
slopEncryption: true
slopOS: LIN
slopShell: bash
slopTor: false
slopPGP: false
.scache full path: /var/www/somesite/html/public/.scache/
Ces valeurs auront une couleur selon la sortie : false par défaut en rouge, true par défaut en vert, avec de petites exceptions pour slopOS et sloppyshell, qui sont toujours en vert.
Utilisation du script client :

Connexion inversée initiée depuis le script client :

Pages d'atterrissage aléatoires :

En tant que mainteneur, je ne suis en aucun cas responsable de l'utilisation abusive de ce produit. Ce produit a été publié à des fins légitimes de test de pénétration/red teaming, et/ou à des fins éducatives. Connaissez les lois applicables de votre pays de résidence avant d'utiliser ce script, et ne violez pas la loi en l'utilisant. Merci et bonne journée.
comme la plupart des serveurs bloquent la possibilité pour les scripts d'écrire dans le répertoire servi (comme ils le devraient), je choisis par défaut le shell complet. La version WordPress de ce shell fonctionnera toujours correctement, elle accroche simplement la fonction init au lieu d'être juste un shell qui bat au vent.