Apuntes Ciberseguridad (Cibaism)
HTBGitHubLinkedInNotion (Writeups)
  • Welcome to My Digital Garden
  • About me
  • Hacking notes (Personal)
    • Tratamiento TTY
    • Hacking Web Tecniques
      • File Inclusion
    • Linux Privilage Escalation
    • Arreglar bloodhound
  • Hacking Notes (Learning Path)
    • (HTB) Penetration Tester
      • Getting Started
        • Common Terms
          • Tipos de Shell
          • Puertos importantes
          • OWASP Top 10
        • Service Scanning
          • Nmap
          • Attacking Network Services
            • Captura de banners
            • FTP
            • SMB
            • SNMP
        • Web Enumeration
        • Public exploits
          • Encontrar exploits públicos
          • Introducción a Metasploit
        • Types of Shells
          • Reverse Shell
          • Bind Shell
          • Web Shell
        • Privilage escalation
        • Transferring Files
      • Footprinting
        • Infrastructura Based Enumeration
          • Domain Information
          • Cloud Resources
          • Staff
        • Host Based Enumeration
          • FTP
          • SMB
          • NFS
          • DNS
          • SMTP
          • IMAP / POP3
          • SNMP
          • MySQL
          • MSSQL
          • Oracle TNS
          • IPMI
          • Protocolos de administración remota de Linux
          • Protocolos de administración remota de Windows
      • Introduction to Active Directory Enumeration & Attacks
        • Tools of the Trade
        • Initial enumeration
          • External Recon and Enumeration Principles
          • Initial Enumeration of the Domain
        • Sniffing out a Foothold
          • LLMNR/NBT-NS Poisoning - from Linux
          • LLMNR/NBT-NS Poisoning - from Windows
        • Sighting In, Hunting For A User
          • Password Spraying Overview
          • Enumerating & Retrieving Password Policies
          • Password Spraying - Making a Target User List
        • Spray Responsibly
          • Internal Password Spraying - from Linux
      • File Inclusion
        • File Disclousure
          • Local File Inclusion (LFI)
          • Basic Bypasses
          • PHP Filters
        • Remote Code Execution
          • PHP Wrappers
    • (CRTA) Red Team Analyst
      • (CRTA) Red Team Analyst - Lab
    • (eJPT) Junior Penetration Tester
      • Assessment Methodologies
        • Assessment Methodologies: Footprinting & Scanning
          • Windows Recon: Nmap Host Discovery
          • Scan the Server 1
          • Windows Recon: SMB Nmap Scripts
        • Assessment Methodologies: Enumeration
          • Importing Nmap Scan Results Into MSF
          • T1046 : Network Service Scanning
          • FTP Enumeration
          • Samba Recon: Basics
          • Apache Enumeration
          • MySQL Enumeration
          • SSH Login
          • Postfix Recon: Basics
        • Assessment Methodologies: Vulnerability Assessment
          • Windows: IIS Server DAVTest
          • Shellshock
          • Web App Vulnerability Scanning With WMAP
      • Host & Network Penetration Testing
        • Host & Network Penetration Testing: System/Host Based Attacks
          • Windows
            • Windows: IIS Server: WebDav Metasploit
            • Windows: SMB Server PSexec
            • Windows: Insecure RDP Service
            • WinRM: Exploitation with Metasploit
            • UAC Bypass: UACMe
            • Privilege Escalation: Impersonate
            • Unattended Installation
            • Windows: Meterpreter: Kiwi Extension
          • Linux
            • ProFTP Recon: Basics
            • Samba Recon: Dictionary Attack
            • Cron Jobs Gone Wild II
            • Exploiting Setuid Programs
            • Password Cracker: Linux
        • Host & Network Penetration Testing: Network-Based Attacks
          • NetBIOS Hacking
          • SNMP Analysis
          • DNS & SMB Relay Attack
        • Host & Network Penetration Testing: The Metasploit Framework (MSF)
          • Windows: Java Web Server
          • Windows: HTTP File Server
          • Vulnerable FTP Server
          • Vulnerable File Sharing Service
          • Vulnerable SSH server
          • Vulnerable SMTP Server
          • Meterpreter Basics
          • Upgrading Command Shells To Meterpreter Shells
          • Windows Post Exploitation Modules
          • UAC Bypass: Memory Injection (Metasploit)
          • Exploiting SMB With PsExec
          • Windows: Enabling Remote Desktop
          • Clearing Windows Event Logs
          • Pivoting
  • Blue team notes
    • Digital Forensics
      • Malware Analysis with VirusTotal
      • Wireshark
    • (Falcon) CrowdStrike
      • FALCON 104: Getting Started with the Endpoint Security Module
      • FALCON 106: Customizing Dashboards in Falcon
      • FALCON 180: Falcon Forensics Fundamentals
  • Programming
    • Powershell
