
سكربت استغلال الثغرات بنسخة تعرض المخرجات (الإيكو)
البرنامج النصي للاستغلال مع إظهار النتائج، بطريقة أبسط
توجد في واجهة إدارة الويب الخاصة بـ 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
إذا وجدت المحتوى أعلاه مفيدًا، يمكنك متابعة الحساب الرسمي
