client-reverse

Reverse client-side request signing to replay and fuzz protected APIs.

4.7k|822|Updated Mar 8, 2026
One-click install
npx skills add https://github.com/shuvonsec/claude-bug-bounty --skill client-reverse
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: client-reverse
Source: https://github.com/shuvonsec/claude-bug-bounty/tree/main/skills/client-reverse
Command: npx skills add https://github.com/shuvonsec/claude-bug-bounty --skill client-reverse

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

When a bug bounty target's request carries a sign, sig, HMAC, nonce, or anti-bot token that Burp Repeater cannot replay, this Skill guides you through recovering just enough of the client-side signer to reproduce the request outside the browser or app, so you can reach and fuzz the protected API behind it.

Core Features & Use Cases

  • Packet-First Gate: Capture the real request and prove whether replay actually fails before spending time reversing, killing false assumptions early.
  • Staged Reversal Spine: A locate → recover → runtime → validation → replay workflow that traces backward from the signature field (writer → builder → entry → source) using Chrome DevTools breakpoints and console hooks.
  • Input Classification & Replay: Classify signer inputs (timestamp, nonce, deviceId, body, secret key) to decide whether you can re-sign offline, reuse the page's own signer, or bridge through a headless browser, then fuzz for IDOR, BOLA, and business-logic bugs.
  • Use Case: A signed order API returns 401 on replay. You hook the page's sign function in DevTools, extract the hardcoded HMAC secret from the JS bundle, rebuild the signer in Python, and sweep order IDs to demonstrate an IDOR behind the signature.

Quick Start

Ask the AI to help you replay a signed request that Burp Repeater cannot replay, starting by capturing the real request and testing whether it replays unchanged.

Frequently Asked Questions about client-reverse

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I replay a signed API request that fails in Burp Repeater?

First capture the real request and replay it unchanged, since many signatures are replayable as-is. If mutation breaks it, trace backward from the sign field in Chrome DevTools using XHR breakpoints to find the writer and builder, then either reimplement the signer in Python or call the page's own sign function.

How do I find the signature generation code in minified JavaScript?

Set an XHR/fetch breakpoint on the endpoint path in DevTools Sources, trigger the action, and walk up the Call Stack to the frame that writes the header or body field. Pretty-print the bundle and use global search for the field name to locate the writer quickly.

Can I bypass anti-bot tokens like Akamai or PerimeterX for bug bounty testing?

Full SDK reversal is out of scope for a single bounty. Instead, reuse one fresh valid token within its validity window, or drive a headless browser with Selenium or Playwright to mint tokens and hand them to your Python fuzzer.

Why does my reimplemented HMAC signature not match the app's output?

The two usual causes are JSON key ordering and separator whitespace, and the concatenation order of the input fields. Log the pre-hash message string the app builds at a breakpoint and diff it against yours rather than comparing final digests.

Is reversing a request signature itself a reportable vulnerability?

No, reversing the signing algorithm alone is not a valid finding. Reportable issues include signatures that omit the endpoint or payload, missing freshness checks enabling replay, hardcoded secrets in the bundle, and the IDOR or access-control bugs you reach behind the signature.

Does this approach work for signed requests in Android apps?

Yes, the same packet-first spine applies. Drive the app through Burp or mitmproxy first, and only use jadx for static analysis or frida and objection for runtime hooking when the traffic is encrypted or unreplayable.