Powered by GitBook
On this page
  • TFTP
  • Configuración predeterminada
  • Instalación vsFTPd
  • Archivo de configuración vsFTPd
  • Usuarios FTP
  • Configuraciones peligrosas
  • Inicio de sesión anónimo
  • Estado de vsFTPd
  • Salida detallada de vsFTPd
  • Ocultar identificaciones - Sí
  • Listado recursivo
  • Descargar un archivo
  • Descargar todos los archivos disponibles
  • Subir un archivo
  • Footprinting del servicio
  • Scripts FTP de NMAP
  • Nmap
  • Rastreo de scripts de Nmap
  • Interacción de servicios
  1. Hacking Notes (Learning Path)
  2. (HTB) Penetration Tester
  3. Footprinting
  4. Host Based Enumeration

FTP

PreviousHost Based EnumerationNextSMB

Last updated 2 months ago

El protocolo File Transfer Protocol( FTP) es uno de los más antiguos de Internet. El FTP se ejecuta en la capa de aplicación de la pila de protocolos TCP/IP. Por lo tanto, se encuentra en la misma capa que HTTPo POP. Estos protocolos también funcionan con la ayuda de navegadores o clientes de correo electrónico para realizar sus servicios. Asimismo, existen programas FTP especiales para el Protocolo de Transferencia de Archivos (TFTP).

Imaginemos que queremos subir archivos locales a un servidor y descargar otros mediante el protocolo . En una conexión FTP, se abren dos canales. Primero, el cliente y el servidor establecen un canal de control a través de [nombre del TCP port 21servidor]. El cliente envía comandos al servidor, y este devuelve códigos de estado. A continuación, ambos participantes de la comunicación pueden establecer el canal de datos a través de [nombre del TCP port 20servidor]. Este canal se utiliza exclusivamente para la transmisión de datos, y el protocolo detecta errores durante este proceso. Si se interrumpe la conexión durante la transmisión, el transporte puede reanudarse tras restablecerse el contacto.

Se distingue entre FTP activey passiveFTP. En la variante activa, el cliente establece la conexión, como se describe, a través del puerto TCP 21 e informa al servidor a través del cual puede transmitir sus respuestas. Sin embargo, si un firewall protege al cliente, este no puede responder porque todas las conexiones externas están bloqueadas. Para ello, passive modese ha desarrollado [el método]. En este método, el servidor anuncia un puerto a través del cual el cliente puede establecer el canal de datos. Dado que el cliente inicia la conexión con este método, el firewall no bloquea la transferencia.

El FTP reconoce diferentes y códigos de estado. No todos estos comandos se implementan de forma coherente en el servidor. Por ejemplo, el cliente indica al servidor que cargue o descargue archivos, organice directorios o elimine archivos. El servidor responde en cada caso con un código de estado que indica si el comando se ejecutó correctamente. Puede encontrar una lista de posibles códigos de estado .

Normalmente, necesitamos credenciales para usar FTP en un servidor. También debemos saber que FTP es un clear-textprotocolo que a veces puede ser interceptado si las condiciones de la red son las adecuadas. Sin embargo, también existe la posibilidad de que un servidor ofrezca [falta contexto] anonymous FTP. El operador del servidor permite entonces a cualquier usuario subir o descargar archivos a través de FTP sin usar contraseña. Dados los riesgos de seguridad asociados con un servidor FTP público de este tipo, las opciones para los usuarios suelen ser limitadas.

TFTP

