Use only the Academy Lab on 127.0.0.1:5177. Do not copy these tests to a public system without explicit written authorization.
Prove the target boundary
Create or reopen the Academy Lab project and send GET /health. Continue only when the target is 127.0.0.1 and local_only is true. The public-recon lessons require a separately authorized target and are never run against an unrelated domain.
GET http://127.0.0.1:5177/health200 with "local_only": true.
Reset the interaction ledger
POST /oast/reset and verify count zero. This prevents an old interaction from being attributed to the new request.
Compare destination policy
Send the lab callback URL to both fetch routes. The secure control blocks loopback; the insecure route records a simulated fetch.
GET /fetch-insecure?url=http%3A%2F%2F127.0.0.1%3A5177%2Foast%2Fcallback%2Fssrf-proofSecure 403, insecure 200.
Correlate the callback
GET /oast/interactions and match source, URL, timestamp, and request evidence. Treat missing correlation as inconclusive.
Document the limitation
This is an offline simulation. Real blind SSRF requires a controlled callback domain explicitly authorized for the engagement.
Prove it before moving on.
The result includes a unique local interaction and clearly states that no real outbound request occurred.
