Introduction
Lorsque vous travaillez avec le Metasploit Framework, vous avez souvent besoin de définir diverses options pour différents modules, telles que LHOST (l'hôte local sur lequel écouter) et LPORT (le port local). Définir ces options de manière répétée pour chaque module peut être fastidieux. Metasploit propose une fonctionnalité appelée variables globales pour résoudre ce problème. En définissant une variable globalement, elle sera automatiquement appliquée à tout module qui utilise cette option, améliorant ainsi considérablement l'efficacité de votre flux de travail.
Dans ce laboratoire, vous apprendrez comment définir, utiliser et annuler les variables globales dans la console Metasploit.
Utiliser la commande setg pour définir un LHOST global
Dans cette étape, vous allez démarrer la console Metasploit et définir une variable globale pour LHOST. La commande setg est utilisée pour définir une variable qui persistera entre différents modules au sein de la même session msfconsole.
Tout d'abord, trouvons l'adresse IP de votre environnement de laboratoire. Cette IP sera utilisée comme valeur pour LHOST.
hostname -I | awk '{print $1}'
Vous verrez une sortie similaire à celle-ci (votre adresse IP sera différente) :
192.168.3.123
Notez cette adresse IP. Maintenant, démarrez la console Metasploit Framework. Le drapeau -q est utilisé pour le mode "silencieux" (quiet), qui supprime la bannière de démarrage.
msfconsole -q
Votre invite changera pour msf6 >. Maintenant, définissons la variable LHOST globalement. Utilisez la commande setg suivie du nom de la variable et de l'adresse IP que vous venez de trouver.
Note : Veuillez remplacer
YOUR_IP_ADDRESSpar l'adresse IP réelle obtenue avec la commandehostname -I.
setg LHOST YOUR_IP_ADDRESS
Vous devriez voir un message de confirmation :
LHOST => YOUR_IP_ADDRESS
Cette commande a maintenant stocké votre adresse IP comme valeur globale LHOST pour cette session. Pour vérifier cela, vous pouvez utiliser la commande show avec le drapeau -g, qui affiche toutes les variables définies globalement.
show -g
La sortie listera toutes les variables globales :
Global
=======
Name Value
---- -----
LHOST YOUR_IP_ADDRESS
Sélectionner un nouveau module d'exploitation
Dans cette étape, vous allez sélectionner un module d'exploitation pour voir comment la variable globale est automatiquement appliquée. Nous utiliserons le gestionnaire de charge utile générique, exploit/multi/handler, comme premier exemple. Ce module est couramment utilisé pour écouter les connexions entrantes.
Dans l'invite msfconsole, utilisez la commande use pour sélectionner le module :
use exploit/multi/handler
Après avoir exécuté la commande, votre invite changera pour refléter le module actuellement sélectionné :
msf6 exploit(multi/handler) >
Cela indique que vous êtes maintenant dans le contexte du module exploit/multi/handler. Toutes les options que vous définissez ou affichez seront spécifiques à ce module, mais il héritera également de toutes les variables globales pertinentes.
Observer que la valeur LHOST est déjà renseignée
Maintenant que vous avez un module chargé, vérifions ses options pour voir si notre variable globale LHOST a été appliquée.
Dans cette étape, vous utiliserez la commande show options pour afficher la configuration du module actuel.
Depuis l'invite msf6 exploit(multi/handler) >, exécutez la commande suivante :
show options
Vous verrez un tableau d'options pour ce module. Recherchez la variable LHOST. Vous remarquerez que sa valeur est déjà définie sur l'adresse IP que vous avez configurée globalement à la première étape.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST YOUR_IP_ADDRESS yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Comme vous pouvez le constater, vous n'avez pas eu besoin d'utiliser la commande set LHOST pour ce module car la valeur globale a été automatiquement héritée. C'est la puissance de l'utilisation des variables globales.
Utiliser la commande unsetg pour supprimer une variable globale
Dans cette étape, vous apprendrez comment supprimer une variable globale. Si vous n'avez plus besoin qu'une variable soit appliquée globalement, vous pouvez utiliser la commande unsetg. Ceci est utile lorsque vous souhaitez revenir à la définition des options par module ou nettoyer la configuration de votre session.
Depuis l'invite Metasploit, exécutez la commande unsetg suivie du nom de la variable que vous souhaitez supprimer.
unsetg LHOST
Cette commande supprimera la variable LHOST de la portée globale. Vous verrez un message de confirmation :
Unsetting LHOST...
Maintenant, si vous exécutez à nouveau show options pour le même module, vous verrez que la valeur de LHOST est maintenant vide.
show options
La sortie montrera maintenant que LHOST n'a aucune valeur définie.
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Vous devriez maintenant définir LHOST localement pour ce module en utilisant la commande set si vous souhaitiez l'utiliser.
Discuter de l'utilisation des options globales par rapport aux options locales
Dans cette dernière étape, nous discuterons des différences pratiques entre la définition des variables locales et globales et quand utiliser chacune d'elles. Comprendre cela vous aidera à travailler plus efficacement dans Metasploit.
Variables Locales (utilisation de set)
- Portée : Une variable définie avec la commande
set(par exemple,set RHOSTS 10.10.10.1) est locale au module actuellement chargé. - Comportement : Lorsque vous passez à un nouveau module en utilisant la commande
use, cette variable locale est supprimée. Le nouveau module aura sa propre valeur par défaut ou vide pour cette option. - Quand l'utiliser : Utilisez
setpour les options spécifiques à une cible ou à un module unique. L'exemple le plus courant estRHOSTS(l'adresse IP de l'hôte distant/cible), qui change presque toujours pour chaque exploit que vous utilisez. D'autres exemples incluentTARGETURIou unUSERNAMEspécifique.
Variables Globales (utilisation de setg)
- Portée : Une variable définie avec la commande
setg(par exemple,setg LHOST 192.168.3.123) est globale pour toute la sessionmsfconsole. - Comportement : La variable et sa valeur seront automatiquement héritées par tout module qui utilise ce nom d'option. Elle persiste même lorsque vous changez de module.
- Quand l'utiliser : Utilisez
setgpour les options qui sont susceptibles de rester les mêmes tout au long de votre session.LHOSTen est l'exemple parfait, car l'adresse IP de votre machine d'attaque ne change généralement pas.LPORTpeut également être un bon candidat pour une variable globale si vous utilisez systématiquement le même port d'écoute.
Résumé des commandes :
set <VARIABLE> <VALEUR>: Définit une variable uniquement pour le module actuel.setg <VARIABLE> <VALEUR>: Définit une variable globalement pour tous les modules de la session.unset <VARIABLE>: Efface une variable locale dans le module actuel.unsetg <VARIABLE>: Efface une variable globale.
En utilisant stratégiquement set pour les options spécifiques à la cible et setg pour les options à l'échelle de la session, vous pouvez minimiser la configuration répétitive et vous concentrer davantage sur le processus d'exploitation.
Vous pouvez maintenant quitter la console Metasploit.
exit
Résumé
Dans ce laboratoire, vous avez appris à utiliser efficacement les variables globales dans le Metasploit Framework pour rationaliser votre flux de travail. Vous avez pratiqué l'utilisation de la commande setg pour définir un LHOST global, observé comment il était automatiquement renseigné dans différents modules, et utilisé la commande unsetg pour le supprimer. Vous avez également appris les différences clés entre les variables locales (set) et globales (setg), vous permettant de faire des choix de configuration plus efficaces lors d'un test d'intrusion. Maîtriser ce concept simple peut vous faire gagner un temps considérable et réduire les erreurs dans des scénarios complexes.