Trivial File Transfer Protocol( TFTP) es más simple que FTP y realiza transferencias de archivos entre procesos cliente y servidor. Sin embargo, does notproporciona autenticación de usuarios y otras funciones valiosas compatibles con FTP. Además, mientras que FTP usa TCP, TFTP usa UDP, lo que lo convierte en un protocolo poco fiable y obliga a utilizar la recuperación de la capa de aplicación asistida por UDP.

Esto se refleja, por ejemplo, en que TFTP, a diferencia de FTP, no requiere la autenticación del usuario. No admite el inicio de sesión protegido mediante contraseñas y establece límites de acceso basados ​​únicamente en los permisos de lectura y escritura de un archivo en el sistema operativo. En la práctica, esto implica que TFTP opera exclusivamente en directorios y archivos compartidos con todos los usuarios, con capacidad de lectura y escritura global. Debido a su falta de seguridad, TFTP, a diferencia de FTP, solo puede utilizarse en redes locales y protegidas.

Echemos un vistazo a algunos comandos de TFTP:

Comandos

Descripción

connect

Establece el host remoto y, opcionalmente, el puerto, para transferencias de archivos.

get

Transfiere un archivo o un conjunto de archivos desde el host remoto al host local.

put

Transfiere un archivo o un conjunto de archivos desde el host local al host remoto.

quit

Sale del tftp.

status

Muestra el estado actual de tftp, incluido el modo de transferencia actual (ascii o binario), el estado de la conexión, el valor de tiempo de espera, etc.

verbose

Activa o desactiva el modo detallado, que muestra información adicional durante la transferencia de archivos.

A diferencia del cliente FTP, TFTPno tiene funcionalidad de listado de directorios.

Configuración predeterminada

Instalación vsFTPd

sudo apt install vsftpd 

Archivo de configuración vsFTPd

cat /etc/vsftpd.conf | grep -v "#"

Configuración

Descripción

listen=NO

¿Ejecutar desde inetd o como un demonio independiente?

listen_ipv6=YES

¿Escuchar en IPv6?

anonymous_enable=NO

¿Habilitar el acceso anónimo?

local_enable=YES

¿Permitir que usuarios locales inicien sesión?

dirmessage_enable=YES

¿Mostrar mensajes del directorio activo cuando los usuarios acceden a determinados directorios?

use_localtime=YES

¿Utilizar hora local?

xferlog_enable=YES

¿Activar el registro de cargas/descargas?

connect_from_port_20=YES

¿Conectarse desde el puerto 20?

secure_chroot_dir=/var/run/vsftpd/empty

Nombre de un directorio vacío

pam_service_name=vsftpd

Esta cadena es el nombre del servicio PAM que utilizará vsftpd.

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

Las últimas tres opciones especifican la ubicación del certificado RSA que se utilizará para las conexiones cifradas SSL.

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO

Además, hay un archivo llamado /etc/ftpusersal que también debemos prestar atención, ya que se utiliza para denegar el acceso al servicio FTP a ciertos usuarios.

Usuarios FTP

cat /etc/ftpusers

Configuraciones peligrosas

Configuración

Descripción

anonymous_enable=YES

¿Permitir inicio de sesión anónimo?

anon_upload_enable=YES

¿Permitir que usuarios anónimos carguen archivos?

anon_mkdir_write_enable=YES

¿Permitir que usuarios anónimos creen nuevos directorios?

no_anon_password=YES

¿No pedir contraseña anónima?

anon_root=/home/username/ftp

Directorio para anónimos.

write_enable=YES

¿Permitir el uso de comandos FTP: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE y SITE?

Con el cliente FTP estándar ( ftp), podemos acceder al servidor FTP e iniciar sesión con el usuario anónimo si se ha utilizado la configuración anterior. El uso de la cuenta anónima puede darse en entornos e infraestructuras internas donde todos los participantes son conocidos. El acceso a este tipo de servicio puede configurarse temporalmente o mediante la configuración para acelerar el intercambio de archivos.

