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 の高さをドラッグ可能にします

推薦する

deepin apt コマンドを使用して最新バージョンの docker をインストールする方法

ステップ1: Ubuntuソースを追加するルートに切り替える suルートソフトウェアソースファイルの...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...

JavaScript の querySelector メソッドと getElementById メソッドの違いを分析する

目次1. 概要1.1 querySelector() と querySelectorAll() の使...

クロスブラウザローカルストレージⅠ

原文: http://www.planabc.net/2008/08/05/userdata_beh...

Vueコンポーネントドキュメントを自動生成する方法を分析する

目次1. 現状2. コミュニティソリューション2.1 事業レビュー3. 技術的ソリューション3.1....

1分でVueが右クリックメニューを実装

目次レンダリングインストールコードの実装カスタムスタイル要約する効率的に要件を満たし、車輪の再発明を...

HTTPS の原則の説明

HTTPS ウェブサイトの構築コストが下がるにつれて、ほとんどのウェブサイトが HTTPS プロトコ...

CSS パフォーマンスの最適化 - will-change の使用方法の詳細な説明

will-change は、要素にどのような変更が行われるかをブラウザに伝え、ブラウザが事前に最適化...

MySQL インデックス プッシュダウンを 5 分で理解する

目次インデックス プッシュダウンとは何ですか?インデックスプッシュダウン最適化の原理インデックスプッ...

VirtualBox での CentOS 8.1 仮想マシンのインストールを最小限に抑える詳細なチュートリアル

1. 関連ツールと画像をダウンロードするダウンロードリンクバーチャルボックス: https://do...

ミニプログラムでマインドマップを描く方法

目次マインドマップとは何ですか? F6で描く方法アリペイ微信要約するマインドマップとは何ですか?マイ...

reduxの動作原理と使い方の説明

目次1. redux とは何ですか? 2. 還元の原則3. redux の使い方は? (1)redu...

Docker-compose チュートリアルのインストールとクイックスタート

目次1. Compose の紹介2. ComposeとDockerの互換性3. Dockerをインス...

Windows Server 2016 に MySQL 5.7.19 の解凍バージョンをインストールするための詳細なチュートリアル

MySQL 5.7.19 winx64 解凍版のインストールチュートリアルを収録しています。具体的な...