---
# System prepended metadata

title: 'Lab: DOM XSS using web messages and a JavaScript URL'

---

### Web Academy PortSwigger
* Lab: [DOM XSS using web messages and a JavaScript URL](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source/lab-dom-xss-using-web-messages-and-a-javascript-url)
* Descript: This lab demonstrates a DOM-based redirection vulnerability that is triggered by web messaging.
*  To solve this lab, construct an HTML page on the exploit server that exploits this vulnerability and calls the print() function.
* Solved and Writeup by Me ^^!   
![Ảnh chụp màn hình 2023-12-06 192946](https://hackmd.io/_uploads/ByGM01CSp.png)

Hit Accessss, Truy cập lab , ta có giao diện như dưới:  

![Ảnh chụp màn hình 2023-12-06 193111](https://hackmd.io/_uploads/ByDV0JAHa.png)

Đọc qua mô tả đề bài , nhiệm vụ là tìm ra lổ hổng để gọi hàm `print()`. Sau khi test qua phần comment trong post , không thấy khả thi để chèn scritp.
Xem qua source trang , ta thấy đoạn script sau:  

![Ảnh chụp màn hình 2023-12-06 193201](https://hackmd.io/_uploads/Syhq0kCST.png)

Phân tích qua đoạn script , đoạn script trên thêm một `event` khi xảy ra việc nhận `message` , sẽ kích hoạt `function()` với tham số là tin nhắn `e` , sau đó kiểm tra nội dung của tin nhắn để xác định có chứa `http:` hay `https:` . Nếu điều kiện đúng sẽ sử dụng `location.href` chuyển hướng trang web!

Tiến hành xây dựng iframe để gửi message đến trang web trên: 

![Ảnh chụp màn hình 2023-12-06 194646](https://hackmd.io/_uploads/Sy_CJeCBa.png)

Ta sử dụng iframe để nhúng trang web mục tiêu , sử dụng `postMessage` để gửi thông điệp (message) qua `contentWindow` (refer to this iframe) , vì có điêù kiện kiểm tra `https:` nhưng không xét đến vị trí trong tin nhắn , ta sử dụng payload sau :  ` javascript:print()//https:`

Hit deliver exploit to victim ... 
End.....
![Ảnh chụp màn hình 2023-12-06 194709](https://hackmd.io/_uploads/ByNg-gABT.png)

Lab đã được giải quyết ,view exploit,  cửa sổ in đã xuất hiện!

![Ảnh chụp màn hình 2023-12-06 194748](https://hackmd.io/_uploads/rkvmbxCH6.png)