Al conectarnos al servidor vsFTPd, response code 220se muestra el banner del servidor FTP. Este banner suele contener la descripción del servidor servicee incluso versionsu nombre. También indica el tipo de sistema del servidor FTP. Una de las configuraciones más comunes de los servidores FTP es permitir anonymousel acceso, lo cual no requiere credenciales legítimas, pero proporciona acceso a algunos archivos. Incluso si no podemos descargarlos, a veces basta con listar el contenido para generar nuevas ideas y anotar información que nos ayudará en otro enfoque.

Inicio de sesión anónimo

ftp <host>
user: anonymous
password: 

Estado de vsFTPd

status

Salida detallada de vsFTPd

debug
trace

Ocultar identificaciones - Sí

Otra configuración útil que podemos usar para nuestros fines es ls_recurse_enable=YES. Esta suele configurarse en el servidor vsFTPd para tener una mejor visión general de la estructura del directorio FTP, ya que nos permite ver todo el contenido visible a la vez.

Listado recursivo

ls -R

DownloadingLos archivos de dicho servidor FTP son una de las principales características, así como uploadinglos archivos creados por nosotros. Esto nos permite, por ejemplo, usar vulnerabilidades LFI para que el host ejecute comandos del sistema. Además de los archivos, podemos ver, descargar e inspeccionar. Los ataques también son posibles con los registros FTP, lo que genera Remote Command Execution( RCE). Esto se aplica a los servicios FTP y a todos aquellos que podamos detectar durante nuestra fase de enumeración.

Descargar un archivo

get <archivo>

También podemos descargar todos los archivos y carpetas a los que tenemos acceso a la vez. Esto es especialmente útil si el servidor FTP tiene muchos archivos diferentes en una estructura de carpetas más grande. Sin embargo, esto puede generar alarmas, ya que nadie en la empresa suele querer descargar todos los archivos y el contenido a la vez.

Descargar todos los archivos disponibles

wget -m --no-passive ftp://anonymous:anonymous@<host>

Una vez descargados todos los archivos, wgetse creará un directorio con la dirección IP de nuestro objetivo. Todos los archivos descargados se almacenan allí, y luego podemos inspeccionarlos localmente.

A continuación, podemos comprobar si tenemos los permisos para subir archivos al servidor FTP. Especialmente en servidores web, es común que los archivos estén sincronizados y que los desarrolladores tengan acceso rápido a ellos. El FTP se usa a menudo para este fin, y la mayoría de las veces, se encuentran errores de configuración en servidores que los administradores consideran indetectables. La inaccesibilidad a los componentes internos de la red desde el exterior implica que a menudo se descuida el refuerzo de los sistemas internos, lo que provoca configuraciones incorrectas.

La capacidad de subir archivos al servidor FTP conectado a un servidor web aumenta la probabilidad de obtener acceso directo al servidor web e incluso a un shell inverso que nos permite ejecutar comandos internos del sistema y quizás incluso escalar nuestros privilegios.

Subir un archivo

put <archivo>

Footprinting del servicio

Scripts FTP de NMAP

sudo nmap --script-updatedb

Como ya sabemos, el servidor FTP suele ejecutarse en el puerto TCP estándar 21, que podemos escanear con Nmap. También utilizamos el escaneo de versiones ( -sV), el escaneo agresivo ( -A) y el escaneo de script predeterminado ( -sC) contra nuestro objetivo 10.129.14.136.

Nmap

sudo nmap -sV -p21 -sC -A <host>

ftp-systPor ejemplo, el comando ejecuta el STATcomando, que muestra información sobre el estado del servidor FTP. Esto incluye tanto la configuración como la versión del servidor FTP. Nmap también permite rastrear el progreso de los scripts NSE a nivel de red si usamos esta --script-traceopción en nuestros análisis. Esto nos permite ver qué comandos envía Nmap, qué puertos se utilizan y qué respuestas recibimos del servidor analizado.

Rastreo de scripts de Nmap

sudo nmap -sV -p21 -sC -A <host> --script-trace

