Skip to content

Server-Side Attacks

Five distinct vulnerability classes that share one property: they make the application server execute, fetch, render, or include something on the attacker’s behalf. Different bugs, different payloads, different detection - group them by what the application is being tricked into doing.

ClassServer is tricked into…Start here
Intermediary service abuseRouting through an unintended protocol/port (AJP, FastCGI)Intermediary
SSRFIssuing HTTP/protocol requests to attacker-chosen targetsSSRF
SSI / ESI injectionParsing attacker-supplied include directivesServer-Side Includes
SSTIEvaluating attacker-supplied template expressionsSSTI
XSLT injectionPerforming attacker-controlled XML transformationsXSLT
  1. Open port that doesn’t speak HTTP (8009, 9000, 1099, 11211) → Intermediary services
  2. Parameter that takes a URL or hostname (avatar fetcher, webhook, “test connection,” PDF-from-URL) → SSRF
  3. {{...}} evaluates as math ({{7*7}} returns 49) → SSTI
  4. <!--#... --> directives processed by the page → SSI
  5. <esi:...> tags fetched by an upstream surrogate → ESI
  6. Application transforms XML you control with a stylesheet → XSLT
  7. No idea where to startSSRF - most prevalent and highest-yield
PlaceholderMeaning
<TARGET> External target host or URL (the public-facing app)
<INTERNAL_HOST> Internal target reachable only via SSRF/proxy
<METADATA_IP> Cloud metadata endpoint (169.254.169.254 for AWS/Azure/GCP/Alibaba; varies elsewhere)
<PARAM> Vulnerable parameter name
<COLLAB> OOB callback host (Burp Collaborator, interactsh, your VPS)
<ATTACKER> Your host for HTTP/DNS exfil and OOB callbacks
<LHOST> , <LPORT> Reverse shell listener
<TOKEN> , <HASH> Captured credentials, session tokens

The bugs in this section often chain. SSRF reaches an internal service that is vulnerable to SSTI, which yields RCE. AJP exposes a Tomcat manager that accepts a war upload. SSI executes a command that triggers an outbound DNS request used as a confirmation channel. The decision flow above is a starting point - the real engagement is recognizing when one primitive sets up another.