### Web Academy PortSwigger
* Lab: [Lab: Exploiting cross-site scripting to steal cookies](https://portswigger.net/web-security/cross-site-scripting/exploiting/lab-stealing-cookies)
* Descript: This lab contains a stored XSS vulnerability in the blog comments function. A simulated victim user views all comments after they are posted. To solve the lab, exploit the vulnerability to exfiltrate the victim's session cookie, then use this cookie to impersonate the victim.
* Solved and Writeup by Me ^^!
* 
Truy cập Lab , ta được giao diện trang web như sau:

Theo mô tả, trang web chứa lỗ hổng stored-XSS trong phần comment của bài post , để giải quyết , hãy chiếm lấy session cookie của nạn nhân và sử dụng nó đăng nhập vào tài khoản của nạn nhân!
Nhấp vào một bài post ,hãy tạo thử một vài payload đơn giản:

---

Sau khi submit , load lại trang , ta xác nhận trang web chứa vuln stored-XSS :

---
Thông báo "hey!!" xuất hiện mỗi khi ta load lại trang.

Sử dụng `Burp Collaborator` để tạo một public server với một `domain` và `ip` riêng, ta có `domain` sau`oyq8yyneubtkrvhsdjiaoev2ptvqjj78.oastify.com`
Để khai thác `session cookie` tới public server trên, ta viết một đoạn payload javascript sau vào phần comment:

Giải thích sơ qua , ta sử dụng `Fetch()`( *linh hoạt , hiện đại hơn so với `XMLHttpRequest()`*) trong Javascript để gửi request `POST`, với nội dung request (body) `document.cookie` tới public server `oyq8yyneubtkrvhsdjiaoev2ptvqjj78.oastify.com` , ta sử dụng `mode:'no-cors'` mục đích không yêu cầu truy cập hoặc đọc phản hồi từ máy chủ
Như vậy , khi người dùng nhấp vào bài post có chứa đoạn script được chèn này , trình duyệt của người dùng sẽ tự động gửi request `POST` kèm `session cookie` tới `URL` được chỉ định trong script
Submit , và xem lại source web ,ta thấy script đã được chèn:

Vào lại `Burp Collaborator` , thăm dò ta thấy các request POST tới public server:

Ta thấy có request POST chứa thông tin một session cookie khác ,sử dụng burpsuite , reload lại post đã chèn script , thay thế session vừa thu được trong phần session của request


---
Forward it!

Như vậy ta đã đăng nhập thành công vào một tài khoản khác ,lab đã được giải quyết!