Canary is a blazing-fast, multithreaded Go tool designed to inject OAST-powered canary tokens into URLs or raw HTTP requests.
Perfect for bug bounty hunters to detect SSRF, XSS, and other data-leaking vulnerabilities silently.
- β‘ High-speed multithreaded injection (Go powered)
- π Automatic canary token generation (timestamp, custom string, or numeric range)
- 𧬠Support for URL and raw HTTP request modes
- π οΈ Parameter targeting, prefix/suffix support, and original value preservation
- π§Ύ Logging of changed lines and flexible output options
- π Verbose and quiet modes for your workflow
Clone the repository and build the binary:
go install github.com/the5orcerer/Canary@latestcat urls.txt | canary -oa .oast.me -c timestamp -o output.txtOr with raw HTTP request input:
canary -f raw_requests.txt -r -oa .oast.me -c mytoken -a -k -l log.txt| Flag | Description |
|---|---|
-oa, --oast |
OAST domain to use (e.g. .oast.me) |
-c, --canary |
Canary mode: timestamp, custom string (e.g. mytoken), or range (e.g. 1-10) |
-o, --output |
Output file path (default: requests.dreq) |
-s, --suffix |
Add suffix to token |
-p, --prefix |
Add prefix to token |
-d, --delimiter |
Delimiter between token and OAST (e.g. - β timestamp-oast.me) |
-k, --keep |
Keep original param value and append token |
-a, --all |
Replace all matching parameters |
-t, --target |
Comma-separated list of target parameters |
-f, --file |
Read input from file |
-r, --raw |
Enable raw HTTP request mode |
-l, --log |
Log replaced lines to a file |
-v, --verbose |
Verbose mode |
-q, --quiet |
Quiet mode |
-h, --help |
Show help menu |
Inject a timestamp-based token into all parameters:
cat urls.txt | canary -oa .oast.site -c timestamp -o output.txtUse a static token with a suffix and delimiter:
cat list.txt | canary -oa .oast.live -c mycanary -s ".track" -d "-" -o traced.txtUse range-based canary tokens on only specific parameters:
canary -f data.txt -c 1-100 -t id,user -a -k -oa .oast.me -l changed.log- Injected lines go to your specified output file.
- Logs (before β after) can optionally be saved using
-l. - No input? A friendly message and exit β no stack traces here.
Found a bug or want to improve it? PRs are welcome! Help evolve this tool for the bounty hunting community.
Crafted with β€οΈ by @rootplinix