Extract and install
Extract the ZIP, open a terminal inside wshawk-academy-lab, and install its single WebSocket dependency.
npm install
ROT HACKERSACADEMYStart learning Run secure and intentionally vulnerable controls side by side across WSHawk's web, GraphQL, browser, WebSocket, authorization, injection, OAST, chaining, binary, and defensive workflows.
Node.js 20+ or Docker · 19 verification tests · SHA-256 C88B130A2DA2…C2CB62647B
$ npm install
$ npm start
WSHawk Academy Lab running at
http://127.0.0.1:5177
LOCAL TRAINING ONLY
Do not expose this service. Ready for WSHawkRun it only on your own computer. The Node server binds to 127.0.0.1 by default and rejects arbitrary interfaces. The Docker Compose file publishes only 127.0.0.1:5177. Never deploy or tunnel it publicly.
Extract the ZIP, open a terminal inside wshawk-academy-lab, and install its single WebSocket dependency.
npm installStart the server. It must print 127.0.0.1:5177. Leave this terminal open.
npm startIn WSHawk create Academy Lab, set the target origin, then send the health request.
GET http://127.0.0.1:5177/healthdocker compose up --buildOpen http://127.0.0.1:5177/login from WSHawk’s auth recorder. Store each login before recording the next.
user_auser-a-lab-passUser · Tenant Auser_buser-b-lab-passUser · Tenant Badminadmin-lab-passAdmin · OperationsRun the secure route first. It gives you the baseline needed to interpret the intentionally vulnerable pair without status-only guessing.
GET /api/resources/resource-bGET /api/resources-insecure/resource-bOpen lesson ↗GET /api/tenants/tenant-b/reportGET /api/tenants-insecure/tenant-b/reportOpen lesson ↗PATCH /api/resources/resource-bPATCH /api/resources-insecure/resource-bOpen lesson ↗/xss/reflected-secure + /xss/dom-secure/xss/reflected-insecure + /xss/dom-insecureOpen lesson ↗GET /headers/secure + /secrets/secureGET /headers/insecure + /secrets/insecureOpen lesson ↗ws-secure fixation/impersonation controlsws-insecure client-trusted stateOpen lesson ↗Run the included test suite before a class. It checks authorization, GraphQL, injection families, browser targets, local OAST, CORS, discovery, chaining, WebSocket scanners, Origin policy, write rollback, and bounded races.
npm test
✔ secure resource blocks foreign user
✔ insecure resource exposes owner data
✔ GraphQL 200 semantics verified
✔ WebSocket room controls verified
✔ write rollback restores state
✔ local OAST correlation verified
✔ WebSocket scanner + Origin verified
✔ binary + session controls verified
✔ bounded race reproduced
tests 19 · pass 19 · fail 0Then change one variable, capture both outcomes, and explain what the evidence proves. Use a separately authorized target for public DNS, WHOIS, subdomain, port, and TLS practice.
Begin WSHawk Practitioner ↗