WordPressのコメントフォームはCSRFが可能
WordPressのコメントフォームにはCSRF脆弱性が存在します。攻撃の流れを見てみます。
まず初めに、攻撃対象のWordPressサイトで適当にコメントします。
このコメントはPOSTリクエストを確認するためのものなので、ローカルプロキシツールなどでインターセプトしてドロップしても構いません。
コメント時に送られたPOSTリクエストを基にCSRF用のコードを作成します。
例えばBurpの場合はCSRF PoC generatorという便利な機能があるため、今回はその機能を使ってCSRF用のフォームを作成します。
上記ではコメント内容として「attack!!!」を設定し、名前とメールアドレスも適当なものを設定しています。
値の設定が完了したので、最後にsubmitしてみます。
WordPressの管理画面で確認すると、下図のようにフォームからのコメントと、Burpから送信したコメントの2つが届いています。
今回はBurpの機能を使って簡単なフォームを作成しましたが、submitボタンで送信する必要は全くないので、JavaScript等を使って被害者がアクセスしただけで犯罪予告などのコメントが送信される、といったシナリオも可能です。
WordPressのCSRFは10年以上前から存在する
上記のサイトによると、WordPressのCSRFの存在は10年以上前から知られていることのようです。
それを修正するプラグインもあります。
CSRF対策がされていない理由は分かりませんが、恐らくWordPressのコメントが基本的には管理者の承認制という点と、認証のないフォームに対するCSRFはそもそもCSRFではない、という考えが海外のQAサイトなどでチラホラと見受けられるので、そいうった考えも影響しているかもしれませんね。