Shikata Ga Nai

Private? There is no such things.

CSRF where token validation depends on request methodをやってみた

Hello there, ('ω')ノ

 

一昨日は、朝から何か違和感を感じていて。

夕方になると集中力がとぎれてしまって。

体温は、37.1度。

その後、1時間程度で38度まで上昇。

あわやコロナに感染したかと思ったものの、思い当たることはなく。

昨日の夕方には平熱の36.4度を通り越して、35.5度に。

なにか体のバランスを壊しているような。

 

では、トークンの検証がリクエストメソッドに依存するCSRFを。

まずは、ログインして。

 

f:id:ThisIsOne:20210211101058p:plain

 

メールアドレスを変更して。

 

f:id:ThisIsOne:20210211101146p:plain

 

履歴からメールアドレスを送信しているリクエストをリピータへ。

 

f:id:ThisIsOne:20210211101323p:plain

 

csrfパラメータを変更して、Sendすると拒否されてしまったので。

 

f:id:ThisIsOne:20210211101407p:plain

 

リクエストメソッドをPOSTからGETに変更して。

 

f:id:ThisIsOne:20210211101512p:plain

 

SendするとCSRFトークン は、検証されないようで。

 

f:id:ThisIsOne:20210211101548p:plain

 

ならば、これを利用してPoCを。

 

f:id:ThisIsOne:20210211101649p:plain

 

いつものようにOptionsでチェックしてから、Regenerateを。

 

f:id:ThisIsOne:20210211101720p:plain

 

エクスプロイトサーバにコピーして、保存すると。

 

f:id:ThisIsOne:20210211101804p:plain

 

クリアできた。

 

f:id:ThisIsOne:20210211101854p:plain

 

また、下記のスクリプトを削除することで。

 <script>
  document.forms[0].submit();
 </script>

 

f:id:ThisIsOne:20210211102046p:plain

 

ボタンが表示されたままになるので、これをクリックしてエクスプロイトが実行され。

 

f:id:ThisIsOne:20210211101927p:plain

 

ちなみにページ上でのリクエストと、エクスプロイトのリクエストを比較すると。

 

f:id:ThisIsOne:20210211102543p:plain

 

リクエスト内容の相違が確認できて。

 

f:id:ThisIsOne:20210211102452p:plain

 

Best regards, (^^ゞ