postMessage XSS lab

Pick an origin

Every participant runs on its own real origin — a separate hostname under pmlab.amir.baby, all served by this one server. Origin checks are genuine and a blocked message really is blocked. Open the portal first, then the attacker pages — they must be different origins for the attack to mean anything.

URLRoleNotes
https://victim.pmlab.amir.babyAcme Portalthe application under test (victim)
https://widget.pmlab.amir.babySupport Widgetlegitimate third-party chat widget
https://trusted-domain.pmlab.amir.babyTrusted Partnerlegitimate partner, scenario 2
https://attacker.trusted-domain.pmlab.amir.babyAttacker Subdomainattacker-controlled subdomain of the trusted domain
https://trusted-origin.pmlab.amir.babyTrusted Originbase host of the regex-validated domain
https://vendor.trusted-origin.pmlab.amir.babyVendorlegitimate partner, scenario 3
https://attacker.com.trusted-origin.pmlab.amir.babyAttacker (regex bypass)host that slips past the weak regex
https://attacker.pmlab.amir.babyAttackerunrelated attacker origin