Über die VMware vCenter-Sicherheitslücke beim unbefugten Hochladen beliebiger Dateien (CVE-2021-21972)

Über die VMware vCenter-Sicherheitslücke beim unbefugten Hochladen beliebiger Dateien (CVE-2021-21972)

Hintergrund

CVE-2021-21972 Eine nicht authentifizierte Befehlsausführungsschwachstelle in VMware vCenter. Diese Sicherheitslücke kann eine Webshell an einen beliebigen Ort auf dem vCenter-Server hochladen und dann die Webshell ausführen.

Betroffene Versionen

vmware:esxi:7.0/6.7/6.5
vmware:vcenter_server:7.0/6.7/6.5

Fofa-Abfrage zur Reproduktion von Sicherheitslücken

Syntax: title="+ ID_VC_Welcome +"

Bildbeschreibung hier einfügen

POC

https://xxxx/ui/vropspluginui/rest/services/uploadova

Bildbeschreibung hier einfügen

Verwenden Sie das Skript https://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POC zur Batch-Verifizierung

#-*- Kodierung:utf-8 -*-
Banner = """
    888888ba dP           
    88 `8b 88           
    a88aaaa8P' .d8888b. d8888P .d8888b. dP dP 
    88 `8b. 88' `88 88 Y8ooooo. 88 88 
    88 .88 88. .88 88 88 88. .88 
    88888888P `88888P8 dP `88888P' `88888P' 
  oooooooooooooooooooooooooooooooooooooooooooooooooooo 
        @time:2021/02/24 CVE-2021-21972.py
        C0de von NebulabdSec - @batsu         
 """
drucken(Banner)

Threadpool importieren
zufällig importieren
Importanforderungen
Argparse importieren
http.client importieren
urllib3 importieren

urllib3.disable_warnings(urllib3.exceptions.UnsichereAnforderungswarnung)
http.client.HTTPConnection._http_vsn = 10
http.client.HTTPConnection._http_vsn_str = "HTTP/1.0"

TARGET_URI = "/ui/vropspluginui/rest/services/uploadova"

def get_ua():
  erste_Anzahl = zufällig.randint(55, 62)
  dritte_Zahl = zufällig.randint(0, 3200)
  vierte_Zahl = zufällig.randint(0, 140)
  os_type = [
    '(Windows NT 6.1; WOW64)', '(Windows NT 10.0; WOW64)', '(X11; Linux x86_64)',
    „(Macintosh; Intel Mac OS X 10_12_6)“
  ]
  chrome_version = 'Chrome/{}.0.{}.{}'.format(erste_Nummer, dritte_Nummer, vierte_Nummer)

  ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
          '(KHTML, wie Gecko)', Chrome-Version, 'Safari/537.36']
         )
  Rückkehr ua

def CVE_2021_21972(URL):
  Proxys = {"scoks5": "http://127.0.0.1:1081"}
  Überschriften = {
    'Benutzer-Agent': get_ua(),
    "Inhaltstyp": "Anwendung/x-www-form-urlencoded"
  }
  Ziel-URL = URL + ZIEL-URI
  versuchen:
    res = Anfragen.get(Ziel-URL,
              Header=Header,
              Zeitüberschreitung = 15,
              überprüfen=Falsch,
              Proxys=Proxys)
              # Proxys={'socks5': 'http://127.0.0.1:1081'})
    # drucken(Länge(res.text))
    wenn res.status_code == 405:
      drucken("[+] URL:{}--------CVE-2021-21972 Sicherheitslücke besteht".format(url))
      # print("[+] Befehl erfolgreiches Ergebnis: " + res.text + "\n")
      mit open("vulnerability address.txt", 'a') als fw:
        fw.write(url + '\n')
    anders:
      print("[-] " + url + " Es wurde keine Sicherheitslücke CVE-2021-21972 gefunden.\n")
  # außer Ausnahme als e:
  # drucken(e)
  außer:
    drucken("[-] " + url + " Anfrage FEHLER.\n")
def Multithreading (Dateiname, Pools = 5):
  funktioniert = []
  mit open(Dateiname, "r") als f:
    für i in f:
      func_params = [i.rstrip("\n")]
      # func_params = [i] + [cmd]
      funktioniert.anhängen((func_params, Keine))
  Pool = Threadpool.ThreadPool(Pools)
  Anforderungen = threadpool.makeRequests(CVE_2021_21972, funktioniert)
  [pool.putRequest(req) für req in reqs]
  pool.warten()

def main():
  Parser = argparse.ArgumentParser()
  parser.add_argument("-u",
            "--url",
            help="Ziel-URL; Beispiel:http://ip:port")
  parser.add_argument("-f",
            "--Datei",
            help="URL-Datei; Beispiel:url.txt")
  # parser.add_argument("-c", "--cmd", help="Auszuführende Befehle; ")
  args = parser.parse_args()
  url = args.url
  # cmd = args.cmd
  Dateipfad = args.file
  wenn URL != Keine und Dateipfad == Keine:
    CVE_2021_21972 (URL)
  elif url == Keine und Dateipfad != Keine:
    multithreading(Dateipfad, 10) # Standardmäßig 15 Threads, wenn __name__ == "__main__":
  hauptsächlich() 

Bildbeschreibung hier einfügen

EXP-Reparaturvorschläge

Upgrade von vCenter Server 7.0 auf 7.0.U1c
Upgrade von vCenter Server 6.7 auf 6.7.U3l
Upgrade von vCenter Server 6.5 auf 6.5 U3n

Dies ist das Ende dieses Artikels über die VMware vcenter-Sicherheitslücke beim unbefugten Hochladen beliebiger Dateien (CVE-2021-21972). Weitere verwandte Inhalte zur VMware vcenter-Sicherheitslücke beim Hochladen finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Installationsprozess von VMware vCenter 6.7 (grafisches Tutorial)
  • Detaillierte Erläuterung des VMware-Zugriffs auf OpenStack - Verwenden von OpenStack zum Erstellen einer virtuellen vCenter-Maschine

<<:  Einführung in Abfragebefehle für gespeicherte MySQL-Prozeduren

>>:  Vue macht Div-Höhe verschiebbar

Artikel empfehlen

Vergleich von CSS-Schatteneffekten: Schlagschatten und Box-Schatten

Drop-Shadow und Box-Shadow sind beide CSS-Eigensc...

Analysieren Sie mehrere gängige Lösungen für MySQL-Ausnahmen

Inhaltsverzeichnis Vorwort 1. Der vom Code konfig...

CSS zum Erzielen von leuchtendem Text und ein paar JS-Spezialeffekten

Umsetzungsideen: Verwenden Sie text-shadow in CSS...

Detaillierte Schritte zum Erstellen eines Vue-Scaffolding-Projekts

Vue-Gerüst -> vue.cli Erstellen Sie schnell ei...

Detaillierte Erklärung der node.js-Installation und HbuilderX-Konfiguration

Tutorial zur npm-Installation: 1. Laden Sie das N...

So konfigurieren Sie MySQL8 in Nacos

1. Erstellen Sie die MySQL-Datenbank nacos_config...

Einige Fähigkeiten, die Sie beim Erstellen von Webseiten kennen müssen

1. Z-Index ist in IE6 ungültig. In CSS wird die E...

js zum Implementieren von Details im Datei-Upload-Stil

Inhaltsverzeichnis 1. Übersicht 2. Parameter zum ...