Link to this headingESI Injections
Link to this headingHow to Detect ESI
Check for the header “Surrogate-Control: content=“ESI/1.0”, you are probably dealing with an ESI-enabled infrastructure.
However, most proxies and load balancers will remove this header from upstream before sending it down to the client. Some proxies also do not require any Surrogate-Control headers. Therefore, this is not a definitive way of identifying ESI use. Given the wide variety of feature selection in ESI implementations, no unique test can be performed to test for ESI injection. One would have to test various payloads and observe the side effects to properly identify ESI injectable endpoints. For example, ESI includes can be used to perform an SSRF to a server the attacker controls, but some implementations will require the host to be preemptively whitelisted.
Link to this headingExamples
Chrome XXS bypass:
SSRF:
Bypass the HttpOnly Cookie Flag:
XML Injection:
XML Injection2:
esi.xsl:
Header Injection: