
출력(에코)이 반환되는 취약점 익스플로잇 스크립트
응답(echo)이 포함된 취약점 악용 스크립트, 더 간단한 방법
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를 덮어써서 백도어로 만듭니다.

위 내용이 도움이 되었다고 생각되면 공식 계정을 팔로우해 주세요.
