Laudanum, One Webshell to Rule Them All

🌐 Qu'est-ce que Laudanum ?

Laudanum est un dépôt de fichiers prêts à l'emploi destinés à être injectés sur une machine cible afin d'obtenir un shell inversé, exécuter des commandes depuis un navigateur, et bien plus encore. Ce dépôt comprend des fichiers injectables pour de nombreux langages utilisés dans les applications web, notamment :

  • asp

  • aspx

  • jsp

  • php

  • et d'autres encore

Laudanum est un outil incontournable à avoir sous la main lors d’un test d’intrusion.

🔹 Sur les distributions telles que Parrot OS ou Kali Linux, il est inclus par défaut. 🔹 Pour toute autre distribution, il sera nécessaire de cloner le dépôt manuellement à partir du lien suivant :

https://github.com/jbarcia/Web-Shells

🛠️ Utilisation de Laudanum

Les fichiers Laudanum sont disponibles dans le répertoire :

/usr/share/laudanum

La plupart des fichiers peuvent être copiés tels quels sur la machine cible. Toutefois, dans le cas des shells (comme shell.aspx, shell.php, etc.), il faudra modifier le fichier avant l'envoi afin d'insérer l'adresse IP de la machine attaquante. Cette modification est indispensable pour permettre le bon fonctionnement de la communication (par exemple, pour une connexion inverse).

📌 Avant d'utiliser un fichier, il est vivement recommandé de lire son contenu et ses commentaires afin de comprendre son comportement et d'adapter les variables nécessaires.

🔎 Exemple de déploiement d'une Webshell Laudanum

Dans un environnement de laboratoire, on suppose qu'une application web vulnérable permet l'import de fichiers. On peut donc tirer profit de cette fonctionnalité pour transférer une webshell Laudanum.

🔄 Copier et modifier une shell

cp /usr/share/laudanum/aspx/shell.aspx /home/tester/demo.aspx

Dans le fichier demo.aspx, repérez la ligne contenant la variable allowedIps (ex : ligne 59) et ajoutez-y votre adresse IP d’attaquant.

💡 Il peut être judicieux de supprimer les commentaires et les dessins ASCII présents dans le fichier, car ils peuvent être détectés par des solutions de sécurité.

⬆️ Utiliser la fonctionnalité d'importation

Dans l'exemple, l'application web propose une zone de téléchargement de fichiers de configuration. Il suffit de :

  1. Sélectionner le fichier demo.aspx

  2. Le téléverser via la fonction d'import

  3. Noter l'endroit où il est enregistré (un message peut indiquer le chemin du fichier)

Dans notre cas, le fichier a été placé dans :

\\files\\demo.aspx

📍 Cela signifie que pour y accéder, il faudra naviguer à l'URL suivante :

http://status.inlanefreight.local//files/demo.aspx

➡️ Attention : certaines applications peuvent modifier automatiquement le nom de fichier ou restreindre l’accès public à certains répertoires. Il est donc toujours essentiel de valider l’URL finale.

💻 Utilisation de la Webshell

Une fois l'URL atteinte, l’interface de la Webshell Laudanum permet de saisir des commandes.

Dans l’exemple fourni, la commande suivante a été exécutée avec succès :

systeminfo

Le résultat détaillé (nom d’hôte, version du système, type de processeur, carte réseau, etc.) s’affiche dans la section STDOUT du navigateur.

Cela confirme que la webshell fonctionne correctement et qu’il est possible d’interagir avec le système cible via le navigateur.


📚 Ressources utiles


⛔️ Note : Une webshell ne doit être utilisée que dans un cadre légal et pédagogique. Toute utilisation non autorisée constitue une infraction pénale.


vHosts needed for these questions:

  • status.inlanefreight.local

Nous ajoutons au fichier /etc/hosts la ligne suivante :

10.129.42.197 status.inlanefreight.local

Establish a web shell session with the target using the concepts covered in this section. Submit the full path of the directory you land in. (Format: c:\path\you\land\in)

Nous copions dans un premier temps le contenu du fichier shell.aspx présent dans le répertoire github https://github.com/jbarcia/Web-Shells/blob/master/laudanum/aspx/shell.aspx :

Nous accédons à notre cible via notre navigateur Web :

Nous accédons à la page liée au nom de domaine fourni en indice dans ce niveau :

Nous obtenons alors de nombreuses informations sur notre cible. Il nous est également possible, en bas de page, d'injecter un fichier de configuration :

Nous injectons alors notre fichier shell.aspx :

Une fois le fichier importé, nous pouvons y accéder au répertoire suivant :

C:\inetpub\wwwroot\status.inlanefreight.local\files\shell.aspx

Le lien d'accès est donc http://status.inlanefreight.local/files/shell.aspx.

Une fois l'accès à ce lien effectif, nous pouvons observer la bonne importation de notre fichier malveillant au sein du serveur Web de notre cible :

Nous pouvons alors lister les répertoires présent à notre emplacement, ainsi que notre emplacement actuel :

Nous pouvons donc observer sur la capture précédents que nous sommes actuellement dans le répertoire c:\windows\system32\inetsrv.


Where is the Laudanum aspx web shell located on Pwnbox? Submit the full path. (Format: /path/to/laudanum/aspx)

Liste des fichier aspx présents sur notre mahine :

┌─[eu-academy-1]─[10.10.15.106]─[htb-ac-1811357@htb-kcr8fwsqb2]─[/usr/share/webshells/laudanum/aspx]
└──╼ [★]$ sudo find / -type f -name "*.aspx" 2>/dev/null

/home/htb-ac-1811357/shell.aspx
/usr/share/nishang/Antak-WebShell/antak.aspx
/usr/share/seclists/Web-Shells/laudanum-1.0/aspx/shell.aspx
/usr/share/seclists/Web-Shells/FuzzDB/cmd.aspx
/usr/share/davtest/backdoors/aspx_cmd.aspx
/usr/share/webshells/aspx/cmdasp.aspx
/usr/share/laudanum/aspx/shell.aspx

Nous observons alors différents répertoires qui sont remontés.

Le premier (/home/htb-ac-1811357/shell.aspx) fait référence au shell que j'ai copié à la main pour la question précédente.

Ici, nous cherchons le fichier aspx et landanum. Nous pouvons alors observer le chemin dans lequel est répertorié le fichier aspx attendu : /usr/share/laudanum/aspx/shell.aspx.


Mis à jour