### 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 ^^! * ![Ảnh chụp màn hình 2023-11-08 225107.png](https://hackmd.io/_uploads/Sk1RJLtXa.png) Truy cập Lab , ta được giao diện trang web như sau: ![Ảnh chụp màn hình 2023-11-09 011440.png](https://hackmd.io/_uploads/BJqQxIt7T.png) 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: ![Ảnh chụp màn hình 2023-11-09 012111.png](https://hackmd.io/_uploads/BkjcQ8tQa.png) --- ![Ảnh chụp màn hình 2023-11-09 012440.png](https://hackmd.io/_uploads/Sk7s7UF7T.png) Sau khi submit , load lại trang , ta xác nhận trang web chứa vuln stored-XSS : ![Ảnh chụp màn hình 2023-11-09 013332.png](https://hackmd.io/_uploads/ryNqV8KXp.png) --- Thông báo "hey!!" xuất hiện mỗi khi ta load lại trang. ![Ảnh chụp màn hình 2023-11-09 013431.png](https://hackmd.io/_uploads/HyW048KQp.png) 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: ![Ảnh chụp màn hình 2023-11-09 023224.png](https://hackmd.io/_uploads/HkgBVPK7p.png) 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: ![Ảnh chụp màn hình 2023-11-09 023317.png](https://hackmd.io/_uploads/Hkx5cwYma.png) Vào lại `Burp Collaborator` , thăm dò ta thấy các request POST tới public server: ![Ảnh chụp màn hình 2023-11-09 023000.png](https://hackmd.io/_uploads/Bylv4DFXT.png) 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 ![Ảnh chụp màn hình 2023-11-09 023524.png](https://hackmd.io/_uploads/HyZOBwt7p.png) ![Ảnh chụp màn hình 2023-11-09 023613.png](https://hackmd.io/_uploads/HysurvY7a.png) --- Forward it! ![Ảnh chụp màn hình 2023-11-09 023839.png](https://hackmd.io/_uploads/ByKf8vFX6.png) 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!