El historial de escaneos muestra que se están ejecutando cuatro escaneos paralelos diferentes contra el servicio, con diferentes tiempos de espera. Para los scripts NSE, observamos que nuestra máquina local usa otros puertos de salida ( 54226, 54228, 54230, 54232) e inicia primero la conexión con el CONNECTcomando. A partir de la primera respuesta del servidor, podemos ver que recibimos el banner del servidor a nuestro segundo script NSE ( 54228) desde el servidor FTP de destino. Si es necesario, podemos usar otras aplicaciones como netcato telnetpara interactuar con el servidor FTP.

Interacción de servicios

nc -nv <host> 21
telnet <host> 21

La situación es ligeramente diferente si el servidor FTP utiliza cifrado TLS/SSL. En ese caso, necesitamos un cliente compatible con TLS/SSL. Para ello, podemos usar el cliente openssly comunicarnos con el servidor FTP. La ventaja de usar este protocolo openssles que podemos ver el certificado SSL, lo cual también puede ser útil.

openssl s_client -connect <host>:21 -starttls ftp

Esto se debe a que el certificado SSL nos permite reconocer hostname, por ejemplo, el [nombre de la organización o empresa] y, en la mayoría de los casos, también el [nombre email addressde la organización o empresa]. Además, si la empresa tiene varias sedes en todo el mundo, también se pueden crear certificados para ubicaciones específicas, que también se pueden identificar mediante el certificado SSL.

Uno de los servidores FTP más utilizados en distribuciones Linux es . La configuración predeterminada de vsFTPd se encuentra en [nombre /etc/vsftpd.confdel servidor] y algunas opciones ya están predefinidas. Se recomienda instalar el servidor vsFTPd en una máquina virtual y analizar esta configuración con más detalle.

El servidor vsFTPd es solo uno de los pocos servidores FTP disponibles. Existen muchas alternativas, que además ofrecen, entre otras cosas, muchas más funciones y opciones de configuración. Usaremos vsFTPd porque es una excelente manera de mostrar las posibilidades de configuración de un servidor FTP de forma sencilla y fácil de entender, sin entrar en detalles de las páginas de manual. Si revisamos el archivo de configuración de vsFTPd, veremos muchas opciones y configuraciones comentadas o no. Sin embargo, el archivo de configuración no contiene todas las opciones de configuración posibles. Las existentes y las que faltan se pueden encontrar en la .

Existen diversas configuraciones de seguridad que podemos configurar en cada servidor FTP. Estas pueden tener diversos propósitos, como probar conexiones a través de firewalls, probar rutas y mecanismos de autenticación. Uno de estos mecanismos de autenticación es el anonymoususuario. Esto se utiliza a menudo para permitir que todos en la red interna compartan archivos y datos sin acceder a los equipos de los demás. Con vsFTPd, las que se pueden agregar al archivo de configuración para el inicio de sesión anónimo son las siguientes:

Esta configuración es una función de seguridad que impide que se revelen los nombres de usuario locales. Con estos nombres de usuario, en teoría podríamos atacar servicios como FTP, SSH y muchos otros con un ataque de fuerza bruta. Sin embargo, en la práctica, las soluciones son ahora una implementación estándar de cualquier infraestructura que registra la dirección IP y bloquea todo acceso a la infraestructura tras un cierto número de intentos fallidos de inicio de sesión.

El uso de diversos escáneres de red también es un método práctico y extendido. Estas herramientas facilitan la identificación de diferentes servicios, incluso si no son accesibles en los puertos estándar. Una de las herramientas más utilizadas para este propósito es Nmap. Nmap también incluye el ( NSE), un conjunto de numerosos scripts diferentes escritos para servicios específicos. Puede encontrar más información sobre las capacidades de Nmap y NSE en el módulo . Podemos actualizar esta base de datos de scripts de NSE con el comando mostrado.

El análisis predeterminado de scripts se basa en las huellas digitales, las respuestas y los puertos estándar de los servicios. Una vez que Nmap detecta el servicio, ejecuta los scripts marcados uno tras otro, proporcionando información diversa. Por ejemplo, el script NSE comprueba si el servidor FTP permite el acceso anónimo. De ser así, se muestra el contenido del directorio raíz del FTP para el usuario anónimo.

FTP
comandos
aquí
vsFTPd
página de manual
configuraciones opcionales
fail2ban
motor de scripts de Nmap
"Enumeración de red con Nmap"
ftp-anon