Ü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

Docker-Installations- und Konfigurationsschritte für das Redis-Image

Inhaltsverzeichnis Vorwort Umfeld Installieren Er...

Beispiel für reines CSS zum Ändern des Bildlaufleistenstils des Browsers

Verwenden Sie CSS, um den Stil der Bildlaufleiste...

So aktualisieren Sie Ubuntu 20.04 LTS unter Windows 10

23. April 2020: Heute können Sie mit Ubuntu 20.04...

So zeigen Sie die Ausführungszeit von SQL-Anweisungen in MySQL an

Inhaltsverzeichnis 1. Erste SQL-Vorbereitung 2. M...

Das Lazy-Loading-Attributmuster in JavaScript verstehen

Traditionell erstellen Entwickler Eigenschaften i...

Lösen Sie das Problem des Mac Docker x509-Zertifikats

Frage Kürzlich musste ich mich bei einem privaten...

Detaillierte Erläuterung der DOM-Stileinstellungen in vier Reaktionskomponenten

1. Inline-Stile Um Inline-Stile zum virtuellen DO...

Zusammenfassung häufig verwendeter Befehle für Linux-Dateioperationen

0. Neuer Betrieb: mkdir abc #Erstelle einen neuen...

So führen Sie den sudo-Befehl aus, ohne in Linux ein Passwort einzugeben

Mit dem Befehl „sudo“ kann ein vertrauenswürdiger...