Solvers
AWS WAF
How to solve AWS WAF challenges with the Astrum Solver API: parameters, request and response.
WAF challenge script. Returns the token accepted by the protected endpoint.
| Field | Value |
|---|---|
| type | awswaf |
| Vendor | Amazon |
| Solution | token |
Parameters
These fields go inside the task object of a createTask request. Optional fields are only needed when the target page supplies them.
| Name | Type | Description |
|---|---|---|
| websiteURL | stringrequired | Page that serves the challenge. Must be https and resolve to a public address. |
| WafScriptUrl | stringrequired | URL of the AWS WAF challenge script loaded by the page. |
| proxyURL | stringoptional | Proxy the challenge is solved through, as http://login:password@host:port. The solution is bound to this exit IP. |
Create a task
POSThttps://solver-dev.astrum.foundation/api/createTask
Payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "awswaf",
"websiteURL": "https://target.com/login",
"WafScriptUrl": "https://d1sn3q0xj.cloudfront.net/challenge.js"
}
}Response
{"errorId": 0, "taskId": "6f1c8b32-0a5e-4a19-9a1f-3b0d54c2a1e7"}With optional fields
createTask payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "awswaf",
"websiteURL": "https://target.com/login",
"WafScriptUrl": "https://d1sn3q0xj.cloudfront.net/challenge.js",
"proxyURL": "http://login:password@host:port"
}
}Collect the solution
Poll every few seconds. Until the task closes the response carries only a status; the solution appears once it does.
POSThttps://solver-dev.astrum.foundation/api/getTaskResult
Payload
{
"clientKey": "YOUR_API_KEY",
"task": {
"taskId": "6f1c8b32-0a5e-4a19-9a1f-3b0d54c2a1e7",
"type": "awswaf"
}
}Response
{"errorId": 0, "status": "closed", "solution": {"token": "…"}}