Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cakephp-attachment-crlf — CakePHP 5.4.2 - 高 - リモート - CRLF - attachment Content-Type および Content-ID の残存 | Kitploit
ツール/GitHubGitHub/abraxas/cakephp-attachment-crlf
脆弱性分析エクスプロイトウェブアプリケーション悪用セキュリティ仮想化ウェブセキュリティペネトレーションテスト
GitHubabraxas/cakephp-attachment-crlf

cakephp-attachment-crlf

CakePHP 5.4.2 - 高 - リモート - CRLF - attachment Content-Type および Content-ID の残存

リポジトリを見る
159日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Abraxas Labs - cakephp-attachment-crlf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  cakephp-attachment-crlf

解説記事: https://abraxaslabs.tech/research/cakephp-attachment-crlf

cakephp-attachment-crlf

分類: MIMEパートヘッダインジェクション 到達範囲: リモート

CakePHP 5.4.2 (887b641) - Cake Software Foundation

5.4.2 はすでにマルチパートの name= / filename= から "、\r、\n を除去している(FormDataPart::_headerParameterToString)。これが対照群である。Content-Type と Content-ID は生の連結のまま残されていた。Message::setAttachments は UploadedFile のクライアントメディアタイプを追加のフィルタなしでその type フィールドにコピーする。

ユーザーのアップロードを添付するアプリ、またはユーザーの contentId を渡すアプリは、それらのバイト列を MIME パート上に載せてしまう。その後 getBodyString() はそのパートの下に2行目のヘッダ行を表示する。

IDCVE 未割当
分類MIMEパートヘッダインジェクション
到達範囲リモート(ユーザーのアップロードまたはユーザーの contentId を添付するアプリ)
CWECWE-93
CVSSMedium: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
製品CakePHP
影響を受けるバージョン5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
認証ユーザーのアップロード(UploadedFile クライアント MIME)またはユーザーの contentId を添付するアプリケーション
ライセンスGNU Affero GPL v3.0
ラボ127.0.0.1 のみ

攻撃者ができること

アプリが Message::setAttachments / addAttachment に渡す添付メタデータに影響を与えられる者は、MIMEパートヘッダを注入できる。

権限メソッド / シンク種類ラボ実証または推測
追加の Content-Type ヘッダ行setAttachments に 'mimetype' => "text/plain\\r\\nX-Injected: …"MIMEパートヘッダの完全性ラボ実証済み。証拠行を確認
追加の Content-ID ヘッダ行'contentId' => "cid@…>\\r\\nX-Injected: …"(インラインパート)MIMEパートヘッダの完全性ラボ実証済み。証拠行を確認
アップロード MIME 経由の同一インジェクションUploadedFile::getClientMediaType() が mimetype にコピーされるMIMEパートヘッダの完全性ラボ実証済み。証拠行を確認
filename= の CRLFCR/LF を含む添付名修正済みラボで修正を実証済み。5.4.2 の除去処理は有効
このシンク経由のエンベロープ RCPT / Bcc本文内の MIMEパートヘッダ修正済みこれは SmtpTransport のペア限定除去であり、別系統
SMTP 送信ラボは getBodyString() のみを呼び出す修正済みトランスポートなし、シェルなし

同じ連結処理から推測されるが実証はしていない: マルチパート境界を含む細工された type や contentId により、受信側 MUA でメッセージが追加パートに分割される可能性がある。メールの送信は行っていない。

同じピン留めからの残存項目: window SQLi、collate SQLi、cache unserialize。

発見の経緯

マルチパート Content-Disposition の filename= インジェクションが修正されたという bakery の注記を受け、cakephp/cakephp 5.4.2 をピン留めした。_headerParameterToString がサニタイザである:

$transliterated = Text::transliterate(str_replace(['"', "\r", "\n"], '', $value));

__toString() は依然として次の処理を行います:

if ($this->type) {
    $out .= 'Content-Type: ' . $this->type . "\r\n";
}
if ($this->contentId) {
    $out .= 'Content-ID: <' . $this->contentId . ">\r\n";
}

Message::setAttachments はアップロードされたクライアントタイプをそのままコピーし、何も除去しません。その後 attachFiles / attachInlineFiles が $part->type($fileInfo['mimetype']) と $part->contentId($fileInfo['contentId']) を呼び出します。

すでに記録済みの誤った方向性:エンベロープの RCPT をこの残留物とみなすこと(余分な行は本文にある);filename= が依然としてインジェクションを引き起こすと主張すること(実際には起こらない);SMTP を送信すること;リバースシェル。すべて見せかけです。

ラボ

python3 cakephp-attachment-crlf-Abraxas-Labs.py

または

cd lab
./run.sh

対象は http://127.0.0.1:19460 のみ。PHP 8.3、ビルド時に CakePHP タグ 5.4.2 をクローン。lab_server.php は Message::setAttachments を公開。4つのケース: filename 制御、mimetype、contentId、UploadedFile のメディアタイプ。

SUCCESS cakephp-attachment-crlf how=live pin=5.4.2 sha=887b641de9f7aba06071f98f17edcbc573cbcf63 mimetype=yes contentId=yes upload=yes filename-stripped=yes CAKEPHP-ATTACHMENT-CRLF-WITNESS

修正

type、contentId、transferEncoding を _headerParameterToString と同じ " / \r / \n 除去処理に通します。除去後も改行が残っている場合はその値を拒否します。メーラーのテストでは filename= だけでなく、UploadedFile のクライアント MIME と明示的な mimetype / contentId もカバーします。

参考資料

  • github.com/cakephp/cakephp タグ 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63)
  • FormDataPart.php · Message.php
  • 近接する修正: 5.4.2 bakery の filename= 除去
  • 同じピン: cakephp-window-sqli · cakephp-collate-sqli · cakephp-cache-unserialize
  • CWE-93

ライセンス

GNU Affero GPL v3.0。LICENSE を参照してください。ループバックラボ専用です。保証はありません。

ツールをダウンロード