Una vulnerabilidad bastante atractiva a la par de condicional es la lectura arbitraria de ficheros, también conocida con sus siglas AFR (Arbitrary File Read), básicamente trata de la posibilidad de llegar a la información interna potencialmente sensible del activo que se vea afectado. Comento lo de condicional por que muchas veces dependerá del tipo de activo que se vea afectado por esta vulnerabilidad, nos ofrecerá mas o menos posibilidades, obviamente estará condicionada a los permisos con los que accedamos a la información interna. Incluso y para mi gusto el impacto puede cambiar tanto si accedemos a un sistema basado en Linux o Windows.

El día de hoy estaremos revisando un producto de Dell (obviaremos por ahora la broma) que para definirlo tomaremos prestado la siguiente declaración: <<OpenManage Server Administrator (OMSA) es un agente de software que proporciona una solución integral de administración de sistemas uno a uno de dos maneras: Interfaz gráfica de usuario (GUI) basada en navegador web integrada Interfaz de línea de comandos (CLI) a través del sistema operativo.>>, concretamente revisaremos un par de vulnerabilidades, CVE-2016-4004 y CVE-2021-21514 (aunque en realidad tocaremos un adaptación del CVE-2020-5377), veamos los detalles de la revisión.

CVE-2021-21514 y CVE-2020-5377

Partiendo por el final, el CVE-2020-5377 según su descripción nos comenta que es posible conseguir una AFR de forma desautenticada, gracias a la omisión de la autenticación que se consigue empleando la técnica que fue desarrollada por el investigador Harrison Neal, más detalle de la misma aquí: FakeDellOM, sin embargo en mi laboratorio no he logrado reproducir dicha técnica y por tanto solo me centraré en la explotación de la parte del AFR. Para entendernos de lo que hablo se puede revisar la función «readFile» del exploit 49750.

La vulnerabilidad CVE-2021-21514 tienen mucha relación con la anterior, de hecho ambos explotan el mismo endpoint del producto, en este caso DownloadServlet. La diferencia significativa es que en esta vulnerabilidad si que se requiere de un usuario autenticado en la plataforma. Vamos a verlo a continuación:

CVE-2016-4004

Por el lado de esta vulnerabilidad lo que tenemos aquí es básicamente una falla que aparentemente ya se solventó con anterioridad, al menos en la versión 8.4 del producto, sin embargo versiones posteriores todavía pueden ser aprovechadas por esta falla, como bien queda evidenciado en este post. En este caso el endpoint que se ve afectado es: ViewFile.

Aprovechamiento y explotación

Lo primero, generaremos un fichero en el directorio «Documentos» de un usuario:

Ahora para alcanzar el contenido de este fichero generaremos las siguientes peticiones GET al servidor:

Empleando el endpoint DownloadServlet:

Observemos que será necesario codificar los caracteres especiales, más concretamente las «\».

Empleando el endpoint ViewFile:

Nuevamente, también codificaremos los caracteres especiales (\).

Para agilizar esta explotación y automatizar este aprovechamiento he generado un exploit que os lo subo a mi GitHub: https://github.com/und3sc0n0c1d0/AFR-in-OMSA

Ahora por último, veamos como generar mayor impacto explotando esta vulnerabilidad en un entorno «empresarial», para ello me voy a apoyar en las Shadow Copies (instantáneas) que pueda tener el servidor objetivo Windows, haciendo un claro guiño a lo presentado por Diego García Iglesias (@_nt_tnt) en su charla titulada Orbital Diaries – Explotando 0-days en un EDR para elevar privilegios de la reciente edición 10 de la Navaja Negra (chala altamente recomendable por supuesto).

Por tanto aprovecharemos la vulnerabilidad de AFR para llegar a los ficheros SAM y SYSTEM del servidor. Y dado que estos recursos están protegidos de la lectura independientemente de los permisos con los que cuente nuestro usuario, emplearemos las potenciales copias generadas por VSS (Volume Shadow Copy). Recordemos la ruta básica:

\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\

Ambos ficheros serán descargados en nuestro equipo de ataque:

Y ya con ayuda secretsdump de Impacket obtendremos los hashes NTLM del equipo:

En el caso de que estemos trabajando con un objetivo que sea un DC (Domain Controller), adicionalmente también deberíamos localizar el fichero NTDS.dit que es desde donde extraeremos todos los usuarios del AD (Active Directory).

Y bueno, por ahora es todo lo que quería comentar como post de cierre de mes. Estoy preparando nuevo contenido para traeros en brevedad. Manteneros atentos.

Referencias