Authentication/Authorization Bypass
A restricted resource is only checked against one method, switching methods skips the check entirely.
Unintended Functionality
Methods like
PUT, DELETE, or PATCH expose write/modify capability the developer never meant to leave reachable.Enumerating Allowed Methods
OPTIONS asks the server directly which methods a given endpoint accepts, the fastest way to see what’s actually on the table before trying anything blind.
TRACE (and the older TRACK, a Microsoft IIS-specific variant) echoes the request back verbatim, historically useful for Cross-Site Tracing (XST) attacks against cookies marked HttpOnly, since the reflected request discloses headers JavaScript couldn’t otherwise read.
Most modern servers disable
TRACE/TRACK by default specifically because of XST, finding it enabled is itself worth flagging as a finding even before chaining it into anything further.Bypassing a Method-Specific Restriction
If one method is blocked (401/403), try the others, this is the core of the technique and works surprisingly often against access controls bolted on after the fact rather than designed in from the start.Why this works: Java/Tomcat web.xml security-constraint misconfiguration
Why this works: Java/Tomcat web.xml security-constraint misconfiguration
A common root cause on Java-based apps: a Against a config like this, the fix is removing the
web.xml <security-constraint> block that lists a specific <http-method> (commonly GET or POST) is only enforced against that exact method, the Servlet specification treats the listed methods as the entire scope of the constraint. Any verb not explicitly named, PUT, DELETE, HEAD, even a nonstandard custom verb, falls completely outside the restriction and reaches the resource unauthenticated.<http-method> element entirely so the constraint applies to all verbs, which also means: if you see a 403 on GET, always try every other verb before assuming the resource is actually locked down.X-HTTP-Method-Override
Some frameworks let a client simulate a different verb via a header or parameter, originally meant to work around clients/proxies that can’t sendPUT/DELETE directly, but just as usable to route around a filter that only inspects the literal request-line method.
Which header name (if any) a given framework honors varies, try all three above since different stacks pick different conventions.
Combining with Header-Based Access Controls
If an application trusts a header likeX-Custom-IP-Authorization to decide access (common on internal admin panels that assume only a reverse proxy sets this header), pairing a spoofed local IP with a less-common method can bypass checks that were only written against the standard verb set.
Testing a Full Method Set
Worth cycling through the complete set systematically rather than guessing one at a time, especially against any endpoint that returned a 401/403 on the expected method.Quick Reference Tools
Hackviser: HTTP Verb Tampering
Reference used for this page.
OWASP WSTG: Test HTTP Methods
The canonical methodology reference for this test case.

